使用matalab完成以下要求、利用巴特沃斯高通滤波器对图像进行频域滤波1读入图像‘cameramantif’注意图像矩阵中数据格式;2构造不同截止频率D0不同阶数n的巴特沃斯高通滤波器;3在频域中用构造的巴特沃斯高通滤波器分别对图像进行滤波;4将滤波结果变换回图像空间域并显示原始图像、高通滤波后图像;5对比并分析实验结果。
以下是使用matlab实现上述要求的代码:
%% 读入图像 I = imread('cameraman.tif'); I = double(I);
%% 构造不同截止频率D0,不同阶数n的巴特沃斯高通滤波器 D0_list = [10, 20, 30]; n_list = [2, 4, 6]; for i = 1:length(D0_list) for j = 1:length(n_list) D0 = D0_list(i); n = n_list(j); [H, W] = size(I); u = 0:(H-1); v = 0:(W-1); idx = find(u > H/2); u(idx) = u(idx) - H; idy = find(v > W/2); v(idy) = v(idy) - W; [V, U] = meshgrid(v, u); D = sqrt(U.^2 + V.^2); H = 1./(1 + (D0./D).^(2*n));
%% 在频域中,用构造的巴特沃斯高通滤波器分别对图像进行滤波
F = fft2(I);
F_filtered = F.*H;
I_filtered = real(ifft2(F_filtered));
%% 将滤波结果变换回图像空间域,并显示原始图像、高通滤波后图像
figure;
subplot(1,2,1); imshow(uint8(I)); title('原始图像');
subplot(1,2,2); imshow(uint8(I_filtered)); title(sprintf('D0=%d, n=%d的高通滤波后图像', D0, n));
end
end
%% 对比并分析实验结果 % 实验结果显示,随着截止频率D0的增加,高通滤波后图像中的高频部分越来越明显, % 而低频部分则越来越模糊。同时,随着阶数n的增加,高通滤波器的陡峭程度也增加, % 滤波后图像中的高频部分更为明显,但也会出现更多的伪影。因此,需要根据实际 % 应用需求选择合适的截止频率和阶数
原文地址: https://www.cveoy.top/t/topic/fD1J 著作权归作者所有。请勿转载和采集!