我正在尝试使用OpenCV跟踪单个对象作为机器人的一部分,它跟踪一个由框架中的矩形区域标记的对象。基于框架中定义的模板,机器人必须追逐该对象。对象不能是单一颜色,也不能改变对象的方向。机器人捕获的视频由笔记本电脑处理,移动命令由于处理而发送给机器人。
我是OpenCV的新手。在阅读了关于运动跟踪的内容后,我发现使用Lucas-Kanade方法的光流可以通过动态更新模板来实现此目的。
这种方法对我的要求是否足够? 是否可以使用此方法实现实时处理? 我还想知道其他任何方法是否最适合我的目的?
如果我错了,请纠正我。
答案 0 :(得分:1)
跟踪是一个广泛研究的主题,没有标准(也没有一般强大的)解决方案。相当强大的跟踪代码多年来由博士生撰写。
如果您被允许使用其他人的代码,请输入youtube:Predator: Camera That Learns。它是一种相当通用的快速跟踪算法(它是一个基于特征的高级Haar-like树/级联分类器)。在那里,你可以在视频中找到研究论文的参考资料,如果你想了解发明家家伙Zdanek的旧大学主页,你可以下载并使用他的代码。
如果您必须自己编写代码,则需要使用一些非常简单的系统。如果您的跟踪对象没有太大变化且不会剧烈移动,我建议使用模板匹配。一旦检测与原始模板有所不同,您可以使用最近的检测更新模板。这会导致漂移。如果漂移过多,您可以返回原始模板。
但是请注意:跟踪修改没有太多期待......卢卡斯 - 卡纳德在研究论文中只是强大的。 ;)
答案 1 :(得分:0)
我开始的地方是YouTube,看看其他研究人员到目前为止所做的工作,看看他们的研究论文是否在网上公布。你可以谷歌的其他关键词是Voila Jones分类器(人脸识别),基于AdaBoost的对象分类器,Active Appearance Model和大量新的研究论文(绝对不属于我的联盟)。
您可以查看我在2009年初在flash中写过的内容。在您的浏览器上需要使用openCV作为后端。
答案 2 :(得分:0)
对问题的回答有点迟,但可能有助于将来参考。
我开发了一个使用OpenCV C ++ lib学习跟踪对象的项目。我项目的链接是https://bitbucket.org/iankits/opencv_development/。项目的wiki页面为您提供问题陈述的所有详细信息以及学习跟踪对象的各种指示。
我的主要解决方案链接是HERE。我想在视频中跟踪一只乌龟。为此,我使用了openCV库的模板匹配方法。
matchTemplate(frame,templ,result,match_method);
我从视频的框架中选择了乌龟并保存为* .png文件。然后我使用该png文件作为模板来匹配视频的每一帧。它对我的目的很有用。但我应该承认,这不是一个很好的解决方案。如果您正在将此用于机器人视觉,我建议您使用“ Haartraining ”,这是OpenCV中提供的机器学习技术。您还可以查看我的HERE。
希望这可能会有所帮助。