7

我最近一直在研究对象跟踪问题的解决方案。我需要做的是识别和跟踪可能在 2D 平面上移动的 3D 对象,即在 x 和 y 中的平移,以及围绕 z 的旋转。要跟踪的对象是预先知道的,并且可以从中提取任何所需的信息。还假设照明条件不会发生任何剧烈变化,并且背景将保持相对静止。要跟踪的对象通常不是单一颜色的,因此不能选择按颜色进行跟踪。

我已经成功实现了一个原型,用于使用背景减法和动态模板匹配来跟踪多个 2D 对象。我现在想扩展到跟踪 3D 对象,但到目前为止,我对自己的发现/成就感到失望。我将列出我所做的一些尝试,希望有人能有所启发。

1.) 动态模板匹配:我会让用户在视频帧中选择对象,然后在对象周围定义一个搜索区域。然后将在该区域内搜索该对象。 这个剪辑最初给了我这个想法。不幸的是,这对我来说并没有真正起作用,因为对象在旋转时会丢失(将其转回相机)。我还尝试在找到对象时不断更新模板,但这会导致模板在预期对象被遮挡时成为另一个(外部)对象。

2.) Lucas-Kanade光流:我使用 OpenCV 的 goodFeaturesToTrack 找到了一些要跟踪的好点,并尝试使用 calcOpticalFlowPyrLK 通过多个帧跟踪这些点。然而,这个算法的性能有点令人失望。我将其应用于牛津走廊数据集,但我最初检测到的点很快就会丢失。

3.) SURF:我尝试使用 SURF 检测特征,但这里的问题是很难将其应用于可能与不同视角有很大差异的 3D 对象。我希望找到关于 cv2 的 SURF 的文档,因为这似乎提供了为 SURF 特征提取器提供关键点的功能(可能来自 goodFeaturesToTrack)。不幸的是,我还没有找到一种方法来做到这一点。我关于 SO 的问题:OpenCV: Extract SURF Features from user-defined keypoints

背景:我有一个固定的网络摄像头,所有处理都在台式计算机上完成。我在 Windows 7 上使用 OpenCV 的 Python 包装器和 Eclipse 的 PyDev 插件。

如果有人可以建议任何其他技术来尝试,或者甚至是一些改进已经提到的技术性能的指针,我将不胜感激。

4

1 回答 1

1

如果没有看到您要跟踪的对象,就很难提出一些有用的建议。如果你拍几张照片向我们展示肯定会有助于讨论的问题。这里的人有时也会实施他们的建议/想法并与您分享。

于 2012-08-02T05:03:52.707 回答