Принимая преобразование Фурье после сдвига фазы

Я пытаюсь изменить фазу изображения и использую его преобразование Фурье. Но это изменение в фазе вызывает утечку мощности вдоль оси x и y.

Предположим, что мое изображение является единой матрицей. Если я возьму преобразование Фурье, я получу Спектр всех, Видите, что вся сила в центре. На самом деле, если вы не приблизитесь, мы не сможем увидеть все это.

Теперь предположим, что я умножил матрицу на сложную синусоиду. В идеале сила должна просто сместиться на частоту синусоиды. Но это то, что я получаю Спектры фазового умножения изображения, Обратите внимание на силу, которая течет по осям X и Y..

Почему это происходит? Это из-за непостоянной природы сигналов?

Пожалуйста, смотрите код Python ниже

import numpy as np
from matplotlib import pyplot as plt

# Init a all one array
base_image = np.ones([1024,1024])

#Generate a array so that we can make a sinusoid using it
x_cords = np.arange(base_image.shape[1]) - base_image.shape[1]/2
x_cords = np.transpose(x_cords)/512
x_cords = x_cords.astype(float)
x_cords = np.tile(x_cords, [base_image.shape[0], 1])
y_cords = np.transpose(x_cords)

#Generate the sinusoid
phase = np.exp(x_cords + y_cords)

#Apply this shift
new_image = base_image * phase

spec_base = np.fft.fftshift(np.fft.fft2(base_image))
spec_new = np.fft.fftshift(np.fft.fft2(new_image))

plt.imshow(np.log(np.abs(spec_base)))
plt.show()

plt.imshow(np.log(np.abs(spec_new)))
plt.show()

Заранее спасибо за любые ответы

2 ответа

Решение

Если вы строите свой new_imageВы видите, что это не синусоида введите описание изображения здесь

Вот грубый метод создания синусоидального шаблона без использования комплексных чисел:

# create a sinusoid
F=4 ## select the frequency -- use an even integer to minimize spectral "leakage"
new_image = np.ones([X,Y])
for y in xrange(Y):
   for x in xrange(X):
      new_image[y][x] = sin(x/float(X)*pi*F)*sin(y/float(Y)*pi*F)

введите описание изображения здесь

Спектр мощности имеет минимальную утечку, и если вы увеличите масштаб, вы увидите, что пиковая мощность не является исходной и что на самом деле есть 4 пика из-за зеркалирования вокруг постоянного тока.

введите описание изображения здесь

Несколько моментов:

  • Все 1 - довольно частный случай - он точно периодический, поэтому БПФ не показывает спектральную утечку.
  • xcords а также ycords реальны, что означает phase реально - это не синусоида. Аргумент к exp должен быть мнимым.
  • Даже с правильным phase, если вы не выберете phase чтобы быть идеально периодическим в вашей области, вы получите спектральную утечку.
Другие вопросы по тегам