当前位置:   article > 正文

matlab实现图像频域处理(低通滤波、高通滤波、同态滤波)_matlab图像滤波

matlab图像滤波

        频域滤波是一种图像处理技术,可以通过在频域中增加或减弱某些频率分量,从而实现图像去噪、锐化、平滑等功能。常见的频域滤波包括频域低通滤波、频域高通滤波和频域同态滤波。            在使用这些滤波器进行频域处理时,通常需要选择合适的参数、预处理和后处理方法,以达到理想的处理效果。同时,不同的图像场景和需求也需要选择适合的滤波器和处理方法。

1.频域低通滤波

        频域低通滤波:低通滤波器将保留图像中低频信息,同时削弱高频信息,从而实现图像模糊、平滑等效果。低通滤波器的频率响应通常为一个圆形区域,圆形区域内表示通过的频率分量,圆形区域外表示被滤掉的频率分量。低通滤波器适合处理噪声较多或需要平滑图像的场景。

        以下是实现频域低通滤波中的理想低通滤波:

  1. close all; %关闭当前所有图形窗口
  2. clear all; %清空工作空间变量
  3. clc; %清屏
  4. I=imread('lena.bmp');
  5. I=rgb2gray(I);
  6. I=im2double(I);
  7. [m,n]=size(I);
  8. M=2*m;N=2*n;%滤波器的行数和列数
  9. u=-M/2:(M/2-1);
  10. v=-N/2:(N/2-1);
  11. [U,V]=meshgrid(u,v);%meshgrid(u,v)的作用是分别产生以向量u为行,向量v为裂的两个大小相同的矩阵
  12. D=sqrt(U.^2+V.^2);%设置频率点(U,V)与频域中心的距离为D(U,V)
  13. D0=40; %截止频率
  14. H=double(D<=D0); %理想低通滤波器
  15. J=fftshift(fft2(I,size(H,1),size(H,2)));%通过傅里叶变换将时域图像转换到频域图像,并移动到中心位置
  16. K=J.*H; %滤波处理
  17. L=ifft2(ifftshift(K)); %傅里叶反转换
  18. L=L(1:m,1:n); %设置图像的大小
  19. figure;
  20. subplot(131),imshow(J);
  21. subplot(132),imshow(I);
  22. subplot(133),imshow(L);

 

2.频域高通滤波

        频域高通滤波:高通滤波器则削弱低频信息,同时保留高频信息,从而实现图像增强、锐化等效果。高通滤波器的频率响应通常为一环形区域,环形区域内表示被滤掉的频率分量,环形区域外表示通过的频率分量。高通滤波器适合处理模糊或需要突出细节、边缘等特定信息的场景。

        以下是实现频域高通滤波中的理想高通滤波:

  1. close all; %关闭当前所有图形窗口
  2. clear all; %清空工作空间变量
  3. clc; %清屏
  4. I=imread('lena.bmp');
  5. I=rgb2gray(I);
  6. I=im2double(I);
  7. [m,n]=size(I);
  8. M=2*m;N=2*n;%滤波器的行数和列数
  9. u=-M/2:(M/2-1);
  10. v=-N/2:(N/2-1);
  11. [U,V]=meshgrid(u,v);%meshgrid(u,v)的作用是分别产生以向量u为行,向量v为裂的两个大小相同的矩阵
  12. D=sqrt(U.^2+V.^2);%设置频率点(U,V)与频域中心的距离为D(U,V)
  13. D0=40; %截止频率
  14. H=double(D>D0); %理想高通滤波器
  15. J=fftshift(fft2(I,size(H,1),size(H,2)));%通过傅里叶变换将时域图像转换到频域图像,并移动到中心位置
  16. K=J.*H; %滤波处理
  17. L=ifft2(ifftshift(K)); %傅里叶反转换
  18. L=L(1:m,1:n); %设置图像的大小
  19. figure;
  20. subplot(131),imshow(J);
  21. subplot(132),imshow(I);
  22. subplot(133),imshow(L);

 

3.频域同态滤波

        频域同态滤波:同态滤波器可以同时处理低频和高频信息,通过在频域中对图像进行对数变换,将乘积域转化为加法域,从而实现亮度和反差的调整。同态滤波器常用于处理光照不均和阴影等问题,同时也有一定的去噪和增强效果。

  1. close all; %关闭当前所有图形窗口
  2. clear all; %清空工作空间变量
  3. clc; %清屏
  4. I=imread('lena.bmp');
  5. I=rgb2gray(I);
  6. J=log(im2double(I)+1); %取对数
  7. K=fft2(J); %傅里叶变换
  8. n=5; %同态滤波参数
  9. D0=0.1*pi;
  10. rh=0.8;
  11. rl=0.3;
  12. [row,column]=size(J);
  13. for i=1:row
  14. for j=1:column
  15. D1=sqrt(i^2+j^2);
  16. H(i,j)=rl+(rh/(1+(D0/D1)^(2*n)));
  17. end
  18. end
  19. L=K.*H; %滤波
  20. M=ifft2(L); %傅里叶反变换
  21. N=exp(M)-1; %取指数
  22. figure;
  23. subplot(121),imshow(I);
  24. subplot(122),imshow(real(N));

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/72559
推荐阅读
相关标签
  

闽ICP备14008679号