所以我的主要代码如下:
filter = a + b * butterworth([P Q], 0.1, 1);
dft_input_p = dft(input_p, 'DFT');
dft_filter = dft(filter, 'DFT');
G = dft_input_p .* dft_filter;
g = dft(G, 'IDFT');
img_result = im2uint8(real(g));
a和b是高频强调的参数,P和Q是输入照片的零填充尺寸。
我的Butterworth过滤器实现代码:
function f = butterworth(size, cutoff, n)
[u v]=meshgrid(-floor(size(2)/2):floor(size(2)/2)-1,-floor(size(1)/2):floor(size(1)/2)-1);
D = (u .^ 2 + v .^ 2) .^ (0.5);
D = cutoff ./ D;
D = D .^ (2 * n);
f = 1 ./ (1 + D);
end
dft和idft函数由我自己实现,由于我在某些图像上对其进行了测试,因此我可以保证它们没有错误。但是,当我在图像上同时应用Butterworth高通滤波器和高频重点时,我无法获得正确的输出图像。输出的图像完全空白。