OpenCV圖像相似度對(duì)比辦法

最近公司開(kāi)發(fā)涉及到圖像相似度,記錄一下相關(guān)的算法,后期還會(huì)持續(xù)更新......

直方圖

方法描述:有兩幅圖像patch(當(dāng)然也可是整幅圖像),分別計(jì)算兩幅圖像的直方圖饲齐,并將直方圖進(jìn)行歸一化,然后按照某種距離度量的標(biāo)準(zhǔn)進(jìn)行相似度的測(cè)量咧最。
方法的思想:基于簡(jiǎn)單的向量相似度來(lái)對(duì)圖像相似度進(jìn)行度量捂人。
優(yōu)點(diǎn):直方圖能夠很好的歸一化,比如256個(gè)bin條矢沿,那么即使是不同分辨率的圖像都可以直接通過(guò)其直方圖來(lái)計(jì)算相似度滥搭,計(jì)算量適中。比較適合描述難以自動(dòng)分割的圖像捣鲸。
缺點(diǎn):直方圖反應(yīng)的是圖像灰度值得概率分布瑟匆,并沒(méi)有圖像的空間位置信息在里面,因此栽惶,常常出現(xiàn)誤判愁溜;從信息論來(lái)講,通過(guò)直方圖轉(zhuǎn)換外厂,信息丟失量較大冕象,因此單一的通過(guò)直方圖進(jìn)行匹配顯得有點(diǎn)力不從心。

圖像模板匹配

(包括多種算法汁蝶,例如平均絕對(duì)差算法(MAD)渐扮、絕對(duì)誤差和算法(SAD)、誤差平方和算法(SSD)、平均誤差平方和算法(MSD)墓律、歸一化積相關(guān)算法(NCC)意荤、序貫相似性檢測(cè)算法(SSDA)、hadamard變換算法(SATD)只锻,具體可以參考該blog:https://blog.csdn.net/KYJL888/article/details/81480494
一般而言,源圖像與模板圖像patch尺寸一樣的話紫谷,可以直接使用上面介紹的圖像相似度測(cè)量的方法齐饮;如果源圖像與模板圖像尺寸不一樣,通常需要進(jìn)行滑動(dòng)匹配窗口(從左到右)笤昨,掃面?zhèn)€整幅圖像獲得最好的匹配patch祖驱。
在OpenCV中對(duì)應(yīng)的函數(shù)為:matchTemplate():函數(shù)功能是在輸入圖像中滑動(dòng)窗口尋找各個(gè)位置與模板圖像patch的相似度。

PSNR峰值信噪比

PSNR(Peak Signal to Noise Ratio)瞒窒,一種全參考的圖像質(zhì)量評(píng)價(jià)指標(biāo)捺僻。
簡(jiǎn)介:https://en.wikipedia.org/wiki/Peak_signal-to-noise_ratio
PSNR是最普遍和使用最為廣泛的一種圖像客觀評(píng)價(jià)指標(biāo),然而它是基于對(duì)應(yīng)像素點(diǎn)間的誤差崇裁,即基于誤差敏感的圖像質(zhì)量評(píng)價(jià)匕坯。由于并未考慮到人眼的視覺(jué)特性(人眼對(duì)空間頻率較低的對(duì)比差異敏感度較高,人眼對(duì)亮度對(duì)比差異的敏感度較色度高拔稳,人眼對(duì)一個(gè)區(qū)域的感知結(jié)果會(huì)受到其周圍鄰近區(qū)域的影響等)葛峻,因而經(jīng)常出現(xiàn)評(píng)價(jià)結(jié)果與人的主觀感覺(jué)不一致的情況。PSNR算法簡(jiǎn)單巴比,檢查的速度也很快术奖。但是其呈現(xiàn)的差異值有時(shí)候和人的主觀感受不成比例。

image.png

image.png

SSIM結(jié)構(gòu)相似性

也是一種全參考的圖像質(zhì)量評(píng)價(jià)指標(biāo)轻绞,它分別從亮度采记、對(duì)比度、結(jié)構(gòu)三方面度量圖像相似性政勃。
SSIM取值范圍[0,1]唧龄,值越大,表示圖像失真越小.
在實(shí)際應(yīng)用中稼病,可以利用滑動(dòng)窗將圖像分塊选侨,令分塊總數(shù)為N,考慮到窗口形狀對(duì)分塊的影響然走,采用高斯加權(quán)計(jì)算每一窗口的均值援制、方差以及協(xié)方差,然后計(jì)算對(duì)應(yīng)塊的結(jié)構(gòu)相似度SSIM芍瑞,最后將平均值作為兩圖像的結(jié)構(gòu)相似性度量晨仑,即平均結(jié)構(gòu)相似性MSSIM


image.png

image.png

分別為x,y的均值,
image.png

分別為x,y的方差以及協(xié)方差。c1與c2用來(lái)維持穩(wěn)定的常數(shù)洪己。
感知哈希算法

