ulab.utils — utilitaires d’aide ulab¶
Le sous-module ulab.utils fournit un petit ensemble d’utilitaires qui opèrent sur des objets numpy.ndarray mais qui se situent en dehors de la surface standard NumPy / SciPy. Ces utilitaires sont optimisés pour les schémas de streaming courants sur les cibles embarquées – tampons de périphériques de plus de 16 bits, spectres de magnitude sans allocation.
Convertisseurs de tampons¶
La fonction standard numpy.frombuffer() ne gère que les dtypes que numpy définit lui-même (uint8, int8, uint16, int16, float). Les utilitaires ci-dessous étendent cette couverture aux tampons d’octets int16 / uint16 / int32 / uint32 et renvoient un numpy.ndarray de flottants en une seule passe.
- ulab.utils.from_int16_buffer(buffer: bytes, *, count: int = -1, offset: int = 0, out: numpy.ndarray | None = None, byteswap: bool = False) numpy.ndarray¶
Convertit un tampon d’échantillons
int16en unnumpy.ndarrayde flottants en une seule passe.- Paramètres:
buffer – un tampon de type
bytescontenant les échantillons.count – nombre d’éléments à lire.
-1lit tout le tampon depuisoffsetjusqu’à la fin.offset – nombre d’octets à ignorer au début du tampon.
out –
numpy.ndarrayde flottants pré-alloué facultatif dans lequel écrire le résultat. Lorsqu’il est fourni, aucun nouveau tableau n’est alloué.byteswap – inverse l’ordre des octets de chaque élément avant la conversion – le bon réglage lorsque le tampon provient d’un périphérique qui a écrit dans l’ordre d’octets inverse de celui du CPU de la caméra.
- Renvoie:
un
numpy.ndarrayde flottants de longueurcount(ou le nombre d’échantillons disponibles lorsquecountvaut-1).
- ulab.utils.from_uint16_buffer(buffer: bytes, *, count: int = -1, offset: int = 0, out: numpy.ndarray | None = None, byteswap: bool = False) numpy.ndarray¶
Convertit un tampon d’échantillons
uint16en unnumpy.ndarrayde flottants en une seule passe.- Paramètres:
buffer – un tampon de type bytes contenant les échantillons.
count – nombre d’éléments à lire.
-1lit tout le tampon depuisoffsetjusqu’à la fin.offset – nombre d’octets à ignorer au début du tampon.
out –
numpy.ndarrayde flottants pré-alloué facultatif dans lequel écrire le résultat. Lorsqu’il est fourni, aucun nouveau tableau n’est alloué.byteswap – inverse l’ordre des octets de chaque élément avant la conversion – le bon réglage lorsque le tampon provient d’un périphérique qui a écrit dans l’ordre d’octets inverse de celui du CPU de la caméra.
- Renvoie:
un
numpy.ndarrayde flottants de longueurcount(ou le nombre d’échantillons disponibles lorsquecountvaut-1).
- ulab.utils.from_int32_buffer(buffer: bytes, *, count: int = -1, offset: int = 0, out: numpy.ndarray | None = None, byteswap: bool = False) numpy.ndarray¶
Convertit un tampon d’échantillons
int32en unnumpy.ndarrayde flottants en une seule passe.- Paramètres:
buffer – un tampon de type bytes contenant les échantillons.
count – nombre d’éléments à lire.
-1lit tout le tampon depuisoffsetjusqu’à la fin.offset – nombre d’octets à ignorer au début du tampon.
out –
numpy.ndarrayde flottants pré-alloué facultatif dans lequel écrire le résultat. Lorsqu’il est fourni, aucun nouveau tableau n’est alloué.byteswap – inverse l’ordre des octets de chaque élément avant la conversion – le bon réglage lorsque le tampon provient d’un périphérique qui a écrit dans l’ordre d’octets inverse de celui du CPU de la caméra.
- Renvoie:
un
numpy.ndarrayde flottants de longueurcount(ou le nombre d’échantillons disponibles lorsquecountvaut-1).
- ulab.utils.from_uint32_buffer(buffer: bytes, *, count: int = -1, offset: int = 0, out: numpy.ndarray | None = None, byteswap: bool = False) numpy.ndarray¶
Convertit un tampon d’échantillons
uint32en unnumpy.ndarrayde flottants en une seule passe.- Paramètres:
buffer – un tampon de type bytes contenant les échantillons.
count – nombre d’éléments à lire.
-1lit tout le tampon depuisoffsetjusqu’à la fin.offset – nombre d’octets à ignorer au début du tampon.
out –
numpy.ndarrayde flottants pré-alloué facultatif dans lequel écrire le résultat. Lorsqu’il est fourni, aucun nouveau tableau n’est alloué.byteswap – inverse l’ordre des octets de chaque élément avant la conversion – le bon réglage lorsque le tampon provient d’un périphérique qui a écrit dans l’ordre d’octets inverse de celui du CPU de la caméra.
- Renvoie:
un
numpy.ndarrayde flottants de longueurcount(ou le nombre d’échantillons disponibles lorsquecountvaut-1).
Spectrogramme¶
- ulab.utils.spectrogram(r: numpy.ndarray, imag: numpy.ndarray | None = None, *, scratchpad: numpy.ndarray | None = None, out: numpy.ndarray | None = None, log: bool = False) numpy.ndarray¶
Renvoie la magnitude de la transformée de Fourier discrète de l’entrée, conceptuellement équivalente à
np.sqrt(real * real + imag * imag)après un appel ànumpy.fft.fft()– sans allouer les tampons intermédiaires que la forme explicite nécessiterait.- Paramètres:
r – la partie réelle de l’entrée sous forme de
numpy.ndarrayde flottants 1-D. Sa longueur doit être une puissance de deux.imag – partie imaginaire facultative de l’entrée, de même forme que r. Si elle est omise, l’entrée est traitée comme purement réelle.
scratchpad – tampon de travail facultatif pour la FFT. Lorsqu’il est fourni, aucun tableau de travail temporaire n’est alloué.
out – tampon de destination pré-alloué facultatif pour le spectre de magnitude. Lorsqu’il est fourni, le résultat y est écrit directement.
log – lorsque
True, renvoie le logarithme népérien de la magnitude plutôt que la magnitude elle-même.
- Renvoie:
un
numpy.ndarrayde flottants de même longueur que r contenant la magnitude (ou son logarithme) à chaque bin de fréquence.