2012-08-01 93 views
7

我最近一直在研究对象跟踪问题的解决方案。我需要做的是识别和追踪可能在2D平面上移动的3D对象,即x和y的平移和z的旋转。要被跟踪的对象事先是已知的,并且可以从中提取任何期望的信息。还假定照明条件不会经历任何严重的变化,并且背景将保持相对静止。要跟踪的对象通常不会是单一颜色,因此按颜色进行跟踪不是一种选择。OpenCV:跟踪在2D平面中移动的3D对象

我已经成功实现了使用背景扣除和动态模板匹配跟踪多个2D对象的原型。我现在想扩展到跟踪3D对象,但到目前为止,我对我发现/实现的东西感到失望。我会列举一些我曾经希望有人可以阐明的一些尝试。

1.)动态Template matching:我会让用户在视频框中选择对象,然后在对象周围定义一个搜索区域。然后将在该区域内搜索该对象。 This clip最初给了我这个想法。不幸的是,这并不适合我,因为物体在旋转时会丢失(背对着相机)。我还尝试在找到对象时不断更新模板,但是当预期对象变为occluded时,这会导致模板成为另一个(外部)对象。

2.)Lucas-Kanade光流:我使用OpenCV的goodFeaturesToTrack找到一些好的点来跟踪,并试图使用calcOpticalFlowPyrLK通过多帧来跟踪这些点。然而,这个算法的表现有点令人失望。我将它应用于Oxford Corridor数据集,但我原先检测的点很快就会丢失。

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

背景:我有一台固定的摄像头,所有的处理都是在台式电脑上完成的。我在Windows 7上使用OpenCV的Python包装器和用于Eclipse的PyDev插件。

如果任何人都可以提出任何额外的技巧来尝试,甚至是一些提高已经提到的技术的性能的指针,我会很大欣赏它。

+2

这个怎么样:http://info.ee.surrey.ac.uk/Personal/Z.Kalal/tld.html – moooeeeep 2012-08-01 20:26:40

+0

我其实只是看着那个!这是多么巧合,但无论如何感谢:) [酷视频](http://www.youtube.com/watch?v=1GhNXHCQGsM&feature=related) – casper 2012-08-01 20:29:22

回答

0

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

+0

嗨,谢谢你的回应!我的解决方案必须能够跟踪呈现给它的任何对象,例如咖啡杯,棋子,毛绒动物,玩具车或一些类似物体。我不知道这个对象是什么,但一旦确定跟踪算法可以从中构建任何类型的模型。 – casper 2012-08-02 06:57:26