具體可見(jiàn)新更新的感知哈希算法(http://www.reibang.com/p/ad7131f7999b
(perceptual hash algorithm)
http://blog.csdn.net/fengbingchun/article/details/42153261
感知哈希算法(perceptual hash algorithm)妥凳,它的作用是對(duì)每張圖像生成一個(gè)“指紋”(fingerprint)字符串,然后比較不同圖像的指紋答捕。結(jié)果越接近逝钥,就說(shuō)明圖像越相似。
實(shí)現(xiàn)步驟:

  1. 縮小尺寸:將圖像縮小到8*8的尺寸拱镐,總共64個(gè)像素艘款。這一步的作用是去除圖像的細(xì)節(jié),只保留結(jié)構(gòu)/明暗等基本信息沃琅,摒棄不同尺寸/比例帶來(lái)的圖像差異
  2. 簡(jiǎn)化色彩:將縮小后的圖像哗咆,轉(zhuǎn)為64級(jí)灰度,即所有像素點(diǎn)總共只有64種顏色益眉;
  3. 計(jì)算平均值:計(jì)算所有64個(gè)像素的灰度平均值晌柬;
  4. 比較像素的灰度:將每個(gè)像素的灰度,與平均值進(jìn)行比較郭脂,大于或等于平均值記為1年碘,小于平均值記為0;
  5. 計(jì)算哈希值:將上一步的比較結(jié)果朱庆,組合在一起盛泡,就構(gòu)成了一個(gè)64位的整數(shù),這就是這張圖像的指紋娱颊。組合的次序并不重要傲诵,只要保證所有圖像都采用同樣次序就行了;
  6. 得到指紋以后箱硕,就可以對(duì)比不同的圖像拴竹,看看64位中有多少位是不一樣的。在理論上剧罩,這等同于”漢明距離”(Hamming distance,在信息論中栓拜,兩個(gè)等長(zhǎng)字符串之間的漢明距離是兩個(gè)字符串對(duì)應(yīng)位置的不同字符的個(gè)數(shù))。如果不相同的數(shù)據(jù)位數(shù)不超過(guò)5惠昔,就說(shuō)明兩張圖像很相似幕与;如果大于10,就說(shuō)明這是兩張不同的圖像镇防。
尺度不變特征轉(zhuǎn)換(Scale-invariant feature transform或SIFT)算法

SIFT算子是把圖像中檢測(cè)到的特征點(diǎn)用一個(gè)128維的特征向量進(jìn)行描述啦鸣,因此一幅圖像經(jīng)過(guò)SIFT算法后表示為一個(gè)128維的特征向量集,該特征向量集具有對(duì)圖像縮放来氧,平移诫给,旋轉(zhuǎn)不變的特征香拉,對(duì)于光照、仿射和投影變換也有一定的不變中狂。
SIFT算法的流程分別為:
i. 尺度空間極點(diǎn)檢測(cè)凫碌;
ii. 關(guān)鍵點(diǎn)精確定位;
iii. 關(guān)鍵點(diǎn)的方向確定胃榕;
iv. 特征向量的生成盛险。
具體可以看看該博客:
https://blog.csdn.net/lhanchao/article/details/52345845

*哈希算法包括均值哈希、感知哈希和差值哈希勋又,OpenCV均提供算法枉层,支持多種語(yǔ)言,另外還有一個(gè)javaCV功能也是很強(qiáng)大赐写。
以上內(nèi)容參考自:阮一峰
http://www.ruanyifeng.com/blog/2011/07/principle_of_similar_image_search.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市膜赃,隨后出現(xiàn)的幾起案子挺邀,更是在濱河造成了極大的恐慌,老刑警劉巖跳座,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件端铛,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡疲眷,警方通過(guò)查閱死者的電腦和手機(jī)禾蚕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)狂丝,“玉大人换淆,你說(shuō)我怎么就攤上這事〖秆眨” “怎么了倍试?”我有些...
    開(kāi)封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蛋哭。 經(jīng)常有香客問(wèn)我县习,道長(zhǎng),這世上最難降的妖魔是什么谆趾? 我笑而不...
    開(kāi)封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任躁愿,我火速辦了婚禮,結(jié)果婚禮上沪蓬,老公的妹妹穿的比我還像新娘彤钟。我一直安慰自己,他們只是感情好怜跑,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布样勃。 她就那樣靜靜地躺著吠勘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪峡眶。 梳的紋絲不亂的頭發(fā)上剧防,一...
    開(kāi)封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音辫樱,去河邊找鬼峭拘。 笑死,一個(gè)胖子當(dāng)著我的面吹牛狮暑,可吹牛的內(nèi)容都是我干的鸡挠。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼搬男,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼拣展!你這毒婦竟也來(lái)了缔逛?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤褐奴,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后敦冬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辅搬,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡脖旱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了萌庆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡踊兜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出捏境,到底是詐尸還是另有隱情于游,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布垫言,位于F島的核電站贰剥,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏筷频。R本人自食惡果不足惜蚌成,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一前痘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧担忧,春花似錦芹缔、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至惩猫,卻和暖如春芝硬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背轧房。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工拌阴, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人奶镶。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓皮官,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親实辑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容