Lors de la conversion d'un signal analogique en signal numérique, vous ne pouvez observer que des fréquences jusqu'à 1/2 de la fréquence d'échantillonnage $ f_s $. Cette fréquence est appelée fréquence de Nyquist, mais on sait que même si les vibrations dépassant cette fréquence de Nyquist sont incluses, elles ne peuvent pas être observées. Les vibrations au-dessus de cette fréquence de Nyquist sont traitées comme des fréquences basses. Le traitement des vibrations haute fréquence qui dépassent la fréquence de Nyquist comme des fréquences basses est appelé aliasing (bruit de repliement).
Considérant la transformée de Fourier discrète des données avec des nombres $ N $ de $ x_0 $ à $ x_ {N-1} $
C_k = \frac{1}{N}\sum_{m=0}^{N-1} x_me^{-i\frac{2\pi km}{N}}
k = 0, 1, 2, …, N-1
La fréquence correspondant à k est
f_k = \frac{kf_s}{N}
Ce sera. Puisque k existe jusqu'à (N-1), il devient $ f_ {N-1} = \ frac {(N-1) f_s} {N} $, et même les vibrations dépassant la fréquence de Nyquist de $ f_s / 2 $ peuvent être exprimées. C'est vrai ..., $ C_k $ et $ C_ {Nk} $ sont connus pour être des nombres complexes conjugués l'un à l'autre.
C_k = C_{N-k}^*
Par conséquent, le wrapping se produit centré sur $ f_s / 2 $. N'ayez pas peur de vous méprendre, l'onde $ C_ {N-k} $ sera traitée comme une onde de fréquence $ C_k $.
Utilisez numpy pour générer une image haute résolution (5000x5000). Ceci est considéré comme un signal pseudo analogique.
import numpy as np
import matplotlib.pyplot as plt
#Spécifiez la taille de l'image
img_size_origin = 5000
#Matrice zéro comme image
img = np.zeros([img_size_origin, img_size_origin])
#Les valeurs des pixels de l'image dépendent de la coordonnée y
y = np.arange(img_size_origin)
#Période 100 pixels
amp = np.sin(2*np.pi*0.01*y)
for i in range(img_size_origin):
img[:, i] = amp
plt.imshow(img, cmap="gray")
plt.show()
Cela générera une image avec 50 bandes. Puisqu'il a 50 bandes, si l'image entière est considérée comme un cycle, il y a des ondes de 50 Hz.
Extrayez seulement 1 pixel par [comp × comp] de cette image et générez une nouvelle image. Si comp = 5, les pixels extraits seront aux coordonnées [3 + 5n, 3 + 5m]. (n> = 0, m> = 0)
comp = 99
#Calculer la taille de l'image de sortie
img_size = img.shape[0]//comp
print(img_size)
#Image de sortie
img_comp = np.zeros([img_size, img_size])
#[comp×comp]Extraire uniquement le pixel central des pixels de
for i in range(img_size):
for j in range(img_size):
img_comp[i, j] = img[(i*comp) + (comp//2), (j*comp) + (comp//2)]
plt.imshow(img_comp, cmap="gray")
plt.show()
plt.plot(img_comp[:, 0])
plt.show()
Je n'ai pas pu bien observer l'onde de 50 Hz, et c'est devenu une onde de 0,5 Hz.
Je ne pouvais pas bien observer l'onde de 50 Hz, et c'est devenu une onde de 1 Hz.
Je ne pouvais pas bien observer l'onde de 50 Hz, et il s'est avéré être une onde de 2 Hz.
Il semble que beaucoup d'images mystérieuses puissent être réalisées (petite sensation moyenne)
Recommended Posts