AVI视频中运动目标检测的matlab实现

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

%--------------------------------------------------------------------------
% 基于中位数算法的运动目标检测
% 第1种实现方法
%--------------------------------------------------------------------------
%*******************************读取视频数据******************************** % 调用aviread函数读取视频文件
vid = aviread('WalkingMan.avi')
size(vid(1).cdata) % 查看第1帧的大小,也是每一帧的大小
vid(1).colormap % 查看第1帧的colormap值
%*****************************数据类型的转换******************************** % 把vid的cdata字段的取值转换成一个240×360×3×80的四维数组IM
IM = cat(4,vid.cdata);
size(IM) % 查看IM的大小
[m,n,k,h] = size(IM); % 把IM的大小赋给四个变量
% 把IM转换成一个80行,240×360×3列的矩阵
I = reshape(IM,[m*n*k,h])';
%********************调用median函数求中位数,进行视频图像分割**************** I = median(I); % 求I矩阵中各列元素的中位数
I = reshape(I,[m,n,k]); % 将向量I转成240×360×3的三维数组,得到背景图像 figure; % 新建一个图形窗口
imshow(I); % 显示背景图像
figure; % 新建一个图形窗口
imshow(IM(:,:,:,1) - I); % 显示第1帧中的目标图像
%--------------------------------------------------------------------------
% 基于中位数算法的运动目标检测
% 第1种实现方法
%--------------------------------------------------------------------------
% 调用mmreader函数创建读取视频文件的多媒体阅读对象WalkManObj
WalkManObj = mmreader('WalkingMan.avi');
% 根据多媒体阅读对象WalkManObj,读取视频的各帧图像数据
IM = read(WalkManObj, [1, inf]);
[m,n,k,h] = size(IM); % 把IM的大小赋给四个变量
% 把IM转换成一个80行,240×360×3列的矩阵
I = reshape(IM,[m*n*k,h])';
I = median(I); % 求I矩阵中各列元素的中位数
I = reshape(I,[m,n,k]); % 将向量I转成240×360×3的三维数组,得到背景图像 figure; % 新建一个图形窗口
imshow(I); % 显示背景图像
figure; % 新建一个图形窗口
imshow(IM(:,:,:,1) - I); % 显示第1帧中的目标图像
如下图效果。

相关文档
最新文档