⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nonpara.m

📁 视频背景非参数估计论文及matlab实现.matlab代码只实现了灰度图的背景估计
💻 M
字号:
%
%功能:对avi视频进行非参数背景估计,和前景提取


%
%%%%%%%  获取并确认avi视频文件,获取视频图像的一些信息 %%%%%%%%%%%%%%%%



close all;
clear all;
clc;
%%%%%%%  获取并确认avi视频文件,获取视频图像的一些信息 %%%%%%%%%%%%%%%%
    startF = 0;
    while isequal(startF,0)
        [fileName,pathName] = uigetfile('*.avi','请选取要播放的视频文件');
        if isequal(fileName,0) | isequal(pathName,0)
            %  用户按了 ‘取消’ 按钮 
            msgbox('Thank you for using this program, Good Bye!','程序结束');
            return
        else
            %  用户选择了文件,并按了 ‘确认’ 按钮 
            videoFileName = fullfile(pathName,fileName);
            vInfo = aviinfo(videoFileName);
            
            
            %%%%%%%%创建一个avi用于保存估计结果%%%%%%%%
%             aviFileName1 = fullfile(pathName,[ '228.avi']);
% bmpAvi1 = avifile(aviFileName1);
% bmpAvi1.Fps=10;

            
           numFmVdo = vInfo.NumFrames %视频序列的总帧数
%  numFmVdo =100;
%             framestar=1;       
%             numFmVdo =50;
           
%             FNo=numFmVdo-framestar+1;
            widthVDO = vInfo.Width;  %240
            % 视频序列中每一帧图像的宽度; An integer indicating the width of AVI movie
            % in pixels 
            heightVDO = vInfo.Height; %192
            %视频序列中每一帧图像的高度;An integer indicating the height of AVI movie in
            %pixels 
            typeVDO = vInfo.ImageType; 
            %视频序列的类型;- A string indicating the type of image;either
            %'truecolor' for a truecolor (RGB) image, or 'indexed', for an
            %indexed image  
        end
        startF = 1;
    end
%%%%%%%%%%%%%% 读取avi视频文件 %%%%%%%%%%%%%%%%%%%
    aviFM = aviread(videoFileName);
    
    
    
                aviFileName1 = fullfile(pathName,[ 'result1.avi']);
bmpAvi1 = avifile(aviFileName1);
bmpAvi1.Fps=10;
   
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%     Channelsize=widthVDO*heightVDO;
 %%   3DImatrix(numFmVdo,1Channelsize,value)%%%%%%%%%%%
   
% %%%%%%%%%%% 对视频图像进行逐帧处理 %%%%%%%%%%%%%%
%    H = figure;
%    wH=3; wL=2;
%%%%%%%%%
xx=0
% temp=zeros(heightVDO,widthVDO,numFmVdo);


%%%计算初始方差%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

for a=1:60
     vFn = aviFM(a).cdata;    %当前帧图像    

     vFnGray=rgb2gray(vFn);
 
        recentImage(:,:,a)=vFnGray;
   

end

cova=2/0.68*2^(1/2);  %高斯窗函数的方差
recentImage=double(recentImage);

%建立查找表加快计算速度

for i=1:256
    excle(i)=exp(-(i-1)^2/(2*cova^2))/(cova*(2*pi)^(1/2));
end

%%%计算视频背景
  background=zeros(heightVDO,widthVDO);
   for i=1:heightVDO
%        ttt=zeros(1,widthVDO,60,256);
        xx=xx+1
%         tttt=zeros(1,widthVDO,256);

                 for t=1:256
                 
                     ttt=excle(abs(((t-1)-recentImage(i,:,:)))+1);
                     
                     tt(:,:)=sum(ttt,3);
                     for r=1:widthVDO
                         if t==1
                             max(r)=tt(1,r);
                         else
                            if tt(1,r)>max(r)
                             background(i,r)=t-1;
                             max(r)=tt(1,r);
                            end
                         end
                     end
                     
                 end
                
                
   end
     
     imshow(uint8(background));

for a=1:100
    
    
    %%通过计算最大的可能值,来计算当前背景
   xx=xx+1 
   
    
       vFn = aviFM(a).cdata;    %当前帧图像    

     vFnGray=rgb2gray(vFn);
     vFnGray=double(vFnGray);
     foreground=vFnGray;
     for i=1:60
     tempvFn(:,:,i)=vFnGray;
     end
     cha=excle(abs(tempvFn-recentImage)+1);
     ab=sum(cha,3);
     
     
    
   
     for i=1:heightVDO
         for j=1:widthVDO
             if ab(i,j)>0.2
                 foreground(i,j)=0;
           
             end
         end
     end
%      foregroud(find(ab>0.1))=0;
recentImage(:,:,mod(a,60)+1)=vFnGray;
 groundlast=cat(2,vFnGray,background);
  result2=cat(2,groundlast,foreground);
  result2=uint8(result2);
  rr=cat(3,result2,result2);
  rrr=cat(3,rr,result2);
bmpAvi1=addframe(bmpAvi1,rrr);
    
end
bmpAvi1=close(bmpAvi1);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -