“类似”是指已经旋转(90度增量),颜色调整和/或重新保存(有损jpeg压缩)的精确重复.
我试图想出一个“fingerprint”的图像,这样我就可以快速查找它们.
到目前为止,我提出的最好的是generate a grayscale histogram.使用16个箱子和256个灰色阴影,我可以轻松创建一个16字节的指纹.这种方法运行得相当不错,但它并不像我想的那么强大.
我尝试的另一个解决方案是调整图像大小,rotate them所以它们都以相同的方式定向,灰度化它们,标准化直方图,然后将它们缩小到大约8×8,并将颜色减少到16种灰度.尽管微缩图像非常相似,但它们通常偏离一两个像素,这意味着精确匹配不起作用.
如果没有完全匹配,我不相信有任何有效的方法来对相似的照片进行分组(不将每张照片与每张其他照片进行比较,即O(n ^ 2)).
那么,(1)我如何创建我创建一个与上述要求不变的指纹/签名?或者,(2)如果不可能,我可以使用哪个其他指标,以便给定单个图像,我可以在数千个数据库中找到它的最佳匹配?
解决方法
TinEye通常不会找到相似的图像(即具有相同主题的不同图像);它找到完全匹配,包括已经裁剪,编辑或调整大小的匹配.
现在,那就是说,我只是假设你知道你在问什么,而你实际上想要找到所有类似的图像,而不仅仅是编辑精确的副本.
如果你想尝试详细介绍它,我建议你在Sivic,Zisserman和Nister,Stewenius之间查阅论文.这两篇论文(以及最近的其他一些论文)一直在使用的想法是尝试应用文本搜索图像数据库的技术,并以相同的方式搜索图像数据库谷歌将搜索它的文档(网页)数据库.
我链接到的first论文是这种方法的一个很好的起点,因为它主要解决了一个大问题:图像中的“单词”是什么?文本搜索技术都集中在单词上,并将其相似性度量基于包括单词计数在内的计算.因此,成功地将图像表示为视觉单词的集合是将文本搜索技术应用于图像数据库的第一步.
然后,second论文扩展了使用文本技术的想法,提出了更合适的搜索结构.通过这种方式,它们可以实现更快的图像检索和更大的图像数据库.他们还提出了如何基于底层搜索结构构建图像描述符.
在两篇论文中用作视觉词的特征应该满足你的不变性约束,第二个肯定应该能够处理你所需的数据库大小(甚至可能从第一篇论文的方法起作用).
最后,我建议查找同一作者的新论文(我很肯定Nister做了一些新的东西,只是链接论文的方法对我来说已经足够了),查找他们的一些参考资料并且只是一般地搜索关于基于内容的图像(索引和)检索(CBIR)的论文 – 它现在是一个非常受欢迎的主题,所以应该有很多.