mmc*_*ole 40 algorithm image-processing computer-vision
TinEye,"反向图像搜索引擎",允许您上传/链接到图像,它能够搜索它已爬行的十亿个图像,它将返回到找到的图像是同一图像的链接.
但是,它不是一个天真的校验和或任何与此相关的东西.它通常能够找到比您提供的原始图像更高分辨率和更低分辨率以及更大和更小尺寸的图像.这是一个很好的服务用途,因为我经常找到一个图像,并希望它的最高分辨率版本.
不仅如此,我已经找到了相同图像集的图像,图像中的人处于不同的位置,但背景基本保持不变.
TinEye可以使用哪种类型的算法,可以将图像与各种尺寸和压缩比的图像进行比较,但仍能准确地发现它们是"相同"的图像或集合?
Igo*_*kon 40
这些算法通常基于指纹.指纹是一种相当小的数据结构,类似于长哈希码.但是,指纹功能的目标与哈希函数的目标相反.一个好的哈希函数应该为非常相似(但不相等)的对象生成非常不同的代码.相反,指纹功能应该为类似图像生成相同的指纹.
举个例子,这是一个(不是特别好)的指纹功能:将图片大小调整为32x32平方,对颜色进行标准化和量化,将颜色数量减少到256个.然后,你有1024字节的指纹对于图像.只需保留一个指纹表=> [图像URL列表].当您需要查看与给定图像类似的图像时,只需计算其指纹值并找到相应的图像列表.简单.
什么是不容易的 - 在实践中有用,指纹功能需要对作物,仿射变换,对比度变化等具有强大的功能.良好指纹功能的构建是一个单独的研究课题.通常他们是手动调整并使用大量的启发式(即使用关于典型照片内容的知识,关于EXIF中的图像格式/附加数据等)
另一种变化是使用多个指纹功能,尝试应用它们并组合结果.实际上,它类似于找到类似的文本.图像相似性搜索使用"指纹袋"代替"文字袋",并且发现一个袋子中的多少元素与另一个袋子中的元素相同.如何使这种搜索高效是另一个主题.
现在,关于文章/论文.我找不到一篇能够概述不同方法的好文章.我所知道的大多数公开文章都讨论了具体方法的具体改进.我可以建议检查这些:
"使用小波的内容指纹识别".本文是关于使用小波的音频指纹识别,但相同的方法可以适用于图像指纹识别.
置换分组:用于音频和图像检索的智能哈希功能设计.关于局部敏感哈希的信息.
用于大规模部分重复Web图像搜索的捆绑功能.一篇非常好的文章,讨论了SIFT和捆绑功能以提高效率.它最后还有一个很好的参考书目
FotoForensics网站的创建者发布了关于这个主题的博客文章,它对我来说非常有用,并且显示的算法可能对你来说足够好,并且需要比小波和特征提取少得多的工作.
http://www.hackerfactor.com/blog/index.php?/archives/529-Kind-of-Like-That.html
aHash(也称为Average Hash或Mean Hash).这种方法将图像压缩为灰度8x8图像,并根据像素的值是否大于图像的平均颜色来设置哈希值中的64位.
pHash(也称为"Perceptive Hash").该算法类似于aHash,但使用离散余弦变换(DCT)并基于频率而不是颜色值进行比较.
dHash像aHash和pHash一样,dHash实现起来非常简单,并且比任何权利都要准确得多.作为一种实现,dHash几乎与aHash相同,但它的表现要好得多.虽然aHash侧重于平均值,而pHash评估频率模式,但dHash跟踪渐变.