连通区域合并问题【2】


上一篇文章提了连通区域合并的问题。

扫描一帧图像的每一个联通区轮廓,对于满足一定要求的连通区域进行合并。

这个问题的背景是我要做一个道路场景下车辆检测跟踪。通过运动目标检测提取出运动前景,运动前景foremask中车辆的区域不完整,可能被分成很多小块,也有小块的前景可能是行人或者机动车。所以要对临近的联通区的颜色特征进行统计,满足颜色,距离要求的联通区需要被合并,认为是一个车辆目标。

想到了两个办法,一个是对提取出来的轮廓替换成该轮廓的凸包 (convex hull),把凸包画在二值图mask上,再对新画出来的mask做轮廓提取;第二个办法是一旦发现两个满足合并条件的轮廓,以这两个轮廓的重心为端点,在mask上画一条线,就可以把这两个联通区合成一个,全部检查完合并条件画好之后,对新的mask重新进行轮廓提取,新的轮廓就是目标了。

a. convex hull 的问题出现在有时相邻的车辆联通区和小的汽车人联通区会在画凸包的时候就被画在了一起。

b. 连线的方法,当出现某些连通区域为凹区域,重心不在连通区域内,会起不到作用。


其实这两个方法是不矛盾的,这两种方法可以同时用。有了对颜色信息考虑,凸包+连线的效果比原来好了不少,而且凸包避免了上面提到的连线的问题。但是因为前面只做了通过帧间比较来检测运动,背景更新,得到的前景模板是很粗燥的。现在打算用光流法对前景提取再做一下。

我还希望能够在车辆进入画面的时候就能够准确的识别出来,或者是识别车辆的某个特征点(现在考虑应该是车头),然后用openTLD的方法对车辆进行跟踪,这样对于车辆目标的定位会准确一些,不会把汽车人和行人也误当做车辆,而且不会出现我现在一两车被分成好几个联通区,一辆车多个框表示。


下面把对foremask模板寻找轮廓,替换成凸包,判断合并条件,画线合并的代码贴出来。


// ************************* Find Contours *************************************
			stor = cvCreateMemStorage(0);
			CvContourScanner scanner = cvSt
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值