图像检索系列——利用 Python 检测图像相似度!

Python图像相似度检测:从图像指纹到汉明距离
本文介绍了如何利用Python检测图像相似度,包括图像指纹的概念、汉明距离的定义以及感知哈希算法的应用。通过计算汉明距离来衡量图片差异,并探讨了为何不使用余弦相似度。文章还提到了图像检索项目的实践经验和资源获取途径。

前言

最近在做一个海量图片检索的项目,可以简单的理解为“以图搜图”,这个功能一开始是搜索引擎带火的,但是后来在电商领域变得非常实用。在制作这个图片检索的项目前,笔者搜索了一些资料,如今项目临近结尾,便在这里做一些简单的分享。本文先介绍图像检索最基础的一部分知识——利用 Python 检测图像相似度。

提到检测“某某”的相似度相信很多人第一想法就是将需要比较的东西构建成两个向量,然后利用余弦相似度来比较两个向量之间的距离,这种方法应用很广泛,例如比较两个用户兴趣的相似度、比较两个文本之间的相似度。但是这个方法在比较图片相似度的时候用到的并不多,原因我之后再说,这里先来介绍下另外两个概念—— 图像指纹汉明距离

图像指纹

图像指纹和人的指纹一样,是身份的象征,而图像指纹简单点来讲, 就是将图像按照一定的哈希算法,经过运算后得出的一组二进制数字。 如下图所示:

 

 

 

 

Python资源共享群:626017123

在给定的输入的图像中,我们可以使用一个散列函数, 并基于图像视觉上的外观计算它的“图像散列”值,相似的头像,它的散列值应该也是相似的。构建图像指纹的算法被称为 感知哈希算法(Perceptual Hash Algorithm)

汉明距离

通过上述对图像指纹的描述我们知道了可以利用 感知哈希算法 将图片转换成某种字符串,而比较字符串有一种名为 汉明距离 的表示方法。以下定义摘自维基百科:

在信息论中,两个等长字符串之间的 汉明距离 (英语:Hamming distance)是两个字符串对应位置的不同字符的个数。换句话说, 它就是将一个字符串变换成另外一个字符串所需要 替换 的字符个数。

通常用汉明距离来 衡量两张图片的差异 ,汉明距离越小,则代表相

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值