• 大小: 4KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-16
  • 语言: Matlab
  • 标签: 目标检测  

资源简介

该方法是利用均值法进行背景建模,利用背景减除法达到运动目标,能够比较好的检测到运动目标。

资源截图

代码片段和文件信息

%用下面这段程序更新视频背景,为什么显示的图像是倒着的啊???有matlab高手进来指点下啊。。。
%背景减除法,平均值法?
function x = MovingDetect
%初始化背景所需要的帧数
N=30;
%背景更新参数
p1 = 95;
p2 = 100-p1;
M_ = 1;
%读取AVI视频文件
mov = aviread(‘C:\Users\yanghong\Desktop\1.avi‘);
%获取视频帧数
dimension = size(mov);
frameQTY = dimension(2);
M=mov;
tmFr = rgb2gray(frame2im(mov(1)));
s = size(tmFr);
%%%%%%%%%%遍历视频帧,转换为灰度图
%%%%%%%%%%%for i = 1 : frameQTY
%%%%%%%%%%%       img=frame2im(mov(i));
%%%%%%%%%%%       img=rgb2gray(img);
%%%%%%%%%%%%       M(i)=im2frame(img gray(256));
%%%%%%%%%%%%%end
scrsz = get(0‘ScreenSize‘);
%%%%%%%%%%%%%逐帧播放视频
h1 = figure(‘position‘ [scrsz(4)/2scrsz(4)/2s(2)*2s(1)*2]);
%%%%%%%%%%%%%h2 = figure;
%%%%%%%%%%%%%%imshow( M(1).cdata );
%%%%%%%%%%%%%%paintByMouse( h1 );
cdataSum = int16(zeros(s));%平均值为0,16位数值
sedisk = strel(‘rectangle‘[22]);%创建一个矩形窗口
sedisk2 = strel(‘rectangle‘[32]);%创建一个矩形窗口
count = zeros(s);%s均值为0赋给count
for c1 = 1:frameQTY;
colorFrC = M(c1);%获取第i帧
frC = rgb2gray(frame2im(colorFrC));
frC = im2frame(frC gray(256));
f = int16(frC.cdata);%数值f
if( c1<= N)
%前N帧用于背景建模
%%%%%%%%%%%%%%%movie(h2 frC 1 15);%播放第i帧
%movie(h1 frC 1 15 [0s(1)00]);%播放第i帧
cdataSum = cdataSum + f;%f是灰度变换后的图像数据,
else
%开始运动检测,首先计算出背景
if(c1==N+1)cdB = cdataSum/N;
else cdB = int16(cdB);%整数16位的
end
%%%%%%%%%%%%%%%cdB = uint8(cdataB);
%运动检测
%%%%%%%%%%%%%%        for i = 1 : 240
%%%%%%%%%%%%%%            for j = 1 : 320
%%%%%%%%%%%%%%                if( (f(ij) - cdB(ij))>30 | (cdB(ij)-f(ij))>30 )
%%%%%%%%%%%%%%                    f(ij) = 255;     
%%%%%%%%%%%%%%                else 
%%%%%%%%%%%%%%                    f(ij)= 0;%0=black      
%                    %背景更新
%%%%%%%%%%%%%%                    cdB(i j) = (9*cdB(i j) + f(i j))/10;
                               %                end
%%%%%%%%%%%%%%            end
%%%%%%%%%%%%%%        end
%%%%%%%%%%%%

评论

共有 条评论