我想知道像tineye.com这样的反向图像搜索服务是如何工作的......?
像 TinEye 这样的反向图像搜索引擎如何工作? 我的意思是进行图像搜索需要哪些参数?
How Would the Reverse Image Search Engines like TinEye Work ?
I mean what parameters are required to do an image search ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
不知道 TinEye 是否使用了这个算法,但是 SURF 是一种常用的算法目的。
在这里您可以看到 Mathematica 中的使用示例,其中图像的部分匹配用于构成风景:
Don't know if TinEye use exactly this one, but SURF is a commonly used algorithm for this purpose.
Here you can see an usage example in Mathematica where a partial matching of images is used to compose a landscape:
数据库:通常您有一组从网站收集的图像。
对于每个图像,以与每个图像关联的数值向量的形式提取关键特征(SURF、SIFT 等)。矢量存储在可搜索的数据库中。
当您向 TinEye 提供图像时,该图像将被处理并提取关键特征。运行将特征与数据库中的特征进行匹配的算法并找到接近的匹配。提取与匹配特征向量相关的图像列表,并将其显示为网络图像的链接。
database: Generaly you have set of images that are collected from web sites.
For each image extract key features (SURF, SIFT, whatever) in a form of numerical vectors associated to each image. Vectors are stored in searchable database.
When you give image to TinEye this image is processed and key features are extracted. Algorithm for matching features to features in database is run and close matches are found. Associated list of images to matched features vectors is extracted and presented as links to web images.
您很可能需要一种具有良好图像局部性的算法,例如空间填充曲线。该 sfc 将图像细分为更小的图块和顺序,并将其复杂性降低到一维。然后,您想要按此顺序扫描图像并对每个图块进行傅立叶变换,因为频率变换更容易保存在数据库中。现在您有了图像的指纹,可以将其与其他频率进行比较。
Most likely you want an algorithm with a good locality of the image like for example a space-filling-curve. This sfc subdivide the image into smaller tiles and order and also reduce it complexity to 1-dimension. Then you want to scan the image in this order and do a fourier transformation of each tile because a transformation into frequencies is easier to save in a database. Now you have a fingerprint of your image and can compare it with other frequencies.