1_圖片相似性度量指標(20181218)


計算兩張圖片的相似性,可以用於設計深度學習中的 Autoencoder 和 GAN 網絡的損失函數的設計

1. 圖片相似性介紹

https://www.jianshu.com/p/43d548ad6b5d
https://blog.csdn.net/zchang81/article/details/73275155

SSIM(structural similarity)結構相似性,是衡量兩幅圖相似性的指標
https://www.jianshu.com/p/43d548ad6b5d
https://blog.csdn.net/bigbigtreewhu/article/details/23782607
https://blog.csdn.net/chaipp0607/article/details/70158835
https://blog.csdn.net/zchang81/article/details/73275155

2.常用的圖片相似性算法

2.1 均方誤差MSE

2.1 直方圖方法

方法描述:

有兩幅圖像patch(當然也可是整幅圖像),分別計算兩幅圖像的直方圖,並將直方圖進行歸一化,然後按照某種距離度量的標準進行相似度的測量。
圖像直方圖:圖像的像素值範圍0~255,直方圖就是統計一幅圖片中每一個像素值對對應的個數,然後繪製成直方圖。

優點:

直方圖能夠很好的歸一化,比如256個bin條,那麼即使是不同分辨率的圖像都可以直接通過其直方圖來計算相似度,計算量適中。比較適合描述難以自動分割的圖像。

缺點:

直方圖反應的是圖像灰度值的概率分佈,並沒有圖像的空間位置信息在裏面,因此,常常出現誤判;從信息論來講,通過直方圖轉換,信息丟失量較大,因此單一的通過直方圖進行匹配顯得有點力不從心。


兩幅圖片只要像素值分佈相似,直方圖匹配就會認爲這兩幅圖很相似,但這兩幅圖也有可能是完全不相似的,因爲直方圖並不考慮像素的空間位置分佈

2.2 圖像模板匹配

一般而言,源圖像與模板圖像patch尺寸一樣的話,可以直接使用上面介紹的圖像相似度測量的方法;如果源圖像與模板圖像尺寸不一樣,通常需要進行滑動匹配窗口,掃面個整幅圖像獲得最好的匹配patch。

在OpenCV中對應的函數爲:matchTemplate():函數功能是在輸入圖像中滑動窗口尋找各個位置與模板圖像patch的相似度。

2.3 PSNR(Peak Signal to Noise Ratio)峯值信噪比

PSNR(Peak Signal to Noise Ratio),一種全參考的圖像質量評價指標。

簡介:https://en.wikipedia.org/wiki/Peak_signal-to-noise_ratio

PSNR是最普遍和使用最爲廣泛的一種圖像客觀評價指標,然而它是基於對應像素點間的誤差,即基於誤差敏感的圖像質量評價。由於並未考慮到人眼的視覺特性(人眼對空間頻率較低的對比差異敏感度較高,人眼對亮度對比差異的敏感度較色度高,人眼對一個區域的感知結果會受到其周圍鄰近區域的影響等),因而經常出現評價結果與人的主觀感覺不一致的情況。

4、SSIM(structural similarity)結構相似性

SSIM是一種常用的圖像質量評價方法。最初由Zhou Wang提出,原論文地址:http://www.cns.nyu.edu/pub/eero/wang03-reprint.pdf

SSIM結構相似度,理論基礎:人眼視覺系統會高度自適應地提取場景中的結構信息。通過比較圖像結構信息的改變考慮圖像的失真,從而得到客觀的質量評價。

作者:bigbigtree911
來源:CSDN
原文:https://blog.csdn.net/bigbigtreewhu/article/details/23782607
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

也是一種全參考的圖像質量評價指標,它分別從亮度、對比度、結構三方面度量圖像相似性。

SSIM取值範圍[0,1],值越大,表示圖像失真越小.

在實際應用中,可以利用滑動窗將圖像分塊,令分塊總數爲N,考慮到窗口形狀對分塊的影響,採用高斯加權計算每一窗口的均值、方差以及協方差,然後計算對應塊的結構相似度SSIM,最後將平均值作爲兩圖像的結構相似性度量,即平均結構相似性MSSIM:

5、感知哈希算法
(perceptual hash algorithm)

http://blog.csdn.net/fengbingchun/article/details/42153261

感知哈希算法(perceptual hash algorithm),它的作用是對每張圖像生成一個“指紋”(fingerprint)字符串,然後比較不同圖像的指紋。結果越接近,就說明圖像越相似。

實現步驟:

縮小尺寸:將圖像縮小到8*8的尺寸,總共64個像素。這一步的作用是去除圖像的細節,只保留結構/明暗等基本信息,摒棄不同尺寸/比例帶來的圖像差異;
簡化色彩:將縮小後的圖像,轉爲64級灰度,即所有像素點總共只有64種顏色;
計算平均值:計算所有64個像素的灰度平均值;
比較像素的灰度:將每個像素的灰度,與平均值進行比較,大於或等於平均值記爲1,小於平均值記爲0;
計算哈希值:將上一步的比較結果,組合在一起,就構成了一個64位的整數,這就是這張圖像的指紋。組合的次序並不重要,只要保證所有圖像都採用同樣次序就行了;
得到指紋以後,就可以對比不同的圖像,看看64位中有多少位是不一樣的。在理論上,這等同於”漢明距離”(Hamming distance,在信息論中,兩個等長字符串之間的漢明距離是兩個字符串對應位置的不同字符的個數)。如果不相同的數據位數不超過5,就說明兩張圖像很相似;如果大於10,就說明這是兩張不同的圖像。
以上內容摘自:http://www.ruanyifeng.com/blog/2011/07/principle_of_similar_image_search.html

版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章