Итак, мой основной код выглядит следующим образом:
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 - размеры с добавлением нуля для входной фотографии.
Мой код для реализации фильтра Баттерворта:
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 реализованы мной, и я могу гарантировать, что они безошибочны, так как я протестировал их на каком-то изображении.Однако, когда я применяю высокочастотный фильтр Баттерворта вместе с высокочастотным акцентом на изображение, я не могу получить правильное выходное изображение.Выходное изображение полностью пустое.
Изображение во всей программе