Jon*_*gan 4 opencv tracking classification object-detection image-segmentation
我已经在一个项目上工作了一段时间,检测和跟踪(移动)从无人机捕获的视频中的车辆,目前我使用的SVM训练有从车辆和背景图像中提取的局部特征的特征包表示.然后我使用滑动窗口检测方法来尝试和定位图像中的车辆,然后我想跟踪.问题是这种方法很慢,我的探测器不如我想的那么可靠,所以我得到了很多误报.
所以我一直在考虑尝试从后台分割汽车以找到大致的位置,以便在应用我的分类器之前减少搜索空间,但我不知道如何去做,并希望有人可以提供帮助?
另外,我一直在阅读有关层的运动分割,使用光流通过流动模型对帧进行分割,是否有人对此方法有任何经验,如果可以,您可以提供一些输入,因为您是否认为此方法适用于我的问题.
以下是示例视频中的两帧
DCS*_*DCS 11
假设您的汽车正在移动,您可以尝试估算地平面(道路).
您可以通过提取特征(SURF而不是SIFT,速度),在帧对上匹配它们以及使用RANSAC求解单应性来获得下降地平面估计,因为3d中的平面根据两个相机帧之间的单应性移动.
一旦有了地平面,就可以通过查看根据估计的单应性不移动的像素簇来识别汽车.
更复杂的方法是在地形上进行结构运动.这仅仅预示它是刚性的,而不是它是平面的.
更新
我想知道你是否可以扩展如何根据估计的单应性来寻找不移动的像素簇?
当然.说I
和K
是两个视频帧和H
是单应性映射功能中I
,以功能K
.首先,翘曲I
到K
根据H
,即您计算扭曲图像Iw
作为Iw( [x y]' )=I( inv(H)[x y]' )
(大致Matlab的符号).然后你看看平方或绝对差异图像Diff=(Iw-K)*(Iw-K)
.根据单H
应性移动的图像内容应该给出小的差异(假设图像之间的恒定照明和曝光).违反H
移动车等图像内容应该脱颖而出.
对于Diff
I中的高误差像素组的聚类,将从简单的阈值开始(" Diff
大于X的每个像素差异是相关的",可能使用自适应阈值).阈值图像可以通过形态学操作(扩张,侵蚀)进行清理,并与连接的组件聚集在一起.这可能过于简单了,但是第一次尝试很容易实现,而且应该很快.对于更加花哨的东西,请看维基百科中的聚类.2D 高斯混合模型可能很有趣; 当你使用前一帧的检测结果初始化它时,它应该非常快.
我用你提供的两个框架进行了一些实验,我不得不说我对它的工作原理有些惊讶.:-) 左图:您发布的两帧之间的差异(颜色编码).右图:将它们与单应性匹配后的帧之间的差异.剩下的差异显然是移动的汽车,它们足够强大,可以进行简单的阈值处理.
考虑到您目前使用的方法,可能需要将其与我的建议相结合:
D
而不是原始图像.这相当于学习汽车运动模式的样子,而不是汽车的样子,这可能更可靠.D
具有足够高价值的区域运行分类器.一些补充说明:
归档时间: |
|
查看次数: |
2182 次 |
最近记录: |