Python计算两图相似性-SSIM(结构相似度度量)

发布时间 2023-12-04 17:04:15作者: 莲(LIT)
1、简介
SSIM是一种全参考的图像质量评价指标,分别从亮度、对比度、结构三个方面度量图像相似性。
SSIM取值范围[0, 1],值越大,表示图像失真越小。
在实际应用中,可以利用滑动窗将图像分块,令分块总数为N。
考虑到窗口形状对分块的影响,采用高斯加权计算每一窗口的均值、方差以及协方差,
然后计算对应块的结构相似度SSIM,最后将平均值作为两图像的结构相似性度量,即平均结构相似性SSIM。
 
2、代码示例

import imageio.v2 as imageio
import numpy as np
from skimage.metrics import structural_similarity as SSIM
# from skimage.metrics import peak_signal_noise_ratio as PSNR

# 读取图片
img_cp1 = imageio.imread('WD1.png')
img_cp2 = imageio.imread('WD2.png')
img_cp2 = np.resize(img_cp2, (img_cp1.shape[0], img_cp1.shape[1], img_cp1.shape[2]))
print(img_cp1.shape)
print(img_cp2.shape)
# 将通道纬度告诉channel_axis
ssim = SSIM(img_cp1, img_cp2, multichannel=True, channel_axis=2)
print(ssim)