博主简介: 专注、专一于Matlab图像处理学习、交流,matlab图像代码代做/项目合作可以联系(QQ:3249726188)
个人主页:Matlab_ImagePro-CSDN博客
原则:代码均由本人编写完成,非中介,提供有偿Matlab算法代码编程服务,不从事不违反涉及学术原则的事。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
本次分享的是基于背景差法的运动目标检测(车辆检测)算法,用matlab实现。(有疑问或者想交流细节的QQ:3249726188)
一、案例背景介绍
运动目标检测也是图像处理领域一个常见的课题,接下来,博主将介绍常见的运动目标检测、跟踪相关的算法。这次介绍的运动目标检测领域的其中一个经典算法:基于背景差法的运动目标检测(车辆检测)算法。
二、算法模型原理介绍
背景差法是采用图像序列中的当前帧和背景参考模型比较来检测运动物体的一种方法。背景差分法是采用图像序列中的当前帧和背景参考模型比较来检测运动物体的一种方法,其性能依赖于所使用的背景建模技术。在基于背景差分方法的运动目标检测中,背景图像的建模和模拟的准确程度,直接影响到检测的效果。不论任何运动目标检测算法,都要尽可能的满足任何图像场景的处理要求,但是由于场景的复杂性以及各种环境干扰和噪声的存在,如光照的突然变化、实际背景图像中有些物体的波动、摄像机的抖动、运动物体进出场景对原场景的影响等,使得背景的建模和模拟变得比较困难。背景差分法检测运动目标速度快,检测准确,易于实现,其关键是背景图像的获取。在实际应用中,静止背景是不易直接获得的,同时,由于背景图像的动态变化,需要通过视频序列的帧间信息来估计和恢复背景,即背景重建,所以要选择性的更新背景。常见的背景建模方法有:
(1)中值法背景建模:顾名思义,就是在一段时间内,取连续N帧图像序列,把这N帧图像序列中对应位置的像素点灰度值按从小到大排列,然后取中间值作为背景图像中对应像素点的灰度值;
(2)均值法背景建模:均值法建模算法非常简单,就是对一些连续帧取像素平均值。这种算法速度很快,但对环境光照变化和一些动态背景变化比较敏感。其基本思想是,在视频图像中取连续N帧,计算这N帧图像像素灰度值的平均值来作为背景图像的像素灰度值;
(3)卡尔曼滤波器模型:该算法把背景认为是一种稳态的系统,把前景图像认为是一种噪声,用基于Kalman滤波理论的时域递归低通滤波来预测变化缓慢的背景图像,这样既可以不断地用前景图像更新背景,又可以维持背景的稳定性消除噪声的干扰;
(4)单高斯分布模型:其基本思想是,将图像中每一个像素点的灰度值看成是一个随机过程X,并假设该点的某一像素灰度值出现的概率服从高斯分布,用数学形式表示为:
(5)多高斯分布模型:将背景图像的每一个像素点按多个高斯分布的叠加来建模,每种高斯分布可以表示一种背景场景,这样的话,多个高斯模型混合使用就可以模拟出复杂场景中的多模态情形。
一句话概括,各种背景建模方法就是为了获取适应对应视频的背景帧,方便后续获取视频帧中的运动物体。本次案例的测试视频前面是静态背景,可以直接获取对应背景帧或者用中值法提取。
三、算法流程
1、读取视频文件,直接获取前面静态背景作为背景帧(或用中值法提取背景帧),并灰度化处理
2、逐一读取视频帧,灰度化后,与背景帧相互做差值,得到两个背景差帧
3、对两个背景差帧二值化,并叠加,得到背景差的初步目标二值图
4、对初步二值图进行形态学膨胀、腐蚀、去噪等处理,得到最终的目标二值图
5、根据目标二值图对运动物体进行定位,检测完成。
算法原理不算复杂,下面看看matlab的实现效果。
四、matlab实现效果
1、获取背景帧
2、获取目标帧图像
3、差值处理
4、二值化处理
5、初步二值图
6、形态学处理,得到最终二值图
上述是整个检测过程,下面看看整个视频帧处理的效果:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
专注、专一于Matlab图像处理学习、交流、代做
QQ:3249726188