Google图片搜索的原理

大标 2022年9月16日14:15:32网络推广评论0阅读模式

针对这个问题,我咨询了算法组的同事,他分享了基本想法:

对于这种图像搜索算法,通常有三个步骤:

1.目标图像的特征提取和图像描述有很多算法,如sift描述符、指纹算法函数、捆绑特征算法、哈希函数等。也可以根据不同的图像设计不同的算法,如通过图像的局部n阶矩方法提取图像特征。

2.编码图像特征信息,并将海量图像编码为查找表。对于目标图像,可以对具有高分辨率的图像进行下采样,并且可以在减少计算量之后执行图像特征提取和编码。

3.相似度匹配计算:使用目标图像的编码值计算图像搜索引擎中图像数据库中的全局或局部相似度;根据所需的鲁棒性,设置阈值,然后预保存具有高相似度的图片;最后,应该还有另一个步骤来筛选最佳匹配图片,这仍然应该使用特征检测算法。

每一步都有许多算法,集中于数学、统计学、图像编码、信号处理等理论。

以下是阮一峰最简单的实现:

如果你输入谷歌图片的URL,或者直接上传图片,谷歌会发现类似的图片。下图是美国女演员艾莉森·汉尼根。

上传后,Google返回以下结果:

这项技术的原理是什么?计算机如何知道这两张图片是相似的?

根据Neal krawetz博士的解释,这个原理非常简单,易于理解。我们可以使用快速算法来实现基本效果。

这里的关键技术被称为;感知哈希算法;(感知哈希算法),用于生成a&35;8221; 指纹;(指纹)字符串,然后比较不同图片的指纹。结果越接近,图片越相似。

以下是最简单的实现:

第一步是缩小尺寸。

将图片缩小到8&35;215; 8和总共64个像素。此步骤的目的是删除图片的细节,仅保留结构和明暗度等基本信息,并丢弃图片中由不同大小和比例造成的差异。

第二步是简化颜色。

将缩小的图像转换为64级灰度。即,所有像素总共只有64种颜色。

步骤3:计算平均值。

计算所有64个像素的平均灰度值。

步骤4:比较像素的灰度级。

将每个像素的灰度级与平均值进行比较。如果大于或等于平均值,则记录为1;如果小于平均值,则记录为0。

步骤5:计算哈希值。

上一步中的比较结果被组合形成64位整数,这是该图片的指纹。只要所有图片的顺序相同,组合顺序并不重要。

获取指纹后,您可以比较不同的图片,看看64位中有多少不同。在理论上,这相当于计算“时间";汉明距离;(汉明距离)如果不同数据位的数量不超过5,则两个图片非常相似;如果大于10,则表示这是两个不同的图片。

关于具体的代码实现,请参考Wote用Python py编写的imghash代码很短,只有53行。使用时,第一个参数是参考图片,第二个参数是用于比较的其他图片的目录。返回的结果是两个图片之间的不同数据比特数(汉明距离)。

该算法的优点是简单快速,不受图片大小的影响。缺点是不能改变图片的内容。如果您在图片中添加几个单词,它将无法识别。因此,它的最佳用途是根据缩略图找到原始图像。

在实际应用中,通常使用更强大的phash算法和sift算法,它们可以识别图片的变形。只要变形程度不超过25%,它们就可以匹配原始图像。虽然这些是阿尔戈里语

weinxin
我的微信
微信扫一扫
大标
  • 本文由 发表于 2022年9月16日14:15:32
  • 转载请务必保留本文链接:https://www.tanhuibiao.com/3668.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: