运动检测-时间差分法

原理:

时间差分法其实就是让视频的两帧做差,从而得到变化的像素,再取一个阈值,小于阈值的变化值忽略,大于阈值的变化值保留下来。它的优点就是算法简单,速度快。

本程序中,阈值是通过多次实验得到的一个针对本视频比较好的一个值,这种方法自适应性比较差,这也是它的一个缺点。代码如下:

%本程序是主程序,用于实现时间差分法进行运行检测

path='e:\test-pic\hall.yuv';
start=1;
stop=30;
yuvx=288;
yuvy=352;
pic1=rgb2gray(loadYUV(path,yuvx,yuvy,start,1));


%%%%%%%%%%%%%%%%%%
%构建高斯滤波算子
%%%%%%%%%%%%%%%%%%
sigma=1;
Gx=floor(3*sigma+0.5);
x=-1*Gx:1*Gx;
y=x;
[x,y]=meshgrid(x,y);
z=1/(2*pi*sigma^2)*exp(-1*(x.^2+y.^2)/(2*sigma.^2));
    %高斯算子归一化
z_sum=sum(sum(z));
z=z/z_sum;
mesh(z);
pic1=filter2(z,pic1);

%求时间图像
for i=2:stop-start
    pic2_rgb=loadYUV(path,yuvx,yuvy,start+i,1);
    pic2=rgb2gray(pic2_rgb);
    pic2=filter2(z,pic2);
    picmove=abs(pic2-pic1);
    pic1=pic2;
    
    picmove(picmove<20)=0;
    picmove(picmove>20)=255;
    
    %显示
    figure(1);
    str=strcat('第',num2str(start+i),'帧');
    %text(1,1);
    subplot(1,2,1);
    imshow(pic2_rgb);
    title(str);
    
    subplot(1,2,2);
    imshow(uint8(picmove));
    pause(0.03);
end

实验效果图如下,这是一个监控的图像,背景是固定的,画面中只有人是移动的,可以看出,摄像头固定的情况下,时间差分法还是比较理想的。







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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大指挥官

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值