• 大小: 77.87MB
    文件类型: .zip
    金币: 2
    下载: 0 次
    发布日期: 2024-02-01
  • 语言: Matlab
  • 标签: matlab_2019  HIT  weihai  

资源简介

哈尔滨工业大学(威海)数字图像处理课程设计,在matlab2019平台上搭建的程序。设计了matlab_GUI界面便于用户操作,每一个按键对应一种程序,可以参考。压缩包里还有一些自己收藏的运动视频可以后续检测用。运行程序时需要更改电脑摄像头参数,值得注意。

资源截图

代码片段和文件信息

clc;clear all;
close all;

%%
N=5;                                           %初始化背景所需要的帧数
mov = VideoReader(‘sample.avi‘);                %读取AVI视频文件
vidframes=read(mov);
frameQTY = get(mov ‘numberOfframes‘);          %获取视频的所有帧数
tmFr = vidframes(: : : 1);         %变成灰度图
[MRMCDim] = size(tmFr);             %读出二值图像的大小

% 计算背景图片
Imzero = zeros(MRMC3);  % 背景初始化 生成MR×MC×3全零阵或数组

% 初始化Kalman滤波器
R=[[0.28450.0045]‘[0.00450.0455]‘];      %观察协方差矩阵
H=[[10]‘[01]‘[00]‘[00]‘];            %测量矩阵
Q=0.01*eye(4);                              %系统协方差矩阵 eye生成单位阵,例 s=eye(n) 返回n*n单位矩阵
P = 100*eye(4);                             %上一时刻的预测估计协方差矩阵
dt=10;
A=[[1000]‘[0100]‘[dt010]‘[0dt01]‘];  %从时刻k到k+1的状态xx(k-1:)的跃迁矩阵
g = 1;                                              % pixels^2/time step
Bu = [000g]‘;           %外界高斯白噪声,由前一帧预测当前帧的预测值时,Bu影响预测值的幅度.
kfinit=0;
x=zeros(1004);

% 循环所有图片loop over all video
for i = 1 : frameQTY
    % load image
    Im = vidframes(: : : i);
    imshow(Im);
    if(i <= N)
        Imzero = Imzero + double(Im);
    else
        %开始运动检测,首先计算出背景
        if(i == N+1)
            Imback = Imzero/N;
        else
            f1 = double(vidframes(: : : i-1));
            Imzero = Imzero + double(Im) - f1;   %背景更新
            Imback = Imzero/N;
        end
        
        Imwork = double(Im);
        
        %extract center
        [cc(i)cr(i)whflag]=extractball(ImworkImbacki);
        if flag==0
            continue
        end
        
        hold on
        % center 的实际轨迹
        plot(cc(i)cr(i)‘g.‘) %  球的质心(cc(i)cr(i))以绿点表示
        %从点(cc(i)-radiuscr(i)-radius)开始绘制一个矩形,宽度为2*radius 长度为2*radius.其质心(cc(i)cr(i))
        rectangle(‘Position‘[cc(i)-w/2cr(i)-h/2wh] ‘edgecolor‘‘green‘);    %rectangle函数创建一个二维对象,从点(xy)开始绘制一个宽w高h的矩形,对坐标轴数据单元指定值。
        
        % 更新kalman滤波器
        if kfinit==0
            xp = [MC/2MR/200]‘ ;      %初始的预测状态
        else
            xp=A*x(i-1:)‘ + Bu   ;      %预测未来状态
        end
        kfinit=1;
        PP = A*P*A‘ + Q  ;   %预测估计协方差矩阵
        K = PP*H‘*inv(H*PP*H‘+R)  %增益 Inv 矩阵求逆
        x(i:) = (xp + K*([cc(i)cr(i)]‘ - H*xp))‘;  %修正状态即更新后的状态。 x(n:); 获取矩阵的第n行;x(:n); 获取矩阵的第n列
        P = (eye(4)-K*H)*PP ;  %修正误差即更新后的协方差
        
        % kalman预测的区域
        hold on
        plot(x(i1)x(i2)‘r.‘) %预测的运动目标质心(x(i1)x(i2))以红点表示
        rectangle(‘Position‘[x(i1)-w/2x(i2)-h/2wh] ‘edgecolor‘‘red‘);        
        pause(0.1);
    end    
end
%%  关闭
%close all; 
xp=cc;
yp=cr;
xf=x(:1);
yf=x(:2);
xp(xp==0)=[];
yp(yp==0)=[];
xf(xf==0)=[];
yf(yf==0)=[];


plot(xfyf‘g--‘);
hold on
plot(xpyp‘r:‘);
hold on
legend(‘物体实际运动‘‘卡尔曼滤波后曲线‘);


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-07-16 11:06  matlab程序\
     文件        3040  2019-07-09 13:38  matlab程序\Detect_Tracking.m
     文件        1928  2019-07-09 13:40  matlab程序\extractball.m
     文件       44951  2019-07-16 09:58  matlab程序\Moving_target.fig
     文件       14064  2019-07-16 09:58  matlab程序\Moving_target.m
     文件        1945  2019-07-04 09:34  matlab程序\yuandian.m
     文件         621  2019-07-04 15:13  matlab程序\zhixin.m
     文件     1144320  2019-07-16 11:02  数字图像处理课程设计报告(运动目标检测).doc
     目录           0  2019-07-16 11:07  视频\
     目录           0  2019-07-16 11:07  视频\run\
     文件     3269120  2005-04-11 19:03  视频\run\daria_run.avi
     文件     3191296  2005-04-11 18:32  视频\run\denis_run.avi
     文件     5991424  2005-07-31 10:37  视频\run\eli_run.avi
     文件     2802688  2005-04-11 19:09  视频\run\ido_run.avi
     文件     4358144  2005-04-11 19:11  视频\run\ira_run.avi
     文件     4124672  2005-07-31 10:47  视频\run\lena_run1.avi
     文件     4435968  2005-07-31 10:47  视频\run\lena_run2.avi
     文件     2802688  2005-04-11 19:41  视频\run\lyova_run.avi
     文件     5058048  2005-07-31 10:47  视频\run\moshe_run.avi
     文件     5291520  2005-07-31 10:47  视频\run\shahar_run.avi
     目录           0  2019-07-16 11:07  视频\walk\
     文件     6536192  2005-04-11 19:03  视频\walk\daria_walk.avi
     文件     5291520  2005-04-11 19:05  视频\walk\denis_walk.avi
     文件     7936512  2005-07-31 10:47  视频\walk\eli_walk.avi
     文件     3346944  2005-04-11 19:09  视频\walk\ido_walk.avi
     文件     6847488  2005-04-11 19:11  视频\walk\ira_walk.avi
     文件     9336320  2005-08-01 10:44  视频\walk\lena_walk1.avi
     文件     8792064  2005-07-31 10:49  视频\walk\lena_walk2.avi
     文件     3891712  2005-04-11 19:42  视频\walk\lyova_walk.avi
     文件     8714240  2005-07-31 10:50  视频\walk\moshe_walk.avi
     文件     9414144  2005-07-31 10:50  视频\walk\shahar_walk.avi
............此处省略0个文件信息

评论

共有 条评论