Assumimg你的车在移动,你可以尝试估计地平面(路)。
您可以通过提取特征(SURF而不是SIFT,速度),在帧对上匹配它们以及使用RANSAC求解单应性来获得下降地平面估计值,因为3d中的平面根据两者之间的单应性相机框架。
一旦你有了你的地平面,你可以通过查看不会根据估计的单应性移动的像素集群来识别汽车。
更复杂的方法是在地形上进行Motion from Motion结构。这只是假设它是刚性的,而不是平面的。
更新
我在想,如果你能,你将如何去寻找那些不根据估计的单应移动的像素集群扩张?
当然。假设I
和K
是两个视频帧,H
是I
到K
中的功能的单应映射功能。首先,根据H
,您将I
变形为K
,即您计算变形图像Iw
为Iw([x y]')=I(inv(H)[x y]')
(大致为Matlab表示法)。然后你看看平方或绝对差异图片Diff=(Iw-K)*(Iw-K)
。根据单应性H
移动的图像内容应该略有差异(假设图像之间的恒定照度和曝光)。违反H
如移动汽车的图像内容应该脱颖而出。
对于Diff
中的高误差像素组,我将从简单的阈值开始(“大于X的每个像素差异大于X是相关的”,可能使用自适应阈值)。阈值图像可以通过形态学操作(扩张,侵蚀)进行清理,并与连接的组件聚集在一起。这可能太简单了,但它很容易实现第一次尝试,而且应该很快。想看更多的东西请看Clustering in Wikipedia。 2D Gaussian Mixture Model可能很有趣;当你用前一帧的检测结果初始化它时,它应该非常快。
我对你提供的两个框架做了一个小实验,我不得不说我自己有多惊讶它有多好。 :-) 左图:您发布的两帧之间的差异(用颜色编码)。 右图:将它们与单应性匹配后的帧之间的差异。其余的区别显然是动车,而且它们对于简单的阈值处理来说足够强大。您当前使用的,可以野趣它与我的建议相结合的办法
思考:
- 你可以尝试在差分图像中学习和分类汽车
D
代替原始图像。这相当于学习汽车运动模式的外观,而不是汽车看起来像什么,这可能更可靠。
- 您可以摆脱昂贵的窗口搜索并仅在具有足够高价值的
D
区域运行分类器。
一些补充说明:
- 从理论上讲,汽车甚至应该站出来,如果他们不动,因为他们不是平的,而是给你的现场,相机的分辨率,这种影响可能是距离太微妙了。
- 如果您愿意,您可以使用Optical Flow替换我方案中的特征提取/匹配部分。这相当于识别从地面一致的帧到帧运动“伸出”的流向量。然而,它可能容易出现光流中的异常值。您也可以尝试从流向量中获得单应性。
- 这很重要:无论您使用哪种方法,一旦您在一个框架中找到了汽车,您应该使用此信息来使您在连续框架中搜索这些汽车的方式更具可操作性,从而提供更接近老旧(卡尔曼滤波器等)。这就是追踪的全部内容!
来源
2013-03-13 18:02:47
DCS
嗨DCS感谢您的回答,我想知道您是否可以扩展如何寻找不会根据估计的单应性移动的像素集群? – 2013-03-13 23:41:12
@JonoBrogan:我更新了我的帖子来回答你的问题。 – DCS 2013-03-14 08:25:18
@JonoBrogan:我做了一个关于你的框架的实验,它很好地工作,见上文。 – DCS 2013-03-14 08:41:50