基于背景差法的运动目标检测(车辆检测),Matlab实现

        博主简介: 专注、专一于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

  • 19
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
背景差法是一种简单直观的运动目标检测方法,可以通过对当前帧图像和背景图像进行差分运算,得到前景物体。Matlab中可以使用`vision.ForegroundDetector`函数进行背景差法目标检测。 首先,需要准备背景图像。可以使用视频序列的前几帧或者一段时间内的平均帧作为背景图像。然后,将每一帧图像与背景图像进行差分运算,得到前景物体。可以通过调整阈值来控制前景物体的提取强度。 下面是一个简单的示例代码: ```matlab % 读取视频序列 videoReader = VideoReader('example.avi'); % 获取背景图像 background = read(videoReader); for i = 2 : 50 frame = read(videoReader); background = max(background, frame); end % 创建背景检测器 detector = vision.ForegroundDetector('NumFrames', 5, 'InitialVariance', 30); % 检测前景物体 while hasFrame(videoReader) frame = readFrame(videoReader); foreground = detector.step(frame); % 显示结果 imshow(foreground); end ``` 在上面的代码中,首先读取视频序列并获取背景图像。然后创建`vision.ForegroundDetector`对象,并使用`step`函数对每一帧图像进行前景检测。最后,在每一帧图像上显示前景物体的结果。 需要注意的是,背景差法虽然简单直观,但是对于光照变化、阴影等因素会产生干扰,可能会导致误检测或漏检。因此,需要结合其他方法进行运动目标检测,提高检测的准确性和鲁棒性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值