[點晴永久免費OA]利用js實現(xiàn)圖片相似度算法
一、平均哈希算法第一步: 縮小尺寸為8×8,以去除圖片的細節(jié),只保留結(jié)構(gòu)、明暗等基本信息,摒棄不同尺寸、比例帶來的圖片差異。 第二步: 簡化色彩。將縮小后的圖片轉(zhuǎn)為灰度圖像 (取每個像素rgb三色的平均值,[228, 233, 253, 255]-> [238, 238, 238, 255] )。 第三步: 計算平均值。計算所有像素的灰度平均值。(根據(jù)每個像素平均后的值, 計算整張圖片的平均顏色值) 第四步: 比較像素的灰度。將64個像素的灰度,與平均值進行比較。大于或等于平均值,記為1;小于平均值,記為 0。 第五步: 計算哈希值。將上一步的比較結(jié)果,組合在一起,就構(gòu)成了一個64位的整數(shù),這就是這張圖片的指紋。 第六步: 計算指紋的相似度,得出兩張圖片是否相似 。 二、顏色分布法借用一篇文章的解釋: 1、 每張圖片都可以生成顏色分布的直方圖、如果兩張圖的直方圖很接近,就可以認為他們相似 2、 任何一種顏色都是由紅綠藍三原色組成的、我們平時用的每種原色有256個色值,整個顏色空間有1600萬種顏色(256的三次方) 3、 如果用1600萬種顏色去比較直方圖、計算量太大了、因此需要采用簡化方法,可以將0~256分城4個區(qū)、 0-63為0區(qū),64-127為1區(qū),128-191為2區(qū),192-256為3區(qū); 也就以為這簡化后的圖片總共會有64種顏色(4的3次方)、 4、統(tǒng)計64種顏色組合包含的像素數(shù)量 5、我們這里想展示每一步操作后的圖片變化,取 0,1,2,3的話整張圖片都是黑色、所以 0-63取的是32,64-127 取 96,128-191取 160, 192-256取 224; 6、因為顏色的組合都是固定的,所以把表格中的最后一欄(像素數(shù)量)提出來,組成一個64維向量, 便是這張圖片的 “指紋”, 尋找相似的圖片就是尋找相似的“指紋”
三、內(nèi)容特征法”內(nèi)容特征法“是指把圖片轉(zhuǎn)化為灰度圖后再轉(zhuǎn)化為”二值圖“,然后根據(jù)像素的取值(黑或白)形成指紋后進行比對的方法。這種算法的核心是找到一個“閾值”去生成二值圖。 1、首先,將原圖轉(zhuǎn)化成一張灰度圖片 、(可以壓縮可不壓縮、 最好是壓縮成固定大?。嚎梢韵嗨茍D片因為圖片大小不一樣帶來的差異, 減少一定的計算,減小最終指紋的長度) 2、確定一個閾值,將灰度圖片轉(zhuǎn)化為黑白圖片 具體代碼實現(xiàn)請查看原文 該文章在 2023/8/28 9:35:58 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |