相似图片搜索原理一则
记得百度去年上线了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字符串然后再进行比较。
怎么样是不是很简单其实跟搜索引擎在处理文字时的道理一样他幵没有读懂任何的字戒者图片只是简单的通过特征判定即可计算出图片的相似度从而匹配出合适的图片了。
官方网站:点击访问特网云官网活动方案:===========================香港云限时购==============================支持Linux和Windows操作系统,配置都是可以自选的,非常的灵活,宽带充足新老客户活动期间新购活动款产品都可以享受续费折扣(只限在活动期间购买活动款产品才可享受续费折扣 优惠码:AADE01),购买折扣与续费折扣不叠加,都是在原价...
DogYun(中文名称狗云)新上了一批韩国自动化上架独立服务器,使用月减200元优惠码后仅需每月300元,双E5 CPU,SSD+NVMe高性能硬盘,支持安装Linux或者Windows操作系统,下单自动化上架。这是一家成立于2019年的国人主机商,提供VPS和独立服务器租用等产品,数据中心包括中国香港、美国洛杉矶、日本、韩国、德国、荷兰等。下面分享这款自动化上架韩国独立服务器的配置和优惠码信息。...
? ? ? ?创梦网络怎么样,创梦网络公司位于四川省达州市,属于四川本地企业,资质齐全,IDC/ISP均有,从创梦网络这边租的服务器均可以****,属于一手资源,高防机柜、大带宽、高防IP业务,另外创梦网络近期还会上线四川联通大带宽,四川联通高防IP,一手整CIP段,四川电信,联通高防机柜,CN2专线相关业务。成都优化线路,机柜租用、服务器云服务器租用,适合建站做游戏,不须要在套CDN,全国访问快...