如何判断两张图片的相似度?
有哪些方式方法?
网友回复
暴力判断
比较两个图片是否相等有很多方法,最直观的,也最容易想到的算法就是遍历两个图片的每一个像素,最终求差来得到两个图片是否相等。 这种方式的优点是速度很快,比较精度特别高,但是如果两个图片稍微有一点不同,哪怕只是一个像素的差距,都会返回False。 因此,该算法的适用性并不广泛,除非你的需求就是要判断两张图片严格相等,但是多数情况下,我们需求都是比较两张图片是否相似。所以,接下来,我们来看看市面上主流的图像相似度的判别算法。图像相似的判别算法
图像相似也有很多判别法,我没有去尝试每一种方法,但是基本上所有的方法都了解了一遍,在这里总结一下主流的算法,同时也是巩固一下。直方图比较法
直方图比较法是一个比较基础,也比较简单快捷的一种办法,目前我就是使用这个方法作为项目的主力相似性判别法。 直方图比较的原理是,将所要比较的两幅图片的直方图数据,然后再将直方图数据归一化之后方便比较,最终得到一个相似指数,通过设定相似指数的边界,我们可以得到是否是同一张图片。 直方图算法运行速度很快,也是比较图片相似度算法中很受欢迎的算法,如果你的项目中,需要比较有着极高相似度的图片,而且你需要将这种具有极高相似度的图片归为同一个图片,那么就选用直方图算法吧!哈希算法
感知哈希算法(pHash,全拼:Perceptual hash algorithm)是哈希算法的一种,哈希算法还包括平均值哈希算法(aHash),差异值哈希算法(dHash),经过对比之后,最终决定采用pHash算法来作为辅助相似性判别法。
pHash简单来说,是通过感知哈希算法对每张图片生成一个“指纹”字符串,然后通过比较“指纹”字符串的距离(通常采用汉明距离,Hamming distance,两个等长字符串之间的汉明距离,是两个字符串对应位置的不同字符的个数),这个距离越小,代表两个图片越相似,一般的,我们有下面规则: Hamming distance = 0 -> particular like Hamming distance < 5 -> very like hamming distance > 10 -> different picture 关于aHash, pHash, dHash的区别,我总结如下: · aHash:平均值哈希。转灰度压缩之后计算均值,最终通过像素比较得出哈希值,速度很快,但敏感度很高,稍有变化就会极大影响判定结果,精准度较差。因此比较适用于缩略图比较,最常用的就是以图搜图。 · pHash:感知哈希。在均值哈希基础上加入DCT(离散余弦变化,下面也会涉及,这里不展开),两次DCT就...点击查看剩余70%
如何破解绕开seedance2.0真人照片生成视频 限制?
python有哪些算法可以将视频中的每个帧图片去除指定区域水印合成新的视频?
iphone的激光雷达数据能否实时传输到three三维空间中?
豆包sora等ai视频生成大模型生成的视频水印如何去除?
python如何实现在电脑上拨号打电话给手机?
具身机器人与人形机器人区别?
nodejs如何将一个完整的js代码文件切割成不同的部分混淆后动态加载进入html运行?
为啥windows.onerror捕获js错误是这样的{"message":"Script error.","source":"","lineno":0,"colno":0,"stack":null,
2026年ai将全面接管编程?
WebMCP是干啥的?


