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 int16 en un numpy.ndarray de flottants en une seule passe.

Paramètres:
  • buffer – un tampon de type bytes contenant les échantillons.

  • count – nombre d’éléments à lire. -1 lit tout le tampon depuis offset jusqu’à la fin.

  • offset – nombre d’octets à ignorer au début du tampon.

  • outnumpy.ndarray de 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.ndarray de flottants de longueur count (ou le nombre d’échantillons disponibles lorsque count vaut -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 uint16 en un numpy.ndarray de flottants en une seule passe.

Paramètres:
  • buffer – un tampon de type bytes contenant les échantillons.

  • count – nombre d’éléments à lire. -1 lit tout le tampon depuis offset jusqu’à la fin.

  • offset – nombre d’octets à ignorer au début du tampon.

  • outnumpy.ndarray de 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.ndarray de flottants de longueur count (ou le nombre d’échantillons disponibles lorsque count vaut -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 int32 en un numpy.ndarray de flottants en une seule passe.

Paramètres:
  • buffer – un tampon de type bytes contenant les échantillons.

  • count – nombre d’éléments à lire. -1 lit tout le tampon depuis offset jusqu’à la fin.

  • offset – nombre d’octets à ignorer au début du tampon.

  • outnumpy.ndarray de 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.ndarray de flottants de longueur count (ou le nombre d’échantillons disponibles lorsque count vaut -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 uint32 en un numpy.ndarray de flottants en une seule passe.

Paramètres:
  • buffer – un tampon de type bytes contenant les échantillons.

  • count – nombre d’éléments à lire. -1 lit tout le tampon depuis offset jusqu’à la fin.

  • offset – nombre d’octets à ignorer au début du tampon.

  • outnumpy.ndarray de 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.ndarray de flottants de longueur count (ou le nombre d’échantillons disponibles lorsque count vaut -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.ndarray de 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.ndarray de flottants de même longueur que r contenant la magnitude (ou son logarithme) à chaque bin de fréquence.