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

📄 fenge.m

📁 用matlab编写的
💻 M
字号:
clear;
mov=aviread('现代文明的结果.avi');              %视频读入
Info=aviinfo('现代文明的结果.avi');             %提取视频信息
fnum=Info.NumFrames; 
% fnum=10;
width=Info.Width;
height=Info.Height;
Data=zeros(height,width,3,fnum);    %存放图像序列的数据
Data=uint8(Data);                   
Y=zeros(height,width,fnum);         %用于存储图像的亮度信息
 for i=1:fnum                       %视频结构转换图像序列
  temp=mov(i);
  A=temp.cdata;
  Data(:,:,:,i)=A;
  for j=1:height                    %RGB转换Y(亮度信息)
  for k=1:width
   Y(j,k,i)=0.299*A(j,k,1)+0.587*A(j,k,2)+0.114*A(j,k,3); 
  end
  end 
 end
 Y=uint8(Y);
 for i=1:fnum-1 
     d(i)=0;
     [count1,x]=imhist(Y(:,:,i));   %统计亮度直方图
     [count2,x]=imhist(Y(:,:,i+1));
 for j=1:256                        %差异度距离度量函数
     d(i)=d(i)+abs(count2(j)-count1(j));
  %   d(i)=d(i)/(height*width);
 end
 end
 x1=1:fnum-1;
 figure(1);
 subplot(411);
stem(x1,d,'.k');                     %FDDK函数图形
title('差异度函数图');

t=-10:1:10;
%尺度j=0小波变换
y1=exp(-t.^2/(2))/((sqrt(2*pi)));   %高斯变换
y2=conv(y1,d);
n1=size(d,2)
n2=size(t,2);
n=(n2-1)/2;
for i=1:n1
    y3(i)=y2(n+i);
end
for i=1:n1-1                         %求导
    dy(i)=y3(i+1)-y3(i);
end
dy(n1)=y3(n1);
figure(1);
subplot(412);
stem(x1,dy,'.k');  
title('尺度j=0小波变换图形');
%尺度j=1小波变换
yy1=exp(-(t/2).^2/(2))/((sqrt(2*pi))*2);%高斯变换
yy2=conv(yy1,d);
for i=1:n1
    yy3(i)=yy2(n+i);
end 
for i=1:n1-1                          %求导
    dyy(i)=yy3(i+1)-yy3(i);
end
dyy(n1)=yy3(n1);
figure(1);
subplot(413);
stem(x1,dyy,'.k');
title('尺度j=1时小波变换图形');
%尺度j=2小波变换
by1=exp(-(t/4).^2/(2))/((sqrt(2*pi))*4);  %高斯变换
by2=conv(by1,d);
for i=1:n1
    by3(i)=by2(n+i);
end 
for i=1:n1-1                          %求导
    dby(i)=by3(i+1)-by3(i);
end
dby(n1)=by3(n1);
figure(1);
subplot(414);
stem(x1,dby,'.k');
title('尺度j=2时小波变换图形');

%每一分辨率下检测局部模极大值
dym=zeros(n1);                        %尺度j=0时小波变换局部模极大值
for i=2:n1-1
    if (abs(dy(i-1))<=abs(dy(i)))&(abs(dy(i))>=abs(dy(i+1)))
       dym(i)=dy(i);
    end
end
figure(2);
subplot(311);
stem(x1,dym,'.k');
title('尺度j=0小波变换模极大值图形');
%尺度j=1时小波变换局部模极大值
dyym=zeros(n1);
for i=2:n1-1
    if (abs(dyy(i-1))<=abs(dyy(i)))&(abs(dyy(i))>=abs(dyy(i+1)))
       dyym(i)=dyy(i);
    end
end
figure(2);
subplot(312);
stem(x1,dyym,'.k');
title('尺度j=1小波变换模极大值图形');
%尺度j=2时小波变换局部模极大值
dbym=zeros(n1);
for i=2:n1-1
    if (abs(dby(i-1))<=abs(dby(i)))&(abs(dby(i))>=abs(dby(i+1)))
       dbym(i)=dby(i);
    end
end
figure(2);
subplot(313);
stem(x1,dbym,'.k');
title('尺度j=2小波变换模极大值图形');
%去除噪声
T=height*width*0.006;                   %设定阈值
for i=1:n1
    if abs(dbym(i))<T    %j=2去噪
        dbym(i)=0;
    end
    if abs(dyym(i))<2*T   %j=1去噪
        dyym(i)=0;
    end
    if abs(dym(i))<7*T   %j=0去噪
        dym(i)=0;
    end
end
 figure(3);
 subplot(311);
 stem(x1,dym,'.k');
 title('尺度j=0去噪后模极大值图形');
 subplot(312);
 stem(x1,dyym,'.k');
 title('尺度j=1去噪后模极大值图形');
 subplot(313);
 stem(x1,dbym,'.k');
 title('尺度j=2去噪后模极大值图形');
%跟踪匹配极大值
 for i=1:n1                         %尺度j=0时跟踪匹配模极大值
     flag1=0;
     flag2=0;
   if dym(i)~=0
       for j=i:i+5
           if (j>n1)|((dym(i)*dyym(j))<0)
            break;
           elseif ((dym(i)*dyym(j))>0)
              flag1=1;
              break;
               end
        end
        for j=i:-1:i-5
             if (j<1)|((dym(i)*dyym(j))<0)
                break;
             elseif ((dym(i)*dyym(j))>0)
              flag2=1;
              break;
                 end
             end
       if (flag1==0)&(flag2==0)
           dym(i)=0;
       end
    end
  end
%尺度j=1时跟踪匹配模极大值  
 for i=1:n1   
     flag1=0;
     flag2=0;
   if dyym(i)~=0
       for j=i:i+5
           if (j>n1)|((dyym(i)*dbym(j))<0)
            break;
           elseif ((dyym(i)*dbym(j))>0)
              flag1=1;
              break;
               end
         end
          for j=i:-1:i-5
             if (j<1)|((dyym(i)*dbym(j))<0)
                break;
             elseif ((dyym(i)*dbym(j))>0)
              flag2=1;
              break;
                 end
           end    
       if (flag1==0)&(flag2==0)
           dyym(i)=0;
       end
   end
 end
  
 figure(4);
 subplot(411);
 stem(x1,d,'.k');
 title('差异度函数图');
 subplot(412);
 stem(x1,dym,'.k');
 title('尺度j=0与j=1模极大值匹配结果图');
 subplot(413);
 stem(x1,dyym,'.k');
 title('尺度j=1与j=2模极大值匹配结果图');
 %极大值最终跟踪匹配
for i=1:n1
     flag1=0;
     flag2=0;
   if dym(i)~=0
       for j=i:i+5
           if (j>n1)|((dym(i)*dyym(j))<0)
            break;
           elseif ((dym(i)*dyym(j))>0)
              flag1=1;
              break;
               end
         end
          for j=i:-1:i-5
             if (j<1)|((dym(i)*dyym(j))<0)
                break;
             elseif ((dym(i)*dyym(j))>0)
              flag2=1;
              break;
                 end
           end    
       if (flag1==0)&(flag2==0)
           dym(i)=0;
       end
   end
end
subplot(414);
stem(x1,dym,'.k');
title('镜头边界分布图');

m=0;
for i=1:n1
    if(dym(i)==0)
        break;
    else
        Z(m)=i;
        m=m+1;
    end
end


 

⌨️ 快捷键说明

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