image-processing - 如何识别同一对象的两个图像的变化

标签 image-processing computer-vision feature-detection

我有两张图片,我知道它们代表完全相同的对象。在下图中,它们被称为引用和匹配。

Reference and Match

图像 Match 与 Reference 相比可以进行以下转换:

  1. 物体可能通过添加(例如在侧面添加污垢或文字)或遗漏(侧视镜已被取出)局部改变了外观。

  2. 仅在水平方向拉伸(stretch)或缩小尺寸(在垂直方向不调整尺寸)

  3. 部分引用图像未出现在匹配中(引用图像中以红色阴影显示)。

问题:如何识别以上述方式“改变”的区域?

想法#1:一旦匹配图像(图像中编号为 1 和 3)的开始和结束与引用图像中的相应列对齐,动态时间扭曲似乎是一个不错的选择,但我不确定如何进行。

想法 2:跨图像匹配 SIFT 特征。由特征点位置产生的曲面分割将图像分解成不均匀的图 block 。使用跨图像的特征对应关系来确定要跨图像匹配的图 block 。使用相似性度量来找出任何变化。

最佳答案

您可能需要考虑迭代配准算法。基本上你想要执行优化以找到转换的参数,在你的情况下是水平缩放和平移。优化参数后,您将在两幅图像之间进行转换,转换一幅图像以匹配另一幅图像,然后可以使用减法来识别有差异的区域。

要注册,请查看 ITK 库。 您可能可以使用互信息作为度量来进行梯度体面优化。它有许多不同的变换,可以捕获平移和缩放。代码应该在您显示的示例图像上快速运行。

关于image-processing - 如何识别同一对象的两个图像的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16343258/

相关文章:

algorithm - 白平衡算法背后的数学原理是什么?

opencv - 很难找到 FREAK 特征提取器的任何教程/示例

c++ - 根据最近邻距离比绘制匹配项

c# - 如果我知道背景颜色,如何创建图像轮廓?

python - 如何找到图像外遗漏的角落

c++ - 通过 minMaxLoc 返回值 OpenCV 找到最佳匹配

image - MNIST 图像是什么图像格式?

matlab - 使用 ASM 坐标进行眨眼检测

opencv - 面部表情检测

opencv - 检测图像中线条的好方法?