Je tente d'animer une image sinusoïdale simple. Logiquement, ceci peut être accompli avec une image de Fourier-espace qui a la puissance dans exactement 1 composant réel (pixel), et changeant graduellement la composante imaginaire correspondante de pixel (valeur de phase). Le code ci-dessous produit un réseau horizontal qui se déplace très progressivement vers le bas. Pourtant, le décalage est lent, et une fois que la phase dépasse une certaine valeur, l'image ne s'anime plus. Quelles sont les unités et la gamme du composant de phase? Qu'est-ce que j'oublie ici?traduction dans l'espace Fourier
import numpy as np, matplotlib as mpimg
f = (np.zeros([33, 33]) + 0j) # blank Fourier image
f[14, 16] = (1 + 0j) # a single component with power
steps = range(16) # number of images to produce
for i in range(len(steps)):
c = np.fft.ifft2(np.fft.ifftshift(f, axes=[0, 1])) # grating image (cartesian)
mpimg.imsave('grating %02i.png' % i, c, cmap='gray') # save image
f[14, 16] += complex(0, 1/16.0) # increment phase
C'est tout! Mais énoncé plus clairement, d'abord calculer l'angle formé entre les composants réels et imaginaires avec 'atan2 (Im, Re)'. Puis incrémenter l'angle résultant d'une valeur de pas. Enfin, remplacez le composant de Fourier d'origine par 'complex (cos (new_angle), sin (new_angle)'. – jdobres