基于平均背景建模的运动目标检测(二)
来源:互联网 发布:邮箱服务器搭建软件 编辑:程序博客网 时间:2024/05/17 03:46
参考《学习OPENCV》,其去除帧间噪声的方式采用的是对二值图像进行形态学处理(开操作和闭操作),相比较我之前采用的灰度图像去噪方式相比更加直接且有效。
开操作是先腐蚀后膨胀,通常用于去除图像中较小的明亮细节,而保持整体灰度级和较大的明亮特征不变。闭操作是先膨胀后腐蚀,通常用于填充图像中明亮部分的小裂缝。一般去噪则采用开操作+闭操作,首先去除小噪声,其后再修复被腐蚀的明亮区域。
在检测过的二值化图像后采用如下代码:
cvMorphologyEx(Imask,Imask,0,ker,CV_MOP_OPEN,CVCLOSE_ITR);cvMorphologyEx(Imask,Imask,0,ker,CV_MOP_CLOSE,CVCLOSE_ITR);
CVCLOSE_ITR代表腐蚀或者膨胀的次数,迭代次数越多,消除的杂斑越大,但同时代价是侵蚀了较大的边界区域,如下分别是CVCLOSE_ITR=1,CVCLOSE_ITR=2的处理结果
CVCLOSE_ITR=1,大部分噪声去除了,但还是有一些较大块的噪声
CVCLOSE_ITR=2,噪声全部消除(当然只针对此帧而言)
消除噪声后,对检测到的目标进行轮廓计算,目标轮廓检测可以更方便知道目标的位置、大小信息,采用边界框可视化效果更好。
轮廓检测opencv函数:
CvContourScanner scanner = cvStartFindContours(Imask,mem_storage,sizeof(CvContour),CV_RETR_EXTERNAL,CV_CHAIN_APPROX_SIMPLE);
可以理解为检测Imask图像中的外轮廓(而非洞,即内轮廓),并将轮廓点的信息保存至scanner
对于较小的轮廓,可认为是噪声,可通过轮廓周长对其进行筛选:
double len = cvContourPerimeter(c); //轮廓长度double q = (Imask->height+Imask->width)/4; //图像周长的1/4
通过比较两个参数,可以筛选出轮廓周长大于图像周长1/4的轮廓。
对轮廓进行多边形拟合:
CvSeq *c_new = cvApproxPoly(c,sizeof(CvContour),mem_storage,CV_POLY_APPROX_DP,0,0);
用cvBoundingRect函数可以获得轮廓的外接矩形,这些《学习opencv》书上都有。
cvDrawContours(Imask,c,cvScalar(255),cvScalar(255),-1,2,8);cvRectangle(Imask,cvPoint(rect.x,rect.y),cvPoint(rect.x+rect.width,rect.y+rect.height),cvScalar(255),1,8,0);
最终从实验结果中随机截图出几帧:
可以看出,暂时不论受噪声干扰,帧间差分法用来检测运动目标是有一定效果的,整个算法十分简单。但其也有着明显的不足:就是目标检测不完整!由于同物相减为0,在重叠区域会出现缺口。
此外,它也不能区别目标物体离开的位置(空穴,或者上一帧的位置)和目标现在的位置。
- 基于平均背景建模的运动目标检测(二)
- 基于平均背景建模的运动目标检测
- 基于codebook背景建模的运动目标检测
- 混合高斯背景建模-视频的运动目标检测
- 运动目标检测_单高斯背景建模
- OpenCV_基于自适应背景更新的运动目标检测
- 基于自组织背景减除的运动目标检测算法
- OpenCV_基于自适应背景更新的运动目标检测
- 【OPENCV】基于背景差法的运动目标检测
- 运动背景下的运动目标检测
- 基于样本一致性的背景减除运动目标检测算法(SACON)
- 基于样本一致性的背景减除运动目标检测算法(SACON)
- 基于样本一致性的背景减除运动目标检测算法(SACON)
- 【计算机视觉】基于样本一致性的背景减除运动目标检测算法(SACON)
- 运动目标检测_混合高斯背景建模
- 动态背景下的运动目标检测
- 运动目标检测--改进的背景减法
- 运动目标检测--改进的背景减法
- 从头开始学java<三>
- EasyUI datagrid动态加载json数据
- okhttp的总结
- Spark API
- WPF教程(三十三)数据绑定简介
- 基于平均背景建模的运动目标检测(二)
- 阻塞与非阻塞的区别
- Helpful Maths
- window下python3.5安装lxml
- SAMPLEAPP 程序主要说明
- 字符串,字符数组
- #include< >和#include""的区别
- DOM对标签的增删改
- jQuery EasyUI datagrid列名包含特殊字符会导致表格错位