Высокочастотный акцент с применением высокочастотного фильтра Баттерворта в MATLAB

Итак, мой основной код выглядит следующим образом:

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

Изображение на протяжении всей программы

0 ответов

Другие вопросы по тегам