三帧差分法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

三帧差分法的问题

大家帮忙看看这个三帧差分法的代码哪里出了问题?参照论坛上的相邻帧差法,改造成三帧差分法。

clc;

clear;

targetavi='SampleVideo.avi'; %%原始视频

resultavi='result.avi'; %%检测结果视频%%%%%%%%%%%%%%%%%%%%%%读取视频

mov=aviread(targetavi);

%mov=mmreader(targetavi);

fnum=size(mov,2);

%%%%%%%%%%%%%%%%%%%%%%建立结果视频

aviobj = avifile(resultavi);

aviobj.Quality = 100;

aviobj.Fps = 15;

%pression='Indeo5';

pression='None';

%%%%%%%%%%%%%%%%%%%%%%帧间差分法

for i=2:fnum

x=mov(i-1).cdata(:,:,:);

y=mov(i).cdata(:,:,:);

z=mov(i+1).cdata(:,:,:);

m=rgb2gray(x);

m=medfilt2(m);

n=rgb2gray(y);

n=medfilt2(n);

o=rgb2gray(z);

o=medfilt2(o);

q=im2double(n);

w=im2double(m);

p=im2double(o);

c=q-w;%%前两帧差分

b=p-q;%%后两帧差分

t=40; %%阈值,此值可以调节

t=t/256;%%转化为double型数据

k=find(abs(c)>=t);%%find函数作用是找到图c中的值大于t的点坐标

d=find(abs(b)>=t);%%find函数作用是找到图b中的值大于t的点坐标

c(k)=255;%%二值化的一

b(d)=255;

k=find(abs(c)

d=find(abs(b)

c(k)=0;%%二值化的零

b(d)=0;

f=c&b;

imshow(f);

adata=cat(3,f,f,f);%%灰度图像生成视频必加此句

aviobj = addframe(aviobj,adata);%%生成视频

hold on;

drawnow;

hold off;

end

aviobj=close(aviobj);

显示的错误提示:

??? Error using ==> avifile.addframe>getInputType at 384

Invalid input argument. Each frame must be a numeric matrix, a MA TLAB movie structure, or a handle to a figure

or axis.

Error in ==> avifile.addframe at 58

inputType = getInputType(varargin{i});

Error in ==> ThreeFrameDifference at 61

aviobj = addframe(aviobj,adata);%%生成视频

TOP

Matlab中文函数大全上线,欢迎大

家完善!点

相关文档
最新文档