4

我一直在研究一个项目一段时间,以检测和跟踪(移动)从无人机捕获的视频中的车辆,目前我正在使用一个SVM训练本地特征的袋特征表示从车辆和背景图像中提取。然后,我使用滑动窗口检测方法尝试对图像中的车辆进行本地化,然后我会跟踪这些车辆。问题是这种方法的速度很慢,我的探测器不如我想象的那么可靠,所以我得到了很多误报。车辆分割和跟踪

因此,我一直在考虑试图从背景中分割汽车以找到大致的位置,以便在应用分类器之前减少搜索空间,但我不知道如何解决此问题,并希望有人能够帮助?

此外,我一直在阅读有关使用图层进行运动分割的知识,使用光流技术通过流模型对帧进行分割,是否有人对此方法有任何经验,如果可以,请提供一些信息,将适用于我的问题。

下面是一个样本视频的两帧

帧0: enter image description here

框架5: enter image description here

回答

11

Assumimg你的车在移动,你可以尝试估计地平面(路)。

您可以通过提取特征(SURF而不是SIFT,速度),在帧对上匹配它们以及使用RANSAC求解单应性来获得下降地平面估计值,因为3d中的平面根据两者之间的单应性相机框架。

一旦你有了你的地平面,你可以通过查看不会根据估计的单应性移动的像素集群来识别汽车。

更复杂的方法是在地形上进行Motion from Motion结构。这只是假设它是刚性的,而不是平面的。


更新

我在想,如果你能,你将如何去寻找那些不根据估计的单应移动的像素集群扩张?

当然。假设IK是两个视频帧,HIK中的功能的单应映射功能。首先,根据H,您将I变形为K,即您计算变形图像IwIw([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可能很有趣;当你用前一帧的检测结果初始化它时,它应该非常快。

我对你提供的两个框架做了一个小实验,我不得不说我自己有多惊讶它有多好。 :-) 左图:您发布的两帧之间的差异(用颜色编码)。 右图:将它们与单应性匹配后的帧之间的差异。其余的区别显然是动车,而且它们对于简单的阈值处理来说足够强大。您当前使用的,可以野趣它与我的建议相结合的办法

Frame differences before and after image alignment

思考:

  • 你可以尝试在差分图像中学习和分类汽车D代替原始图像。这相当于学习汽车运动模式的外观,而不是汽车看起来像什么,这可能更可靠。
  • 您可以摆脱昂贵的窗口搜索并仅在具有足够高价值的D区域运行分类器。

一些补充说明:

  • 从理论上讲,汽车甚至应该站出来,如果他们不动,因为他们不是平的,而是给你的现场,相机的分辨率,这种影响可能是距离太微妙了。
  • 如果您愿意,您可以使用Optical Flow替换我方案中的特征提取/匹配部分。这相当于识别从地面一致的帧到帧运动“伸出”的流向量。然而,它可能容易出现光流中的异常值。您也可以尝试从流向量中获得单应性。
  • 这很重要:无论您使用哪种方法,一旦您在一个框架中找到了汽车,您应该使用此信息来使您在连续框架中搜索这些汽车的方式更具可操作性,从而提供更接近老旧(卡尔曼滤波器等)。这就是追踪的全部内容!
+0

嗨DCS感谢您的回答,我想知道您是否可以扩展如何寻找不会根据估计的单应性移动的像素集群? – 2013-03-13 23:41:12

+0

@JonoBrogan:我更新了我的帖子来回答你的问题。 – DCS 2013-03-14 08:25:18

+0

@JonoBrogan:我做了一个关于你的框架的实验,它很好地工作,见上文。 – DCS 2013-03-14 08:41:50

1
  1. 如果汽车在你的视野的数量始终保持不变,但走动,那么你可以使用光流...它会给你很好的效果对静止背景......如果数量的汽车正在改变,那么你需要在OpenCV中调用GoodFeaturestoTrack函数,并在一定数量的帧后再次使用光流跟踪汽车。
  2. 您可以使用背景建模来为背景建模,因此汽车始终是您的前景。最简单的示例是帧差异...减去之前的帧当前帧。 diff(x,y,k) = I(x,y,k) - I(x,y,k-1)。当您的汽车在每个车架中移动时,您将获得他们的位置。
  3. 这两个过程将正常工作,因为你有我仍然背景我想.. check this link找到光流可以做什么。