说明:
最近工作中用到了图片对比,趁着这个机会,也了解了下常见的一些图像对比算法,简单做下整理。
常见的图片对比算法有:
直方图算法、灰度图算法、哈希算法、MD5、余弦相似度、欧氏距离。
下面是对每种算法的一个简要说明,旨在提供一个易于理解的概览,适合新手入门:
-
直方图算法: 直方图是表示图像中像素强度分布的图形方法。在图像对比中,通过比较两张图像的色彩(或灰度)直方图,可以评估它们在颜色(或亮度)分布上的相似度。这种方法简单快速,但可能忽略空间信息,对图像旋转、缩放敏感。
-
灰度图算法: 这通常是指将彩色图像转换为灰度图像的过程,作为后续处理的基础。灰度图只包含亮度信息,去除了色彩信息,简化了图像处理的复杂度。在对比时,可以通过比较灰度图像的像素值来评估相似性。
-
哈希算法: 哈希算法将图像转换为短的、固定长度的指纹(哈希值),用于快速比较。常见的有均值哈希(Average Hash),差值哈希(Difference Hash),感知哈希(Perceptual Hash)等。这些算法能够高效检测图像是否被修改或判断图像之间的相似度,但可能会有误报和漏报的情况。
-
MD5: MD5严格来说是一种非图像专用的哈希函数,用于生成任意数据的128位指纹。尽管MD5有时也被用于图像完整性校验,但它不适用于图像相似度比较,因为它对微小变化非常敏感,且没有考虑到视觉上的相似性。
-
余弦相似度: 该方法主要用于向量空间中度量两个非零向量方向的相似度。在图像处理中,将图像表示为特征向量后,通过计算它们的余弦相似度来评估相似性。这种方法关注的是方向而非大小,适用于比较图像内容的相对构成。
-
欧氏距离: 欧氏距离是最常见的距离度量方法之一,用于计算两点间的真实距离。在图像处理中,可以将图像的像素值或特征向量看作多维空间中的点,通过计算两点间的欧氏距离来衡量它们的差异。距离越小,图像越相似。但这种方法对尺度和旋转敏感。
每种算法都有其适用场景和局限性,实际应用中可能需要根据具体需求选择合适的算法或结合多种方法以达到最佳效果。下面是各个算法的详细介绍
一、 直方图算法
什么是直方图?
直方图又称为质量分布图,是统计报告图的一种,也是反应资料变化情况的工具,是由英国数学家卡尔。皮尔逊引入。
直方图分为正常、异常
1)正常性:代表过程处于稳定状态
2)异常:孤岛型、折齿型、偏态型、平顶型、陡壁型、双峰型
扫盲相关解释:
单通道直方图:就是把图片颜色保留为一种颜色,其他颜色去掉
通道,是指存储图像颜色信息的独立原色平面。可以把通道看做是某种颜色的集合,比如红色通道,他记录了图像中不同位置的红色深度(即红色的灰度),除了红色以外,这个通道中没有记录其他颜色的信息。
巨大多数可见光可以通过将红、绿、蓝三原色按照不同的比例和强度混合来表示。原色的灰度分别由一个颜色通道记录,最后合成各种颜色。
通道有很多:RGB、红、绿、蓝、明度、颜色。
相关解释:https://www.sohu.com/a/538172620_121219579
直方图算法
按照某种距离度量的标准对两幅图像的直方图进行相似度的测量
优点:计算量比较小
缺点:直方图反映的是图像灰度值得概率分布,并没有图像的空间位置信息在里面,因此,会出现误判;比如纹理结构相同,但明暗不同的图像,应该相似度很高,但实际结果是相似度很低,而纹理结构不同的,但敏感相近的图像,相似度却很高
说明: