全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
3599 0
2011-04-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帧中的目标图像
附件列表

WalkingMan.rar

大小:605.65 KB

只需: 3 个论坛币  马上下载

本附件包括:

  • WalkingMan.avi

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群