图像在频域上锐化处理(高通滤波器)

一、 引言

从灰度分布的角度看,图像中对象的轮 廓 (边 缘 ) 和线条是图像中灰度的突变部分, 因而包含丰富的空间高频分量。
从频谱分析的角度看, 任何一幅图像都是由决定图像反差的低频信号和决定图像细节的高频 信号组成。 但需要考虑到, 数字化图像中高频信号部分总是掺杂有一定程度的噪声。因此, 在频率域中进行图像的锐化处理实质上是加强需要的高频分量,并必须考虑 到要 在锐 化图像的同时抑制噪声。
频率域中滤波的数学表达式可写为
G ( u , v ) = H ( u , v ) ⋅ F ( u , v ) G(u,v)=H(u,v)·F(u,v) G(u,v)=H(u,v)F(u,v)
式中,F(u,v)是原始图像的Fouirer频谱,G(u,v)是锐化后图像的Fouirer频谱,H(u,v)是滤波器的转移函数(或称传递函数),它的作用是使高频分量通过,低频分量被抑制。由式(l)可知,只要选择合适的H(u,v),使高频分量通过,则滤波的目的也达到了。由于这种滤波的特点是低频截止、高频通过,故称为高通滤波。

二.典型高通滤波器

1.理想高通滤波器

对理想高通滤波器,当频率平面上某点到原点的距离小于截止频率D0时,转移函数值为0,变换后的频率为0
对理想高通滤波器,当频率平面上某点到原点的距离小于截止频率D0时,转移函数值为0,变换后的频率为0在这里插入图片描述
代码:

img=imread('lenna.bmp');
img=im2double(img);
Fimg=fft2(double(img));%傅里叶变换?
Fimg=fftshift(Fimg);%将变换的原点移到频率矩形的中心?
[M,N]=size(img);

%截止频率为15的理想高通滤波处理
dist=15;
z=zeros(M,N);

for i=1:M
    for j=i:N
        if(dist<sqrt(((i-M/2)^2+(j-N/2)^2)))
            z(i,j)=1;
        end
    end
end

g=Fimg.*z;
g=ifftshift(g);
img1=real(ifft2(g));

%图像显示
subplot(1,2,1);imshow(img);title('原图');
subplot(1,2,2);imshow(img1);title('半径15的理想高通滤波');
  1. 巴特沃斯 (Butterworth)高通滤波器
    在这里插入图片描述
    在这里插入图片描述

  2. 指数高通滤波器
    在这里插入图片描述

  3. 梯形高通滤波器
    在这里插入图片描述

三、matlab代码

%高通滤波器对图像进行平滑处理

clc;close all;
img=imread('lenna.bmp');
figure,imshow(img);title('原图');
img=double(img);
Fimg=fft2(img);%傅里叶变换?
Fimg=fftshift(Fimg);%将变换的原点移到频率矩形的中心?
[M,N]=size(img);

distance0 = 50;distance1=100; nn = 2;%截止频率为50的二阶滤波器
m=round(M/2); n=round(N/2);%数据取整
result_Butterworth = zeros(M,N);
result_Exponential =  zeros(M,N);
result_Trapezoidal = zeros(M,N);
result_Gaussian = zeros(M,N);
for i = 1:M
    for j = 1:N
        distance = sqrt( (i - m)^2 + (j - n)^2 );%计算频率平面原点到各点的距离
        
        %巴特沃斯高通滤波
        hB = 1 / (1 + (distance0 / distance)^(2*nn));%传递公式(巴特沃斯高通滤波器)
       result_Butterworth(i,j) = hB*Fimg(i,j);%滤波公式
       
         %高斯高通滤波器
       hG = 1 - exp( (-distance^2)/(2*(distance0^2)) );
       result_Gaussian(i,j) = hG * Fimg(i,j);
       
       %指数高通滤波器
       hE = exp( - (distance0 / distance )^nn );%传递公式(指数形高通滤波器)
       result_Exponential(i,j) = hE*Fimg(i,j);%滤波公式
       
       %梯形高通滤波器
       if(distance <= distance0)
           hT= 0;
           result_Trapezoidal(i,j) = hT * Fimg(i,j);
       if(distance > distance1)
               hT= 1;
               result_Trapezoidal(i,j) = hT * Fimg(i,j);
       else
               hT = (distance - distance0) / (distance1 - distance0);
               result_Trapezoidal(i,j) = hT * Fimg(i,j);
       end
       end   
       
       
    end
end

 
result_Butterworth = ifftshift(result_Butterworth);%直流分量移回到左上角
imgB = ifft2(result_Butterworth);%傅里叶反变换
imgB1 = uint8(real(imgB));%取幅值并转换成8位无符号整数
figure;subplot(2,2,1);imshow(imgB1);title('巴特沃斯高通滤波器');

imgG = ifft2(result_Gaussian);%傅里叶反变换
imgG1 = uint8(real(imgG));%取幅值并转换成8位无符号整数
subplot(2,2,2);imshow(imgG1);title('高斯高通滤波器');

imgE = ifft2(result_Exponential);%傅里叶反变换
imgE1 = uint8(real(imgE));%取幅值并转换成8位无符号整数
subplot(2,2,3);imshow(imgE1);title('指数高通滤波器');

imgT = ifft2(result_Trapezoidal);%傅里叶反变换
imgT1 = uint8(real(imgT));%取幅值并转换成8位无符号整数
subplot(2,2,4);imshow(imgT1);title('梯形高通滤波器');


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值