当前位置:服务支持 >  软件文章 >  MATLAB频率域滤波:平滑滤波器处理图像代码

MATLAB频率域滤波:平滑滤波器处理图像代码

阅读数 289
点赞 60
article_banner

以下是用频率域平滑滤波器处理图像的MATLAB代码:

% 读入图像

img = imread('example.jpg');

% 转换为灰度图像

grayImg = rgb2gray(img);

% 对灰度图像进行傅里叶变换

f = fft2(double(grayImg));

% 将频谱中心移到图像中央

shifted_f = fftshift(f);

% 设置滤波器半径为100

H = ones(size(grayImg));

cy = ceil(size(grayImg,1)/2);

cx = ceil(size(grayImg,2)/2);

radius = 100;

for i=1:size(grayImg,1)

for j=1:size(grayImg,2)

if sqrt((i-cy)^2 + (j-cx)^2) > radius

H(i,j) = 0;

end

end

end

% 进行频域滤波

filtered_f = shifted_f.*H;

% 将频谱中心还原到原始位置

filtered_unshifted_f = ifftshift(filtered_f);

% 对滤波后的频谱进行逆变换

filtered_img = real(ifft2(filtered_unshifted_f));

% 显示原始图像和滤波后的图像

subplot(1,2,1), imshow(grayImg)

title('原始图像')

subplot(1,2,2), imshow(uint8(filtered_img))

title('平滑后的图像')

其中,我们通过 fft2 函数对灰度图像进行傅里叶变换。然后,我们将频谱中心移到图像中央,这样可以方便地对频域滤波器进行处理。接着,我们设置了一个半径为100的圆形滤波器。最后,我们将频谱中心还原到原始位置,并对滤波后的频谱进行逆变换,得到滤波后的图像。最后,我们用 imshow 函数显示原始图像和滤波后的图像。

相关文章
QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利