最近我有机会与图像处理技术合作,作为我的一个项目的一部分,我的任务是在给出新的图像时从图像存储中找到匹配的图像.我开始我的项目与谷歌搜索“如何比较图像使用
java”,我得到了一些很好的文章,找到两个图像的相似性.几乎所有这些都是基于四个基本步骤,它们是:
1.Locating the Region of Interest (Where the Objects appear in the given image),2.Re-sizing the ROIs in to a common size,3.Substracting ROIs,4.Calculating the Black and White Ratio of the resultant image after subtraction.
虽然这听起来像是比较图像的一个很好的算法,但在我的项目中使用JAI实现之后需要相当长的时间.因此,我必须找到一种替代方法.
有什么建议么?
解决方法
根据图像的不同,您可以这样做(伪代码).这是非常原始的,但应该很有效率.您可以通过随机或图案化的像素而不是每个像素来加快速度.
for x = 0 to image.size: for y = 0 to image.size: diff += abs(image1.get(x,y).red - image2.get(x,y).red) diff += abs(image1.get(x,y).blue - image2.get(x,y).blue) diff += abs(image1.get(x,y).green - image2.get(x,y).green) end end return ((float)(diff)) / ( x * y * 3)