6

这种情况与我已经找到的任何问题都不同,如下所示:如果我拍了两张相似图像的照片,我希望能够突出两张图像中的不同特征。比如下面两半的儿童点差游戏:

差的一半 发现差异的右半部分

图像中的差异将是位丢失/添加和/或颜色变化,以及通过逐个像素比较更聪明的方法可以从原始图像文件中轻松检测到的差异类型。然而,事实上它们会受到光线波动和摄影不精确的影响,我需要一个更宽松/更聪明的算法。

如您所见,如果叠加,图像不一定会完美排列。

这个问题被标记为与语言无关,因为我希望答案能够将我指向相关算法,但是如果它们存在,我也会对当前的实现感兴趣,特别是在 Java、Ruby 或 C 中。

4

2 回答 2

5

以下方法应该有效。所有这些功能都在 OpenCV 中可用。看看这个计算单应性的例子。

  • 使用角点检测器检测两个图像中的关键点。
  • 提取关键点的描述符(SIFT/SURF)。
  • 匹配关键点并使用 RANSAC 计算单应性,将第二张图像与第一张图像对齐。
  • 将单应性应用于第二个图像,使其与第一个图像对齐。
  • 现在只需计算两个图像之间的像素差异,差异图像将突出显示从第一个到第二个发生变化的所有内容。
于 2013-04-10T10:35:36.477 回答
4

我的一般方法是使用光流来对齐两个图像,并在它们对齐后执行逐像素比较。

但是,对于具体情况,如果两个图像像您的情况一样明显不同,则标准光流(OpenCV 等)可能会失败。如果这确实失败了,那么即使图像完全不同,最近的光流技术也应该可以工作。例如,您可能想查看Ce Liu 等人关于 SIFT 流的论文,该论文通过稀疏对应解决了这个问题。

于 2013-04-09T19:05:52.673 回答