目标检测(1)

图像预处理

常用的图像预处理过程都涉及到一些滤波的方法。由于图像在拍摄过程中往往会由传感器引入噪声,因此需要在目标分割前对图像进行预处理,来减除噪声的干扰,增强目标提取的效果。通常可采用低通滤波的方法来消除噪声。低通滤波既可在频域进行也可在时域进行。常见的频域低通滤波器有巴特沃兹低通滤波器和高斯低通滤波器。常见的空域低通滤波器主要有均值滤波器、加权均值滤波器和中值滤波器。

形态学方法

形态学原本代表的是生物学的一个学科,在这里介绍的是数学形态学。作为一种图像处理工具,它被用于对图像区域进行处理,以提取对于表示和描述有用的图像分量。下面要介绍的是图像处理中常用到的膨胀和腐蚀,以及开操作和闭操作。

运动目标检测方法

运动目标检测是指将运动区域从视频图像中分割出来。运动目标检测从视频图像序列中检测出运动目标,减小图像处理计算量,得到所需的目标信息,为后续的识别和跟踪奠定基础。由于运动目标的正确检测与否将直接影响后续的目标跟踪与分类效果,所以它也成为智能视频监控系统相关技术中深受关注的研究重点。

运动目标检测过程包括运动目标检测的预处理和运动目标的分割两大步。目前常用的运动目标检测方法有四种:背景差分法,光流法,边缘检测法等。

背景差分法

背景差分法简单易于实现,属于最受青睐的运动目标检测方法之一。它的基本思想是采用一定方法获取视频中背景图片并进行背景更新,然后通过当前帧与背景做差得到所加载视频中的前景目标,具体步骤如图2-3所示。


图 2背景差分算法框图

该算法包括读取视频、图像预处理、提取背景、背景差分、二值化和获取前景图片六部分组成。视频采集包括摄像器材的选择、光源的选择等:图像预处理是按照获取的视频参数,进行图像增强、滤波等操作来提高采集的视频质量;是否能提取完整、清晰的背景是该算法成败的关键,目前背景建模的方法很多,常用的有非线性中值滤波法、线性卡尔曼滤波法、帧间差分法、高斯混合模型等,但因一天中环境光照的变化、背景的多态性、运动目标自身的投影等原因,一般建模后的背景并非十分干净清晰,这也是目前研究中的一个难点。背景差分是用当前帧减去背景来获取视频中的运动目标,定义为视频中第k帧图片,B为背景图片,E为差分获取的前景图片,即背景差分为:

                                              (公式2-1

      

                                              (公式2-1

      

                                                                                               (公式2-2

             

                                                                                               (公式2-2

             

为了增强算法的抗噪声性,我们设置一个合适阈值对前景图片进行二值化处理,即:其中,为二值化后获取的最终前景图片,后续的边缘检测、行人识别和跟踪等操作均是对该图像进行处理。

综述所述,该方法具有较好实时性,也能提取出较完整的背景图片,但对背景的依赖性太强,这使得在背景变化较大的场景中,该方法准确性很低、近乎失效,而且该缺点是背景差分法本身的局限性,很难找到较好的改善方法。

2.2.2光流法

物体运动时其表面像素点的亮度也随之运动,在视频图像中表现为光流,对应图像中产生的瞬时速度场就是光流场。从光流中可以获得物体形状结构和运动状态信息。通常情况下,镜头运动、目标运动或二者的共同运动都会产生光流。光流的常用计算方法有两种:基于梯度的方法和基于匹配的方法。

(1)基于梯度的方法

梯度可以用于光流计算,由于其更为简单的计算过程和相对较好的实验结果,这类方法得到了广泛的应用。但由于受到可调参数、可靠性评价因子和预处理方法等因素的影响,在应用光流对目标进行检测与自动跟踪时仍存在很多问题。

(2)基于匹配的方法

这类方法主要采用基于区域的和基于特征的两种匹配方法。基于特征的匹配方法需要不断地获取目标特征对其进行检测和跟踪,对较大目标的运动和亮度变化比较敏感,但是得到的光流往往很稀疏,而且目标的特征提取与匹配也有相当难度;基于区域的匹配方法需要先定位相似区域的位置,然后通过相似区域和初始区域的比较来计算光流,基于区域的方法在网络视频传输编码中得到了大量运用,但其计算中的光流仍然稀疏。

光流法能够独立检测运动目标,而不需要场景的预设信息,并且能够检测动态场景下的运动情况。由于存在噪声干扰、光源分布、光照阴影、物体遮挡等因素,计算得到光流场分布的准确性易受影响;并且光流法的计算过程相对复杂、耗时更长,如果没有专业硬件支持加速,则难以实现实时的检测。

2.2.3边缘检测方法

图像的边缘为图像中灰度发生急剧变化的区域,边界分为阶跃状和屋顶状两种类型。图像的边缘一般对应一阶导数较大,二阶导数为零的点。常用到的边缘检测方法有 Robert 算子、Sobel 算子、Laplace 算子等。与相邻帧差法和背景差分法比较,边缘检测方法有利于邻近运动目标的区分和运动目标特征的提取,对背景噪声的鲁棒性很大,但其运算复杂度也相对较大。运动图像边缘的检测可以通过时间和空间上的差分来获得,空间上的差分可以使用已有的各种边缘检测算法,时间上的差分可以通过计算连续帧的差来获得,也可以通过计算当前图像与背景图像的差分图像,然后求其边缘来计算。


实验代码:

clear all;

close all;

clc;

fileinfo = aviinfo('test.avi');  % 读取视频文件, 'test.avi' 为待处理的视频文件,格式为.avi

numFrames = fileinfo.NumFrames;

clipframes = 150;    % 为了避免占用太多内存每次只读150帧

Clips = floor(numFrames/clipframes);

Fref = aviread('test.avi',10); %读取视频序列的第一帧作为参考背景图像

Iref =Fref.cdata; 

Threh = 15;   %设定阈值

se=strel('disk',5);   %定义一个结构元素

for m = 1:Clips

%计算影片剪辑开始和结束的帧指数m 

startframe = (m - 1)* clipframes + 1;

    if m == Clips

        endframe = numFrames -1;

    else

        endframe = m * clipframes; 

    end

%从AVI文件读第m个影片剪辑帧    

movclip =aviread('test.avi',[startframe:endframe]);

    for k = 1 :  (endframe - startframe +1)  

        Icurr = movclip(k).cdata; 

% 计算当前帧和参考帧之间的绝对差异

        Idiff = abs(double(rgb2gray(Iref)) - double(rgb2gray(Icurr)));

        % 利用threholding Idiff 检测运动目标

        Ifg = Idiff >Threh;

%在分割结果图像中用imopen形态学滤波,去掉噪声区域

        Ifg2 = imopen(Ifg,se);        

        figure(1);

        subplot(2,2,1), imshow(Icurr),title('当前图像'); 

        subplot(2,2,2), imshow(Ifg), title('图像的前景(移动物体) '); 

        subplot(2,2,3), imshow(Ifg2), title('利用形态学的开操作滤波'); 

        pause(0.01);       

    end

end


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值