运动检测方法-帧间差分

1.帧间差分
帧间差分方法利用图像序列中相邻两帧或者三帧图像对应像素值相减,然后取差值图像进行阈值化处理提取出图像中的运动区域【1】

2.matlab代码实现

%帧间差分法
close all;
clear all;
clc;
avi=VideoReader('highway.avi');                           %使用MMREADER方法读入视频流,抛弃aviread方法
VidFrames=read(avi,[1000,1050]);   %read interframes from 1000 to 1050
N=1;                                             %考虑N帧的帧间差分法
start=10;                                        %起始帧
threshold=20;   %appropriate threshold is important for the method of interframedifference

for k=1+start:N+1+start   %read interframes from 11 to 15
    figure(k)
    imshow(VidFrames(:,:,:,k));
    mov(k).cdata=rgb2gray(VidFrames(:,:,:,k));      %将彩色图像转换为灰度图像;
end
  [row,col]=size(mov(1+start).cdata);            %以mov(1+start).cdata的格式生成一个矩阵

  alldiff=zeros(row,col,N);                       %生成一个三维的矩阵alldiff用于存储最终的各个帧的差分结果        

for k=1+start:N+start
  diff=abs(mov(k).cdata-mov(k+1).cdata);           %邻帧差分
  idiff=diff<threshold;                           %二值化,idiff中的数据位逻辑值,diff中的数值为unit8
  alldiff(:,:,k)=double(idiff);           
end

%观察结果
i=1;
for k=1+start:N+start
    figure(i);
    imshow(alldiff(:,:,k))
    title(strcat(num2str(k),'帧','-',num2str(k+1),'帧'));  %strcat:concatenate strings horizontally
    i=i+1;
end




3.优缺点

优点:

  • 帧间差分方法简单、运算量小且易于实现。
  • 帧间差分方法进行运动目标检测可以较强地适应动态环境的变化,有效地去除系统误差和噪声的影响,对场景中光照的变化不敏感而且不易受阴影的影响。

缺点:

  • 不能完全提取所有相关的特征像素点,也不能得到运动目标的完整轮廓,只能得到运动区域的大致轮廓;
  • 检测到的区域大小受物体的运动速度制约:对快速运动的物体,需要选择较小的时间间隔,如果选择不合适,当物体在前后两帧中没有重叠时,会被检测为两个分开的物体;对于慢速运动的物体,应该选择较大的时间差,如果时间选择不适当,当物体在前后两帧中几乎完全重叠时,则检测不到物体。
  • 容易在运动实体内部差生空洞现象。

4.参考文献

【1】http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=732851

【2】http://blog.csdn.net/xingor/article/details/50711478

【3】李杰. 视频序列中运动目标检测跟踪算法研究[D]. 西南交通大学, 2010.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值