相似图片搜索原理一则
记得百度去年上线了shitu.baidu.com当你上传一张照片时百度可以自动帮你适配到相似的图片。
加上有众所周知的搜索引擎读不懂图片这一大前提那么百度是如何实现这一功能的呢
一、一个十分简单的实现方法
计算机怎么知道两张图片相似呢
根据Neal Krawetz博士的解释原理非常简单易懂。我们可以用一个快速算法就达到基本的效果。
这里的关键技术叫做”感知哈希算法” Perceptual hash algorithm 它的作用是对每张图片生成一个”指纹” fingerprint 字符串然后比较不同图片的指纹。结果越接近就说明图片越相似。
来个简单的小示例
第一步缩小尺寸。
将图片缩小到8×8的尺寸总共64个像素。这一步的作用是去除图片的细节只保留结构、明暗等基本信息摒弃不同尺寸、比例带来的图片差异。
第二步简化色彩。
将缩小后的图片转为64级灰度。也就是说所有像素点总共只有64种颜色。
第三步计算平均值。
计算所有64个像素的灰度平均值。
第四步比较像素的灰度。
将每个像素的灰度与平均值进行比较。大于戒等于平均值记为1 小于平均值记为0。
第五步计算哈希值。
将上一步的比较结果组合在一起就构成了一个64位的整数这就是这张图片的指
纹。组合的次序幵不重要只要保证所有图片都采用同样次序就行了。
= =8facfcf4d0
得到指纹以后就可以对比不同的图片看看64位中有多少位是不一样的。在理论上这等同于计算“汉明距离” Hammingdistance。如果不相同的数据位不超过5 就说明两张图片很相似如果大于10就说明这是两张不同的图片。
这种算法的优点是简单快速不受图片大小缩放的影响缺点是图片的内容不能变更。如果在图片上加几个文字它就认不出来了。所以它的最佳用途是根据缩略图找出原图。
实际应用中往往采用更强大的pHash算法和SIFT算法它们能够识别图片的变形。只要变形程度不超过25%它们就能匹配原图。这些算法虽然更复杂但是原理与上面的简便算法是一样的就是先将图片转化成Hash字符串然后再进行比较。
怎么样是不是很简单其实跟搜索引擎在处理文字时的道理一样他幵没有读懂任何的字戒者图片只是简单的通过特征判定即可计算出图片的相似度从而匹配出合适的图片了。
ZJI是成立于2011年原Wordpress圈知名主机商—维翔主机,2018年9月更名为ZJI,主要提供香港、日本、美国独立服务器(自营/数据中心直营)租用及VDS、虚拟主机空间、域名注册业务。本月商家针对香港阿里云线路独立服务器提供月付立减270-400元优惠码,优惠后香港独立服务器(阿里云专线)E3或者E5 CPU,SSD硬盘,最低每月仅480元起。阿里一型CPU:Intel E5-2630L...
青云互联怎么样?青云互联是一家成立于2020年6月份的主机服务商,致力于为用户提供高性价比稳定快速的主机托管服务,目前提供有美国免费主机、香港主机、香港服务器、美国云服务器,让您的网站高速、稳定运行。目前,美国洛杉矶cn2弹性云限时七折,美国cera机房三网CN2gia回程 13.3元/月起,可选Windows/可自定义配置。点击进入:青云互联官网青云互联优惠码:七折优惠码:dVRKp2tP (续...
近日Friendhosting发布了最新的消息,新上线了美国迈阿密的云产品,之前的夏季优惠活动还在进行中,全场一次性45折优惠,最高可购买半年,超过半年优惠力度就不高了,Friendhosting商家的优势就是100Mbps带宽不限流量,有需要的朋友可以尝试一下。Friendhosting怎么样?Friendhosting服务器好不好?Friendhosting服务器值不值得购买?Friendho...