使用Python判断俩张图像相同或以某种方式相似
使用Python判斷倆張圖像相同或以某種方式相似
- 1. 均方誤差(MSE)
- 2. 結構相似性指數(SSIM)
- 3. 效果圖
- 4. 總結
- 參考
比較圖像有倆種方案:
- 使用圖像哈希/感知哈希/差分哈希比較圖像 ,差分哈希能實現相似的圖像具有相似的哈希值。
- 均方誤差(MSE)或結構相似性指數(SSIM)比較圖像;
1. 均方誤差(MSE)
Mean Squared Error (MSE)
均方誤差聽起來很抽象,公式如下:
其實就是倆張圖片的全部像素,每一對像素值的差值的平方和,再求平均值。
MSE的值越小,表示倆張圖像越相像。
注意:
1)均方誤差要求倆張圖片必須具有相同的大小(M * N);
2)像素強度之間的較大距離并不一定意味著圖像的內容有很大不同。
3)MSE的值為0表示完全相似。大于1的值表示相似度較小,并且隨著像素強度之間的平均差增加而增加。
2. 結構相似性指數(SSIM)
Structural Similarity Index (SSIM).
SSIM比MSE方法更復雜,要點是SSIM試圖對圖像的結構信息中感知到的變化建模,而MSE實際上是在估算感知到的錯誤。
兩者之間有細微的差別,但結果卻是驚人的。
此外,公式2中的公式用于比較兩個小子樣本,而不是比較MSE中的整個圖像。這樣做會導致一種更健壯的方法,該方法能夠解決圖像結構的變化,而不僅僅是考慮到感知到的變化。
等式2的參數包括每個圖像中N x N窗口的(x,y)位置,x和y方向上像素強度的平均值,x和y方向上強度的方差以及協方差。
與MSE不同,SSIM值可以在-1和1之間變化,其中1表示完全相似。
3. 效果圖
原始圖與原始圖比較:
原始圖像與其自身相同,MSE的值為0.0,SSIM的值為1.0。
請記住,隨著MSE的增加,圖像的相似度就會降低,而SSIM的值越小,相似度就越低。
原始圖像與對比圖比較:
調整對比度肯定會“損壞”圖像的表示。
MSE 越接近0,越像;[0,1]
SSIM越接近1,越像;[-1,1]
4. 總結
這篇博客展示了如何使用Python比較兩個圖像。均方誤差(MSE)和結構相似性指數(SSIM)函數都可以進行比較。
盡管MSE的計算速度要快得多,但它的主要缺點是(1)全局應用,(2)僅估計圖像的感知錯誤。另一方面,SSIM雖然速度較慢,但??可以通過比較圖像的局部區域而不是全局圖像來感知圖像的結構信息的變化。
應該使用哪種方法得視實際情況而定,**一般來說,SSIM會帶來更好的結果,但會降低性能。**但是準確性的提高是值得的。
參考
- https://www.pyimagesearch.com/2014/09/15/python-compare-two-images/
總結
以上是生活随笔為你收集整理的使用Python判断俩张图像相同或以某种方式相似的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 拉格朗日插值算法
- 下一篇: 使用Protobuf文件一键生成Java