Сейчас я тестирую пакет fft
из numpy
. Я создал искусственное центросимметричное изображение c и сделал на нем 2D FFT, я взял мнимую часть и заметил, что она не равна нулю. Я не понимаю почему, ты хоть представляешь? Может быть, есть что-то, что мне не хватает, когда я перехожу от радиального профиля 1D к изображению 2D, я действительно не знаю ...
НОВОЕ ОБНОВЛЕНИЕ (новый пример):
import numpy as np
from scipy import interpolate
import matplotlib.pyplot as plt
I_min = 1.774E-6 #min(y_intensity[y_intensity!=0])
y = np.ones(50) #y_intensity[:50]
xv_3 = np.linspace(0,0.005,len(y))*1E3# x_intensity[:50]*1E3
new_r = np.linspace(-100,100,2**8)
interpol_index = interpolate.interp1d(xv_3, y)
X, Y = np.meshgrid(new_r,new_r)
profilegrid3 = np.ones(X.shape, float)
for i, x in enumerate(X[0, :]):
for k, z in enumerate(Y[:, 0]):
current_radius = np.sqrt(x**2 + z**2)
cond=np.logical_or(current_radius>=max(xv_3),current_radius<=min(xv_3))
if cond == True :
profilegrid3[i, k] = I_min
else :
profilegrid3[i, k] = interpol_index(current_radius)
plt.figure()
plt.imshow(np.imag(np.fft.ifftshift(np.fft.fft2(np.fft.fftshift(profilegrid3)))))
plt.colorbar()
plt.show()
Изображение:
Imaginary Part :
введите описание изображения здесь