作者:可以吸的果冻Ci | 来源:互联网 | 2024-11-13 11:04
本文介绍了几种常用的图像相似度对比方法,包括直方图方法、图像模板匹配、PSNR峰值信噪比、SSIM结构相似性和感知哈希算法。每种方法都有其优缺点,适用于不同的应用场景。
1、直方图方法
方法描述:对于两幅图像(可以是图像块或整幅图像),分别计算它们的直方图,并将直方图进行归一化处理。然后,根据某种距离度量标准(如欧氏距离、余弦相似度等)来测量两幅图像的相似度。
方法思想:基于向量相似度来度量图像相似度。
优点:直方图能够很好地归一化,即使图像分辨率不同,也可以通过直方图来计算相似度,计算量适中。特别适合描述难以自动分割的图像。
缺点:直方图仅反映图像灰度值的概率分布,缺乏空间位置信息,容易导致误判。从信息论的角度来看,通过直方图转换会丢失大量信息,因此单独使用直方图进行匹配效果有限。
2、图像模板匹配
当源图像与模板图像尺寸相同时,可以直接使用上述图像相似度测量方法。如果尺寸不同,则需要通过滑动窗口在源图像上扫描,以找到最佳匹配的图像块。
在OpenCV中,对应的函数为matchTemplate(),该函数通过在输入图像中滑动窗口来寻找各个位置与模板图像的相似度。
3、PSNR峰值信噪比
PSNR(Peak Signal to Noise Ratio)是一种全参考的图像质量评价指标,用于评估图像的质量。
简要介绍:https://en.wikipedia.org/wiki/Peak_signal-to-noise_ratio
PSNR是最常用和最广泛的图像客观评价指标之一,但它是基于对应像素点间的误差,即基于误差敏感的图像质量评价。由于未考虑人眼的视觉特性(如对低频对比差异的敏感度较高、对亮度对比差异的敏感度高于色度、受周围区域影响等),因此有时评价结果与人的主观感受不一致。
4、SSIM(structural similarity)结构相似性
SSIM也是一种全参考的图像质量评价指标,它从亮度、对比度和结构三个方面度量图像相似性。
SSIM的取值范围为[0,1],值越大表示图像失真越小。
在实际应用中,可以通过滑动窗口将图像分块,总分块数为N。考虑到窗口形状对分块的影响,采用高斯加权计算每个窗口的均值、方差和协方差,然后计算每个块的结构相似度SSIM,最后取所有块的平均值作为两幅图像的结构相似性度量,即平均结构相似性MSSIM。
5、感知哈希算法
感知哈希算法(perceptual hash algorithm)用于生成每张图像的“指纹”字符串,通过比较不同图像的指纹来判断相似度。结果越接近,图像越相似。
实现步骤如下:
缩小尺寸:将图像缩小到8x8的尺寸,共64个像素。这一步去除图像细节,保留基本结构和明暗信息,消除不同尺寸/比例带来的差异。
简化色彩:将缩小后的图像转换为64级灰度,即所有像素点共有64种颜色。
计算平均值:计算所有64个像素的灰度平均值。
比较像素灰度:将每个像素的灰度与平均值进行比较,大于或等于平均值记为1,小于平均值记为0。
计算哈希值:将比较结果组合成一个64位的整数,作为图像的指纹。组合顺序不重要,只需确保所有图像采用相同的顺序。
得到指纹后,可以对比不同图像,统计64位中不同的位数。理论上,这等同于汉明距离(Hamming distance)。如果不同位数不超过5,说明图像非常相似;如果超过10,说明图像不同。