我正在尝试编写一个简单的跟踪例程来跟踪电影中的某些点。
基本上我有一系列100帧长的电影,在深色背景上显示一些亮点。 我每帧有大约100-150个点,他们在电影的过程中移动。我想跟踪它们,所以我正在寻找一些有效的(但可能不会过度执行)例行程序。
更多信息:
由于视频是黑白的,我虽然应该依赖brigthness。例如,我想我可以在该区域内移动并计算前一帧中区域的区域与下一帧中各个位置的相关性。我知道这是一个非常天真的解决方案,但你认为它可能有用吗?有谁知道这样做的具体算法?它不需要超快,只要它准确,我很高兴。
谢谢
尼科
答案 0 :(得分:4)
听起来像Blob detection给我的工作。
答案 1 :(得分:3)
Zdenek Kalal的Predator(TLD算法)也适用于自动跟踪
见:
和
答案 2 :(得分:2)
我会建议Pearson's product。拥有一个模型(可以是任何模板图像),您可以测量模板与框架任何部分的相关性。
结果是一个概率因子,它决定了样本与模板一的相关性。它特别适用于2D情况。 它具有独立于样本绝对值的优点,因为结果取决于与样本平均值相关的协方差。
一旦检测到高概率,您可以跟踪原始位置的neightboor中的连续帧,并选择最佳相关因子。
然而,模板的大小和旋转很重要,但事实并非如我所知。您可以使用任何形状自定义检测,因为模板图像可以表示任何配置。
这是single pass algorithm implementation,我已经使用并且工作正常。
答案 3 :(得分:1)
这必须是一个很好的研究主题,我怀疑不会有任何100%准确的解决方案。
可能有用的一些链接:
Learning patterns of activity using real-time tracking。来自麻省理工学院的两个人的论文。
Kalman Filter。特别是计算机视觉部分。
Motion Tracker。一个学生项目,我相信也有代码和样本视频。
当然,这可能对你来说太过分了,但希望它能帮助你获得其他潜在客户。
答案 4 :(得分:1)
简单就是好。我会开始做类似的事情:
1) over a small rectangle, that surrounds a spot: 2) apply a weighted average of all the pixel coordinates in the area 3) call the averaged X and Y values the objects position 4) while scanning these pixels, do something to approximate the bounding box size 5) repeat next frame with a slightly enlarged bounding box so you don't clip spot that moves
对于低于某个阈值的像素,平均值的权重应该为零。数字4可以像跟踪比相同阈值更亮的任何内容的最小/最大位置一样简单。
这当然会出现重叠或交叉路径的问题。但出于某种原因,我一直认为你是用一些未知的相机运动跟踪星星,在这种情况下这应该没问题。
答案 5 :(得分:1)
我担心blob跟踪并不简单,如果你想做得好的话就不行。
从genpfault说,开始使用blob检测。
现在每个画面都有斑点,你需要将它们连接起来。如果blob独立移动,您可以使用某种对应算法将它们链接起来。例如,请参阅http://server.cs.ucf.edu/~vision/papers/01359751.pdf。
现在你可能会发生碰撞。您可以使用高斯混合物尝试将它们分开,放弃并让轨道交叉,使用任何其他前后信息来解决碰撞(例如,如果A和B碰撞,A之前更亮,并且之后会更亮,你可以跟踪A;如果A和B沿着可预测的轨迹移动,你也可以使用它。)
或者你可以与一直在做这种事情的实验室合作。