我是OpenCV的新手。我想知道我们是否可以比较两张图像(一张是由Photoshop制作的图像,即源图像,另一张是从相机拍摄的),看看它们是否相同。我尝试使用模板匹配来比较图像。这没用。您能告诉我我们可以使用哪些其他程序进行这种比较吗?
问问题
6132 次
2 回答
7
根据您的目的,可以通过不同的方式比较图像:
- 如果您只想比较两个图像是否大致相等(有一些亮度差异),但具有相同的视角和相机视图,您可以简单地计算每个色带的像素到像素平方差。如果两个图像上的平方和小于图像匹配的阈值,否则不匹配。
- 如果一个图像是另一个图像的黑白变体,则需要转换彩色图像(参见例如http://www.johndcook.com/blog/2009/08/24/algorithms-convert-color-grayscale)。Afterwarts 只需执行上述步骤。
- 如果一个图像是另一个图像的子图像,则需要对两个图像进行配准。这意味着确定将子图像放置在较大图像上所需的比例、可能的旋转和 XY 平移(有关配准图像的方法,请参阅:Pluim、JPW、Maintz、JBA、Viergever、MA、基于互信息的配准医学图像:一项调查,IEEE Transactions on Medical Imaging,2003 年,第 22 卷,第 8 期,第 986 – 1004 页)
- 如果您有透视差异,则需要一种算法来校正一个图像以尽可能匹配另一个图像。例如, 从第 15 页及以后的http://javaanpr.sourceforge.net/anpr.pdf中查看偏移校正的方法。
祝你好运!
于 2012-05-28T08:33:23.913 回答
4
你应该试试 SIFT。您将 SIFT 应用于您的标记(图像保存在内存中),您会得到一些描述符(可以识别的点)。然后,您可以对相机帧使用 FAST 算法,以便在相机图像中找到标记的对应关键点。你有很多关于这个话题的话题:
如何在 OpenCV 中使用 SIFT 提取的特征在目标对象周围得到一个矩形
OpenCV - 使用 SURF 描述符和 BruteForceMatcher 进行对象匹配
祝你好运
于 2012-05-28T08:19:32.430 回答