本文目录
常用的滤波器高斯低通滤波器matlab代码高斯高通滤波器Butterworth 低通滤波器常用的滤波器
常用的滤波器有以下几种:
频域滤波器
频域平滑滤波器
理想低通滤波器
巴特沃斯低通滤波器
高斯低通滤波器
频域锐化滤波器
理想高通滤波器
巴特沃斯高通滤波器
高斯高通滤波器
频域拉普拉斯算子
高频提升滤波
同态滤波器
低通滤波器通过过滤掉频域的高频成分达到平滑目的。
滤波的基本模型G(u,v) = H(u,v)F(u,v),其中 F(u,v) 是图像的傅立叶变换结果, H(u,v) 称为滤波器传输函数
低通滤波器(Low pass filters) – 仅保留低频分量而过滤掉高频分量。
理想低通滤波器计算简单,但是存在振铃效应,应用不多;
高斯低通滤波器
Gaussian 低通滤波器的传输函数定义为:
选取不同的D0来达到不同的效果:
使用高斯低通滤波器连接断裂的笔画
matlab代码
MATLAB代码示例:
clear all;d0=50; %阈值image=imread('path');[M ,N]=size(image);img_f = fft2(double(image));%傅里叶变换得到频谱img_f=fftshift(img_f); %移到中间m_mid=floor(M/2);%中心点坐标n_mid=floor(N/2); h = zeros(M,N);%高斯低通滤波器构造for i = 1:Mfor j = 1:Nd = ((i-m_mid)^2+(j-n_mid)^2);h(i,j) = exp(-(d)/(2*(d0^2)));endendimg_lpf = h.*img_f;img_lpf=ifftshift(img_lpf); %中心平移回原来状态img_lpf=uint8(real(ifft2(img_lpf))); %反傅里叶变换,取实数部分subplot(1,2,1);imshow(image);title('原图');subplot(1,2,2);imshow(img_lpf);title('高斯低通滤波d=50');
运行图片示例:
通过调整D0来达到不同的效果。
滤波器的核心都是滤波函数的构建,其余基本一致
高斯高通滤波器
Gaussian 高通滤波器定义为:
对于高斯高通滤波器MATLAB代码只需非常简单的更改:
h(i,j) = 1-exp(-(dd)/(2(d0^2)));
即可
h = zeros(M,N);%高斯低通滤波器构造for i = 1:Mfor j = 1:Nd = ((i-m_mid)^2+(j-n_mid)^2);h(i,j) = 1-exp(-(d)/(2*(d0^2)));endend
结果示例:
可以获得轮廓。
同理:对于其他滤波器也是一样,只需要更改滤波函数的构建即可。
Butterworth 低通滤波器
截至频率为D0 的n 阶Butterworth 低通滤波器定义为:
Butterworth 高通滤波器定义为:
最后感谢各位的指正!☺
如果觉得《MATLAB图像处理--高斯低通滤波 高斯高通滤波(代码及示例)》对你有帮助,请点赞、收藏,并留下你的观点哦!