1

我正在尝试在不完全恒定的背景上确定对象的移动和旋转(可以是纯色的,但不一定是)。这是一个例子:

图像1 图2

使用教程中的关键点来查找转换不起作用,因为我正在处理的对象不一定为此提供足够的边缘。由于背景的变化,构建差异图像并在那里进行分割也经常失败。在此示例中,它并没有那么糟糕,但可能会发生反射变化或轻微变形。

差异图像

关于如何找到将对象(在本例中为蓝色的东西)从一个图像映射到另一个图像的变换矩阵(仿射,只有四个自由度)的任何想法?

4

1 回答 1

0

对图像减法的结果使用二进制阈值(如此处所述 -前景提取) - 它应该删除小的变化(这是闪电变化的结果)。在此之前,您可以尝试使用一些过滤器来模糊边缘,中值过滤器可能是一个不错的选择(但也可以尝试不同的过滤器) - 尝试在输入图像和图像减法的结果上使用这种技术。

//编辑:
为了确定转换,您可以尝试使用 SURF - http://docs.opencv.org/doc/tutorials/features2d/feature_homography/feature_homography.html
如果您不需要计算旋转,请尝试使用光流技术 - http://robots.stanford.edu/cs223b05/notes/CS%20223-B%20T1%20stavens_opencv_optical_flow.pdf或更简单的方法:
1. 计算几何中心(只需添加所有点的位置并将结果除以数字点)在第一张和第二张图像上的标记轮廓(将它们命名为轮廓 1 和轮廓 2)。或者,您可以计算填充轮廓的质心 - 这取决于您。
2.你的变换是:movementVector = centerOfContour2 - centerOfContour1

如果结果不够准确,请尝试在图像上找到最大的轮廓并在空白图像上绘制此轮廓(这样您就不会有任何噪音、伪影等)。对新图像执行所有操作。

于 2013-08-22T23:27:31.167 回答