图片结构相似性算法:SSIM

原文链接:图片结构相似性算法: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)


结果为:

推荐文章

·Bagging算法(R语言)

·静态爬虫与地址经纬度转换(python)

·特征工程(一):前向逐步回归(R语言)

·聚类(三):KNN算法(R语言)

·小案例(六):预测小偷行为(python)

·ggplot2:正负区分条形图及美化

扫描二维码,关注我们。

如需转载,请在开篇显著位置注明作者和出处,并在文末放置机器学习养成记二维码和添加原文链接。

快来关注我们吧!

推荐阅读更多精彩内容