比较相似的图像作为照片 - 检测差异,图像差异

时间:2013-04-09 18:52:54

标签: image-processing language-agnostic computer-vision

情况有点独特,我已经能够找到的任何东西,如下:如果我拍了两张相似图片的照片,我希望能够突出显示不同的功能在两个图像中。例如以下两个孩子的现场差异游戏:

left half of spot the difference right half of spot the difference

图像的差异将是缺失/添加的位和/或颜色变化,以及通过不做任何比逐像素比较更聪明的原始图像文件可以容易地检测到的差异类型。然而,他们受到光线波动和摄影不精确的影响,我需要一个更宽松/更聪明的算法。

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

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

2 个答案:

答案 0 :(得分:5)

以下方法应该有效。 OpenCV中提供了所有这些功能。看看this example计算单应性。

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

答案 1 :(得分:4)

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

但是,对于具体情况,如果两个图像与您的情况有很大不同,则标准光流(OpenCV等)可能会失败。如果确实失败了,那么即使图像完全不同,最近的光流技术也应该起作用。例如,您可能希望查看有关使用稀疏对应关系解决此问题的SIFT flows by Ce Liu et al的文章。