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

Mik*_*ell 6 language-agnostic image-processing computer-vision

这种情况在我已经能够找到的任何东西中都是独一无二的,如下所示:如果我拍了两张相似图像的照片,我希望能够突出显示两幅图像中的不同特征.例如以下两个孩子的现场差异游戏:

左半边的差异 右半部分现货差异

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

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

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

Zap*_*hod 5

以下方法应该有效.OpenCV中提供了所有这些功能.看看这个例子来计算单应性.

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

  • 请注意单应性几乎是刚性的:它将一个平面(在3d中)映射到一个平面(它不考虑变形).在上面的示例中,它将导致右侧的简单全局转换.当摄像机看平面时,同形数据用于补偿摄像机运动. (2认同)