【发布时间】:2014-07-15 04:47:03
【问题描述】:
我正在使用相机在靠近墙壁的地方稳定无人机。为此,我需要提取相机相对于墙壁的运动。现在我使用了一个扩展的 OpenCV 示例,它使用 goodFeaturesToTrack 命令在每一帧中查找特征点。然后使用使用 Lucas-Kanade 方法的calcOpticalFlowPyrLK 将这些特征点跟踪到下一帧。然后我减去点位置来计算位移。将所有位移加在一起得到第一帧的总位移。 (在这期间我做了一些平均和过滤)。
我得到的结果根本不像相机的运动。运动向任何方向进行。有人知道出了什么问题吗?我是否使用了错误的算法来解决这样的问题?
【问题讨论】:
-
您的相机可以改变与墙壁的距离。你如何计算那个位移?
-
您需要找到您的相机的外部相机参数(校准)。通过使用opticalFlow,您可以跟踪二维图像空间中的特征。如果您可以在多个图像上跟踪相同的特征,则可以使用该信息来计算校准。我在该主题上没有深入的经验,所以我无法提供进一步的帮助。
-
如果没有一些示例信息,几乎不可能说出您做错了什么。如果我不得不猜测,我会说它需要结合旋转和平移。
标签: c++ opencv camera flow motion