原文链接:图片结构相似性算法:SSIM
微信公众号:机器学习养成记 搜索添加微信公众号:chenchenwings
之前介绍了通过Hash进行图片相似度识别的一系列算法,本次接着来介绍另一种非常常用的衡量两幅图片相似度的指标——SSIM。
SSIM算法
SSIM(structural similarity)是一种用来衡量图片相似度的指标,也可用来判断图片压缩后的质量。
基本原理:
SSIM由亮度对比、对比度对比、结构对比三部分组成。
其中有几个需要注意的点:
C1、C2、C3为常数,避免分母接近于0时造成的不稳定性。
SSIM函数S具有对称性、有界性(不超过1)和最大值唯一性(当且仅当x=y时,S=1,表示两幅图一样)。
上述S函数为C3=C2/2的简化形式。
(更多SSIM介绍可自行搜索论文《Image Quality Assessment: From Error Visibility to Structural Similarity》)
Python实现
代码流程:
STEP 1:修改尺寸,灰度化。SSIM计算时需要保证图片大小相同,并且根据上述算法原理得知,要基于灰度进行计算,因此对图片进行灰度化处理。
STEP 2:加窗。局部求SSIM指数的效果要好于全局,用标准差为1.5的高斯加权函数作为加权窗口,每一步基于窗口内像素进行计算,得到由局部SSIM指数构成的SSIM指数映射矩阵。
STEP 3:计算。用平均SSIM指数作为最终结果。
完整代码:
借鉴网上代码并用以下两张图片为例:
(image1)
(image2)
结果为:
推荐文章
扫描二维码,关注我们。
如需转载,请在开篇显著位置注明作者和出处,并在文末放置机器学习养成记二维码和添加原文链接。
快来关注我们吧!