zoukankan      html  css  js  c++  java
  • 频域滤波之巴特沃斯低通滤波

    频率滤波的基本步骤是:

    (1)计算需要增强图像的傅里叶变换。

    (2)乘以一个滤波传递函数H(u,v)。

    (3)将得到的结果进行傅里叶反变换,得到g(x,y).

    理想低通滤波器是通过低频,截至高频。

    巴特沃斯低通滤波器的传递函数为H(u,v)=1/1+[D(u,v)/D0]^2n

    相关MATLAB程序如下:

    I=imread('pic8.jpg');
    I=rgb2gray(I);
    % 叠加椒盐噪声
    J1=imnoise(I,'salt & pepper');  
    subplot(1,2,1)
    imshow(J1),title('原始图像')
    % 数据类型转换,MATLAB不支持图像的无符号整型的计算
    f=double(J1);    
    % 傅里叶变换
    g=fft2(f);        
    g=fftshift(g);     
    [M,N]=size(g);
    % 二阶巴特沃斯(Butterworth)低通滤波器
    nn=2;           
    d0=25;
    m=fix(M/2); n=fix(N/2);
    % 计算低通滤波器传递函数
    for i=1:M
           for j=1:N
               d=sqrt((i-m)^2+(j-n)^2);
               h=1/(1+0.414*(d/d0)^(2*nn));  
               result(i,j)=h*g(i,j);
           end
    end
    result=ifftshift(result);
    J2=ifft2(result);
    J3=uint8(real(J2));
    % 显示滤波处理后的图像
    subplot(1,2,2)     
    imshow(J3),title('滤波处理后的图像')
    

     还有另外一种低通滤波器:指数低通滤波传递函数为:H(u,v)=exp-(D(u,v)/D0)^n

    相关代码为:

    I=imread('pic10.jpg');
    I=rgb2gray(I);
    % 叠加椒盐噪声
    I2=imnoise(I,'salt & pepper',0.05);
    subplot(1,2,1);imshow(I2);title('噪声图像');
    % 数据类型转换,MATLAB不支持图像的无符号整型的计算
    f=double(I2);
    % 傅里叶变换
    k=fft2(f);
    g=fftshift(k);
    [N1,N2]=size(g);
    % 构造指数低通滤波器进行滤波
    n=2;
    d0=25;
    u0=round(N1/2);
    v0=round(N2/2);
    for i=1:N1
        for j=1:N2
            d=sqrt((i-u0)^2+(j-v0)^2);
            h=exp(-(d/d0)^n);
            y(i,j)=h*g(i,j);
        end
    end 
    y=ifftshift(y);
    E1=ifft2(y);
    E2=uint8(real(E1));
    % 显示滤波处理后的图像
     subplot(1,2,2);imshow(E2);title('滤波后的图像');
  • 相关阅读:
    列出 visual studio 的所有快捷键
    CVS命令深入研究 zz
    大话系统之权限控制 (转)
    策略模式
    使用ISAPI_Rewrite对asp.net实现URL重写,显示HTML后缀
    使用ICSharpCode.SharpZipLib.dll实现在线解压缩
    ISAPI_REWRITE(转)
    ISAPI_Rewrite集
    做快乐的程序员(转)
    Request.PathInfo,Request.Path,RequestRawUrl
  • 原文地址:https://www.cnblogs.com/natalie/p/4469361.html
Copyright © 2011-2022 走看看