基于图像的搜索如何工作?

时间:2017-08-31 07:26:30

标签: php image google-image-search

我一直致力于电子商务项目,现在我正在尝试实施基于图像的搜索。我已经在网上搜索了可能的解决方案。我知道谷歌和雅虎已停止支持图像搜索API。我会想知道需要从图像中提取什么,并根据我需要在db中搜索的内容。任何建议都会有所帮助。谢谢

1 个答案:

答案 0 :(得分:1)

如果你想要一个暴力方法,你可以计算每个图像的哈希值,将它存储在一个数据库中并计算要搜索的文件的哈希值,将其与数据库匹配......好吧你现在找到了完全匹配的图像。

这在某些情况下可能很有用,但在大多数情况下,您可能希望找到“相似”的图像。您可以从图像中提取元数据,如拍摄日期,文件名等。如果您想搜索自己的fotoalbum,很可能在同一时间拍摄的图像位于同一位置附近,因此包含相同的内容。 / p>

Google使用(据我所知)未知方法来获取图像的一部分并使用该信息进行搜索。例如:如果您将图像拆分为X×Y网格并计算平均颜色值,则可以在数据库中搜索匹配项(显然,您必须为每个图像执行此操作并将结果存储在数据库中) 。如果允许搜索图像和数据库值之间存在一定的差异,则可能会找到另一个相似的图像。在数据库中仅搜索图像的一部分,可以查找看起来相同但被移动的图片。

Microsoft已经创建了photoDNA,这种方法可以找到图片中对象的“边缘”,将其转换为黑白图像。比他们调整它的小分辨率并计算一个。使用此方法,您可以找到接近相同但略有不同的照片。如果您想要查找已编辑的图像和调整大小的图像,这是理想的选择。

另一种方法是计算图像的色谱,对其进行标准化并在数据库中搜索(具有小的变化)。你会得到几乎相同颜色的图像,但内容可能完全不同!

如果你有同一个对象的大量图像,深度学习也可以是一个选项。通过训练计算机(例如使用nVidea cuda),您可以使模型识别对象。如果您搜索带有狗的照片,则结果可能是带有狗的其他图像。

总结:有各种不同的方法,每种方法都有自己的优点和缺点,但它们有一个共同之处:制作起来并不容易!