Я пытаюсь реализовать на python некоторые функции, которые преобразуют изображения в их пространственный диапазон и наоборот для задач обработки изображений.
Я реализовал 2D-DFT с использованием повторного 1D-DFT, и он работал нормально, но когда я попытался реализовать 2D-обратный ДПФ с использованием повторного обратного 1D-DFT, возникла какая-то странная проблема - когда я преобразовываю изображение в его дальний домен и затем обратно в область изображения, это выглядит как изображение было отражено и слился с его отражением, как можно видеть здесь:Внедрение 2D-обратного преобразования Фурье с использованием 1D-преобразований
это вход:
и это выход
Это функция, которая отвечает за беспорядок:
def IDFT2(fourier_image):
image = np.zeros(fourier_image.shape)
for col in range(image.shape[1]):
image[:, col] = IDFT1(fourier_image[:, col])
for row in range(image.shape[0]):
image[row, :] = IDFT1(image[row,:])
return image
Что я сделал не так? Я почти уверен, что IDFT1 работает отлично, а также обычный 2D-DFT.
Почему у вас IDFT1 (fourier_image [:, col]) для столбцов и IDFT1 (изображение [строка ,:]) для строк, а не IDFT1 (fourier_image [строка,:])? Укажите код IDFT1. – DimKoim
Как я понял, на втором проходе (строках) мне нужно оперировать над выходом предыдущей ступени (проход над колонками). Я ошибаюсь? –
@montecarlo вы редактируете изображения (я их добавляю), скорее всего, по ошибке. Это '! [Bla bla] [1]' в методе разметки означает первую ссылку на изображение из списка ссылок в конце. символ '!' означает изображение без него, просто ссылка – Spektre