我正在考虑编写一个可以比较图像的应用程序:即检查一个图像是否存在于另一个图像中。比较图像的算法
让我们来想象一个人,树和其他东西的图片。让我们想象一棵树的另一张照片。是否有可能检查第二张图片是否与第一张图片中的树有相似之处?
我试图读取字节并比较它们,但它没有奏效。
做这种事情的最佳方法是什么?我应该使用什么算法?什么是最好的(更快)的语言来做到这一点?
在此先感谢。
我正在考虑编写一个可以比较图像的应用程序:即检查一个图像是否存在于另一个图像中。比较图像的算法
让我们来想象一个人,树和其他东西的图片。让我们想象一棵树的另一张照片。是否有可能检查第二张图片是否与第一张图片中的树有相似之处?
我试图读取字节并比较它们,但它没有奏效。
做这种事情的最佳方法是什么?我应该使用什么算法?什么是最好的(更快)的语言来做到这一点?
在此先感谢。
您可以使用pHash算法从这里:http://www.phash.org。
您需要类似于在字符串中搜索子串的快速算法的算法,但是开发用于在二维空间中搜索。
例如,这里是很好的解决方案:
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.45.581&rep=rep1&type=pdf
及其复杂性是在最坏的情况下,其中n是大矩阵的维数为O(n 2 )。
这是用于字符串模式的,对吗?我没有弄清楚如何搜索图像文件。 – placplacboom
@DavidL。 “字符串”和“字母”只是抽象。在你的图像中,每个像素都有其给定范围内的值,所以它可以表示为“字符”,整个图像可以表示为“字符的二维矩阵”。 –
明白了,但如果图像可以变小,变暗,我可以使用它吗? – placplacboom
通常有很多方法可以做到这一点,具体方法是最好的方法,也可能是唯一可行的方法,具体取决于细节。第二幅图像中的树或其他物体是否与第一幅图的尺寸完全相同?也许更小但是相同?或者你在寻找大致相似的形状,而不是细节的细节?两张照片上的照片都会被照亮吗?如果没有,这是否重要?如果第一个图像中找到第二个图像中的对象,但第二个图像中的背景或其他对象不存在于第一个图像中,它会计数吗? – DarenW
对象可能大小不同。在第一张照片里,你可以有一个类型为“a”的树。当我拍下这张照片时,我会将它发送到我的应用程序,以检查该树的名称。想象一下,我有很多jpeg的树木文件,我想确定哪些文件与我发送的图片有最接近的树。解决这个问题的最佳方法是什么? – placplacboom