Matlab:面形低通滤波(均值、中值、FFT低通滤波)

在光学加工检验中,常常需要对光学表面误差进行分析和处理,其中低通滤波器是一种常用的处理方法。MATLAB 提供了多种低通滤波器函数,包括平均滤波、中值滤波和二维 FFT 滤波等。

下面分别介绍这些低通滤波器的 MATLAB 实现方式:


1. 定义一个表面

clc;clear;close all;
[X,Y] = meshgrid(-2.5:0.01:2.5);
%定义一个表面
original = peaks(X,Y);
%加高斯噪声
original = imnoise(original,'gaussian');

figure(1);imagesc(original);colormap('jet');axis image;

8ecd2744d49e4284a0ba87097850227b.png


2. 均值低通滤波(Average low-pass filter)

平均滤波是最基本的低通滤波方式之一。平均滤波器把图像中每个像素周围的像素灰度值取平均,从而降低图像的高频噪声。在 MATLAB 中,可以使用 fspecial 函数生成一个均值滤波器,具体代码如下:

%定义滤波器大小
kernel_size = 10;
%生成均值滤波器
h = fspecial('average', kernel_size);
%对图像进行滤波操作
filtered1 = imfilter(original, h, 'replicate');

figure(2);imagesc(filtered1);colormap('jet');axis image;

其中,kernel_size 表示滤波器的大小,h 表示生成的均值滤波器,original 表示原始图像,filtered 表示滤波后的结果。imfilter 函数将滤波器应用于原始图像,filtered1表示滤波后的结果。

49c7fd0ecfba4ac387e33e8faf74eded.png


3. 中值滤波(Median low-pass filter)

中值滤波是一种非线性滤波器,它将图像中每个像素周围的像素灰度值排序,并取其中位数作为该像素的新值。中值滤波能够有效地去除图像中的椒盐噪声等噪声类型。在 MATLAB 中,可以使用 medfilt2 函数对图像进行中值滤波,具体代码如下: 

%定义滤波器大小
kernel_size = 10;

%对图像进行中值滤波操作
filtered2 = medfilt2(original,[kernel_size, kernel_size]);

figure(3);imagesc(filtered2);colormap('jet');axis image;

其中,kernel_size 表示滤波器的大小,original 表示原始图像,filtered 表示滤波后的结果。medfilt2 函数将滤波器应用于原始图像,filtered2 表示滤波后的结果。

f2d66268b62d4c17bea664a435802cea.png


4. 二维 FFT低通滤波(2D FFT low-pass filter)

二维 FFT 滤波是一种基于频域的滤波方法,通过将图像进行二维 FFT 变换,将频率域中高频分量的幅值置为零,从而实现低通滤波的效果。在 MATLAB 中,可以使用 fft2 函数对图像进行二维 FFT 变换,具体代码如下: 

%定义滤波器大小
Gaussian_size = 10;

% 高斯低通滤波
H = GaussianLowpass(original,Gaussian_size);
%时域图像转换到频域
J=fftshift(fft2(original,size(H,1),size(H,2))); 
%滤波处理
K=J.*H;
%傅里叶反变换
filtered3=real(ifft2(ifftshift(K))); 

filtered3=filtered3(1:size(original,1),1:size(original,2));

figure(4);imagesc(filtered3);colormap('jet');axis image;

%高斯低通滤波器
function H = GaussianLowpass(img,D0)
 
[M,N] = size(img);
H = zeros(2*M,2*N);
 
for u = 1:2*M
    for v = 1:2*N
        D_square = (u-M) * (u-M) + (v-N) * (v-N); 
        H(u,v) = exp(-D_square/(2*D0*D0));        
    end
end
end

其中,original 表示原始图像,H 表示生成的高斯低通滤波器,J 表示图像在频率域中的表示形式,K 表示经过滤波后的频率域表示形式,filtered3 表示滤波后的结果。

08041ab579724444a0b0eabb44df0e34.png

 (本文为CSDN“光学码农”原创,转载须注明本文网址,违者必究!)

 

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光学码农

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值