首页 > 编程知识 正文

高通滤波器的频域形态图,matlab低通滤波器模块

时间:2023-05-06 09:28:07 阅读:134957 作者:1212

1 .对灰度图像进行离散傅立叶变换(Discrete Fourier Transfom,DFT )变换,在频域分别采用理想的高通滤波器和低通滤波器进行滤波,并显示滤波后的频域图像

2 .读取灰度图像,在此读取附属于matlab "摄影家"的灰度图像

%%读取图像x=imread(Cameraman.TIF ); figure,imshow(x ),title ) (原图) )。

3 .离散傅立叶变换对傅立叶变换的理解请参考本文

解说:图像傅立叶变换-知乎(zhihu.com) https://Zhan.zhi Hu.com/p/99605178结合这篇文章,使用matlab实现离散傅立叶变化可以作为本文的参考

用matlab对图像进行傅立叶变换-三山音-博主园(cnblogs.com) https://www.cn blogs.com/sanshanyin/p/5426822.html这里使用的FT2是二维傅立叶变换imshow使用[min(I ) : ] [ max (I ) : ] ]作为显示范围。 imshow用黑色表示I中的最小值,用白色表示最大值。

%%傅立叶变换y=fft2(x; %2维傅立叶变换y=FFTshift(y; 将%零频率分量表示为频谱中心y_ABS=ABS(y ); 针对%复数,模运算z=log(y_ABS1); 将%转换为小范围区间,根据地图%z的像素值范围,用黑色显示z的最小值,用白色显示最大值。 figure,imshow(z,[ ],title ) )频域);

4 .假设低通滤波图像的宽度为col,高度为row,理想的低通滤波器在形式上可以描述如下

这里表示理想的低通滤波器的截止频率,滤波器的频域原点位于光谱图像的中心,以截止频率为半径的圆形区域内的滤波元值均为1,其它圆以外的滤波元值均为0。 理想的低通滤波器频率特性在截止频率下十分陡峭,硬件无法实现,这也是用户称之为理想的原因,但其软件编程仿真实现相对简单。

因此,制作低通滤波器LPF,将LPF全部初始化为1的矩阵,然后遍历y,对其中的各点(I,j )判断是否高于截止频率,在高于截止频率的情况下,将低通滤波器中的对

其中,y.*LPF是指y中的所有点分别与LPF中的所有点相乘的值,对于y(I,j ),如果是高于截止频率的频率,则为其对应位置的LPF ) I,j )=0 如果频率低于截止频率,则对应位置处的LPF(I,j )=1,且即使两者相乘,也将保留y ) I,j ),即低频。

%%低通滤波器LPF=ones(size ) y ); %初始化低通滤波器threshold_low=50; 设定%截止频率[row,col]=size(y ); %得到的图像y的高度和宽度for i=1: row for j=1: col %计算频率ifsqrt((I-row/2 ) j-col/2 ) )2) threshold_low %低通滤波器%低通滤波器y_LPF=IFFTshift(y_LPF ); %逆零频移x_LPF=ifft2(y_LPF ); %傅立叶逆变换x_LPF=uint8(real(x_LPF ); 将%转换为实数,将双精度转换为uint8figure、imshow(x_LPF )、title (低通滤波器) )。 更一般地说,低通滤波器只是一种形式,每次都需要遍历row*col次才能获得指定频率的滤波器)低通滤波器、高通滤波器中的一种

本质上,理想低通滤波器和理想高通滤波器都是基于频率的。 首先,计算每个点对应的频率,并将其存储在一个频率矩阵(频率本质上也是距离) distance中。 然后,对于任何截止频率,只需处理距离矩阵即可。

(上面的代码和下面的代码效果相同)

%%计算频率、频率=从当前点(I,j )到中心点(row/2,col/2 )的距离[row,col]=size(y ) y ); distance=Zeros(row,col ); for i=1: row for j=1: col %计算向量的模式长度,即两点间距离distance(I,j )=norm([I-row/2j-col/2] ); endend ifftshift是逆零频率平移,是fftshift的逆变换,ifft2是二维快速傅里叶逆变换,是fft2的逆变换。

real用于获得多个实部,返回的数据类型为double,一般的灰度图像数据类型为uint8,因此需要用uint8进行变换。

%%低通滤波器(Low Pass Filtering,LPF ) y_LPF=y; %常规ythreshold_low=50; 设定%阈值%过滤频率高于阈值的点y_LPF(distancethreshold_low )=0; y_LPF=IFFTshift(y_LPF; %逆零频移x_LPF=ifft2(y_LPF ); %傅立叶逆变换x_LPF=uint8(real(x_LPF ); 将%转换为实数,将双精度转换为uint8figure,imshow(x_LPF ),title (低通滤波) )

5 .高通滤波器高通滤波器高通滤波器也是如此

%%高通滤波器(HPF,High Pass Filtering ) y_HPF=y; threshold_high=30; y_HPF(distanceThreshold_high )=0; y_HPF=IFFTshift(y_HPF; x_HPF=ifft2(y_HPF ); x_HPF=uint8(real(x_HPF ); figure,imshow(x_HPF ),title ) (高通滤波器) )。

6 .完整码关注公众号TobleroneWind,回复“数字图像处理”即可获得完整码。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。