如何判断两张图片的相似度?
有哪些方式方法?
网友回复
暴力判断
比较两个图片是否相等有很多方法,最直观的,也最容易想到的算法就是遍历两个图片的每一个像素,最终求差来得到两个图片是否相等。 这种方式的优点是速度很快,比较精度特别高,但是如果两个图片稍微有一点不同,哪怕只是一个像素的差距,都会返回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%
有没有开源的solo agent一句话描述就能开发直接运行的前后端应用源代码?
订单支付过程中部分商品库存不足如何处理?
python如何开发一个自定义域名后缀的邮箱系统及登录发送邮件管理web页面?
有没有开源的项目将图片视频声音文字转场特效编排自动生成剪映草稿json文件?
有没有摄像头捕获眼球转动操作鼠标的开源代码?
localstorage如何生成自增的键值对进行增删改查?
python有没有将python脚本与python运行环境一键打包成exe的代码?
nodejs如何执行浏览器中运行的js代码?
iframe中如何阻止其他域名网页的打开或跳转?
webrtc如何实现多人音频电话会议?