相似图片搜索原理一则
记得百度去年上线了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字符串然后再进行比较。
怎么样是不是很简单其实跟搜索引擎在处理文字时的道理一样他幵没有读懂任何的字戒者图片只是简单的通过特征判定即可计算出图片的相似度从而匹配出合适的图片了。
justhost怎么样?justhost服务器好不好?JustHost是一家成立于2006年的俄罗斯服务器提供商,支持支付宝付款,服务器价格便宜,200Mbps大带宽不限流量,支持免费更换5次IP,支持控制面板自由切换机房,目前JustHost有俄罗斯6个机房可以自由切换选择,最重要的还是价格真的特别便宜,最低只需要87卢布/月,约8.5元/月起!总体来说,性价比很高,性价比不错,有需要的朋友可以...
paypal贝宝可撸$10的代金券!这两天paypal出了活动,本次并没有其他的限制,只要注册国区的paypal,使用国内的手机号和62开头的银联卡,就可以获得10美元的代金券,这个代金券购买产品需要大于10.1美元,站长给大家推荐几个方式,可以白嫖一年的VPS,有需要的朋友可以看看比较简单。PayPal送10美元活动:点击直达活动sfz与绑定卡的号码可以重复用 注册的邮箱,手机号与绑的银联卡必须...
Nocser刚刚在WHT发布了几款促销服务器,Intel Xeon X3430,8GB内存,1TB HDD,30M不限流量,月付$60.00。Nocser是一家注册于马来西亚的主机商,主要经营虚拟主机、VPS和马来西亚独立服务器业务,数据中心位于马来西亚AIMS机房,线路方面,AIMS到国内电信一般,绕日本NTT;联通和移动比较友好,联通走新加坡,移动走香港,延迟都在100左右。促销马来西亚服务器...