• 大小: 3KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-16
  • 语言: Matlab
  • 标签: MATLAB  

资源简介

对视频中运动目标提取 通过对视频进行预处理(中值滤波) 帧间差分法运动目标区域提取 运动目标区域形态学处理 获取运动目标 并对目标区域占比进行计算做出相应提示

资源截图

代码片段和文件信息

clear all;
 
%读入视频数据
mov =  VideoReader(‘C:\Users\Administrator\Desktop\毕设\test.avi‘);
nb =mov.NumberOfframes;%视频帧数

T=10;%运动目标检测阈值  可变
P=0.05;%运动目标占比阈值  可变
for i=2:nb
    x=read(mov i);%读取视频帧
    y=read(mov i-1);
    img=y;
    m=rgb2gray(x);%灰度图转换
    n=rgb2gray(y);

    
    m=medfilt2(m);%中值滤波
    n=medfilt2(n);%中值滤波
    



    
    c=abs(m-n);%差分
%     c=medfilt2(c);%中值滤波
    
    c(abs(c)>=T)=255;%运动目标检测
    c(abs(c)    c=logical(c);%转换为0,1
    

    c=bwareaopen(c20);%删除小面积对象
    se1=strel(‘square‘3);
    se2=strel(‘square‘13);  
 
     c=imdilate(cse2);%形态学膨胀处理
    run=c;
      
 
    %运动目标提取
    c=uint8(c);
    sh(::1)=c.*img(::1);%点乘操作 
    sh(::2)=c.*img(::2);
    sh(::3)=c.*img(::3);
    imshow(sh);
    title(sprintf(‘运动目标提取 第%d帧‘i-1));

    [Lbw4 numbw4] = bwlabel(run);      %  %Lbw4为贴标签之后的矩阵,numbw4为标签个数
    stats = regionprops(Lbw4);%获取区域的某个属性(面积、最小包围矩形的坐标长宽等)的值  
     for i = 1 : numbw4  
      tempBound = stats(i).BoundingBox ; 
      %计算运动目标区域占比
      moving=find(c==i);
      moving=length(moving);
      mn=size(c);
      all_area=mn(1)*mn(2);
      pro=moving/all_area;
      if pro >P
          rectangle(‘position‘tempBound‘edg

评论

共有 条评论