butterworthh.m

来自「由上述实验过程的图像变化可知」· M 代码 · 共 87 行

M
87
字号
%function butterworth 

  I = imread('lena1.bmp');
   data=zeros(256,256);   H=zeros(256,256);data1=zeros(256,256);
%   J=fft2(I);K=fftshift(J);
 TYPE=1;  
D0=10;
D1=50;
    for m=1:256
       for n=1:256
            data1(m,n)=I(m,n);
        end
    end
    
    for Mm=1:10
          for Nn=1:10
              
                  L=round(abs(256*rand(1,1)));
                  M=round(abs(256*rand(1,1)));
                  if(L<=1) L=1;
                  end
                  if(L>=256) L=256;
                  end
                  if(M<=1) M=1;
                  end
                  if(M>=256) M=256;
                  end

                
                  data1(L,M)=data1(L,M)+256*(rand(1,1)-0.5);
            end
     end

    J=fft2(data1);K=fftshift(J);
    
   for m=1:256
       for n=1:256
            data(m,n)=K(m,n);
           
           disabs=sqrt((m-128)^2+(n-128)^2);
          
          %butterworth
          if TYPE==1 
              distance=1/(1+(D0/disabs)^2);
          end
          %tixing
          if TYPE==2 
              distance=(disabs-D0)/(D1-D0);
          end
          %gauss 
          if TYPE==3           
               distance=1-exp(-(disabs/D0)^2);
           end
          
          H(m,n)=distance;
          if TYPE==1 
              data(m,n)=H(m,n)*K(m,n);                   
           end
                
          if TYPE==3 
              data(m,n)=H(m,n)*K(m,n);                   

          end            
           
         if TYPE==2 
                if disabs<D0
                   data(m,n)=1;
                 elseif disabs<D1
                  data(m,n)=H(m,n)*K(m,n);  
              end

          end            
           

 %          if distance>100
  %              K(m,n)=0;
  %        end
  
       end
   end
   
   JJ=ifftshift(data);
   R=ifft2(JJ);
      
    imshow(abs(R),[])
%    imshow(data,[])
   

⌨️ 快捷键说明

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