前言
目前正在开展一项涉及大量图像搜寻的工作,其核心在于依据图像内容进行匹配,这一功能最初由网络搜索服务推广开来,之后在商业交易平台上展现出显著的应用价值。着手构建这个图像搜寻系统时,我们查阅了相关文献,随着项目接近尾声,决定在此进行初步的交流。本文将首先阐述图像搜寻最根本的技术环节,即通过特定方法判定图像间的相似程度。
谈到测量“某某”的相似程度,许多人首先想到的是将待比较的对象转化为两个向量,再借助余弦相似度来衡量这两个向量之间的远近,这种做法应用十分普遍,比如用来对比两个用户的兴趣相近程度,或是比较两段文字的相似程度。不过,在衡量照片近似程度时,这种手段并不常见,缘由我稍后解释,眼下先谈谈另外两种观念,即视觉特征码和汉明距离。
图像指纹
图像的数字特征与人体的独特印记相似,都代表着个体的身份认证,所谓图像的数字特征,实际上是通过特定的加密方法,对图形进行一系列处理,从而得到的一串由0和1构成的代码,具体表现形式请参考下图所示。

输入的图像可以通过散列函数处理, 依据其视觉特征得出“图像散列”值, 相似的头像, 其散列值也会相近, 创建图像指纹的方法叫做感知哈希算法( Hash )。
汉明距离
根据前面关于图像指纹的说明,我们了解到能够运用感知哈希技术把照片转变为特定形式的字符序列,至于比较这些字符序列,存在一种叫做汉明距离的计算方式,其定义引自维基百科如下
信息学领域里,两个同样长度的字符串的汉明距离,指的是它们在对应位置上互不相同的字符数量。具体来说,这个数值就是将一个字符串改写成另一个字符串时,必须更替掉的字符数。
一般以汉明距离来评估两幅图像的相异程度,汉明距离数值越小,表明图像间的相似程度越强。当汉明距离等于零时,意味着这两幅图像完全一致。
感知哈希算法
常见的哈希方法有三种,分别是平均哈希法aHash、感知哈希法pHash、差异值哈希法dHash。关于这三种哈希方法的说明和对比,很多文章都有介绍,同时许多软件包都提供直接计算哈希值的接口,只需调用对应函数即可完成。这些内容就不详细展开了,建议参考文章《图像相似度中的Hash算法》。
代码可在公众号“01二进制”里面,通过后台回复“查找照片是否相同”来获取
三种哈希算法的实现代码如下:
ahash

dhash

phash

当然,你可以先进行软件包的部署,再运用对应的加密算法完成运算。
比较两个图片相似度的思路
因此,要对比两张图像的相像程度,我们便有了个简便的思路,首先运用感知哈希算法提取出图像的指纹特征,接着对比两个哈希值的汉明距离即可。
阮一峰阐述了图片检索的基本运作方式,具体流程包含以下环节:首先,需要建立图像特征库,接着,对输入的图片进行特征提取,然后,将提取出的特征与库中数据比对,最后,根据相似度排序,输出匹配结果。
调整大小,将图像调整为 8x8 的规格,包含 64 个像素点。这一步的目的是消除图像的细节,仅保留轮廓、光影等核心特征,忽略不同尺寸和比例造成的图像变化。压缩色彩,把缩小后的图像,转换为 64 级灰度显示。换句话说,所有像素点仅使用 64 种不同的灰度值。求取平均,统计全部 64 个像素点的灰度平均值。对比像素的明暗程度,针对每一个像素点,将其明暗程度与整体平均值进行对照,若超过或等于该平均值,则标记为 1,若低于该平均值,则标记为 0,以此形成一系列二进制数据,随后通过特定算法生成哈希值,这些二进制数据按既定顺序排列拼接,最终构成一个 64 位的数值,代表图像的独特特征,排列顺序虽可变动,但所有图像必须遵循统一的排列规范。
这种手段在检索完全一致的图像时颇具成效,但在寻找近似照片时表现不佳,并且无法进行局部查询,所以一般用于核实图片是否构成侵权。目前像谷歌图像搜索、百度图像搜索等平台大多运用深度学习技术执行相似度检测,具体内容将在后续文章中阐述。
为什么余弦相似度不适合用来检测图片相似度
最后,我们探讨为何不采用余弦相似度来检测图像的相似性,起初我们便提及,若要运用余弦相似度来评估相似程度,就必须先构建两个向量。一般情况下,我们会把图像转换成像素向量,依据像素点灰度值的分布情况,以此来衡量两张图像的相似程度,这种做法本质上就是比较两张图像的直方图是否相近,然而这样仅仅保留了像素出现的次数,却忽略了像素所在的具体位置,导致信息损失非常严重,因此仅在特定情境下才有效。获取衡量图像近似程度的余弦相似度算法,可在公众号「01二进制」后台输入「检测图像相似度」获取相关代码。
总结
本篇所述的技术均采用非深度学习技术来判定图像间的相似程度,尽管这些技术原理简单,不过每一种都有其不足之处。构建图像检索系统时,首要任务是判定图像相似性,然而当前多数系统借助深度学习技术来获取图像特征,进而进行比较,准确度显著增强。接下来要说明的是,运用深度学习技术提取图像特征的方法,可以用来判定两张图片的相近程度。
水平所及,在编排文字时难免出现偏差,若有意见,欢迎在评论区提出纠正意见。
扫一扫在手机端查看
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。


客服1