1. 程式人生 > >1_圖片相似性度量指標(20181218)

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

圖片相似性度量演算法(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

版權宣告:本文為博主原創文章,轉載請附上博文連結!