以下是MATLAB代码实现高斯滤波器的过程:

%% 读取图像 img = imread('lena.png'); img = im2double(img);

%% 显示原图 figure; imshow(img); title('原图');

%% 计算图像的3D频谱 fimg = fftshift(fftn(img)); mag = abs(fimg); mag = log(mag+1); mag = mat2gray(mag); figure; imshow(mag); title('原图的3D频谱');

%% 定义高斯滤波器参数 sigma = 30; % 高斯滤波器标准差 hsize = 5*sigma; % 高斯滤波器尺寸

%% 计算高斯低通滤波器 [x,y] = meshgrid(-hsize:hsize,-hsize:hsize); h = exp(-(x.^2+y.^2)/(2*sigma^2)); h = h/sum(h(:));

%% 频域滤波 fimg_low = fimg.*h; img_low = ifftn(ifftshift(fimg_low)); img_low = real(img_low); % 仅保留实部

%% 显示高斯低通滤波后图像 figure; imshow(img_low); title('高斯低通滤波后图像');

%% 计算高斯低通滤波器的3D频谱 fimg_low = fftshift(fftn(img_low)); mag_low = abs(fimg_low); mag_low = log(mag_low+1); mag_low = mat2gray(mag_low); figure; imshow(mag_low); title('高斯低通滤波器的3D频谱');

%% 计算高斯高通滤波器 h_high = 1-h;

%% 频域滤波 fimg_high = fimg.*h_high; img_high = ifftn(ifftshift(fimg_high)); img_high = real(img_high); % 仅保留实部

%% 显示高斯高通滤波后图像 figure; imshow(img_high); title('高斯高通滤波后图像');

%% 计算高斯高通滤波器的3D频谱 fimg_high = fftshift(fftn(img_high)); mag_high = abs(fimg_high); mag_high = log(mag_high+1); mag_high = mat2gray(mag_high); figure; imshow(mag_high); title('高斯高通滤波器的3D频谱');

以上代码实现了对lena图像的高斯滤波器处理,包括高斯低通和高斯高通滤波器。运行代码后,会显示原图、原图3D频谱、高斯低通/高通滤波后图像以及对应的3D频谱

MATLAB编程实现高斯滤波器展示原图、原图3D频谱、高斯低通高通滤波后图像以及对应的3D频谱。

原文地址: https://www.cveoy.top/t/topic/gXaQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录