ulab.utils — pomocnicze narzędzia ulab#
Podmoduł ulab.utils udostępnia niewielki zestaw funkcji pomocniczych, które operują na obiektach numpy.ndarray, lecz znajdują się poza standardowym zakresem NumPy / SciPy. Funkcje pomocnicze są dostrojone do wzorców strumieniowych typowych dla urządzeń wbudowanych – buforów peryferyjnych szerszych niż 16 bitów oraz widm amplitudowych bez alokacji.
Konwertery buforów#
Standardowa numpy.frombuffer() obsługuje wyłącznie dtypy, które numpy sam definiuje (uint8, int8, uint16, int16, float). Poniższe funkcje pomocnicze rozszerzają to pokrycie na bufory bajtowe int16 / uint16 / int32 / uint32 i zwracają numpy.ndarray typu float w jednym przebiegu.
- ulab.utils.from_int16_buffer(buffer: bytes, *, count: int = -1, offset: int = 0, out: numpy.ndarray | None = None, byteswap: bool = False) numpy.ndarray#
Konwertuje bufor próbek
int16nanumpy.ndarraytypu float w jednym przebiegu.- Parametry:
buffer – bufor przypominający
byteszawierający próbki.count – liczba elementów do odczytania.
-1odczytuje cały bufor odoffsetdo końca.offset – liczba bajtów do pominięcia na początku bufora.
out – opcjonalna, wstępnie zaalokowana
numpy.ndarraytypu float, do której zostanie zapisany wynik. Gdy jest podana, nie jest alokowana nowa tablica.byteswap – odwraca kolejność bajtów każdego elementu przed konwersją – właściwe ustawienie, gdy bufor pochodzi z urządzenia peryferyjnego, które zapisało dane w odwrotnej kolejności bajtów niż CPU kamery.
- Zwraca:
numpy.ndarraytypu float o długościcount(lub o dostępnej liczbie próbek, gdycountwynosi-1).
- ulab.utils.from_uint16_buffer(buffer: bytes, *, count: int = -1, offset: int = 0, out: numpy.ndarray | None = None, byteswap: bool = False) numpy.ndarray#
Konwertuje bufor próbek
uint16nanumpy.ndarraytypu float w jednym przebiegu.- Parametry:
buffer – bufor przypominający bytes zawierający próbki.
count – liczba elementów do odczytania.
-1odczytuje cały bufor odoffsetdo końca.offset – liczba bajtów do pominięcia na początku bufora.
out – opcjonalna, wstępnie zaalokowana
numpy.ndarraytypu float, do której zostanie zapisany wynik. Gdy jest podana, nie jest alokowana nowa tablica.byteswap – odwraca kolejność bajtów każdego elementu przed konwersją – właściwe ustawienie, gdy bufor pochodzi z urządzenia peryferyjnego, które zapisało dane w odwrotnej kolejności bajtów niż CPU kamery.
- Zwraca:
numpy.ndarraytypu float o długościcount(lub o dostępnej liczbie próbek, gdycountwynosi-1).
- ulab.utils.from_int32_buffer(buffer: bytes, *, count: int = -1, offset: int = 0, out: numpy.ndarray | None = None, byteswap: bool = False) numpy.ndarray#
Konwertuje bufor próbek
int32nanumpy.ndarraytypu float w jednym przebiegu.- Parametry:
buffer – bufor przypominający bytes zawierający próbki.
count – liczba elementów do odczytania.
-1odczytuje cały bufor odoffsetdo końca.offset – liczba bajtów do pominięcia na początku bufora.
out – opcjonalna, wstępnie zaalokowana
numpy.ndarraytypu float, do której zostanie zapisany wynik. Gdy jest podana, nie jest alokowana nowa tablica.byteswap – odwraca kolejność bajtów każdego elementu przed konwersją – właściwe ustawienie, gdy bufor pochodzi z urządzenia peryferyjnego, które zapisało dane w odwrotnej kolejności bajtów niż CPU kamery.
- Zwraca:
numpy.ndarraytypu float o długościcount(lub o dostępnej liczbie próbek, gdycountwynosi-1).
- ulab.utils.from_uint32_buffer(buffer: bytes, *, count: int = -1, offset: int = 0, out: numpy.ndarray | None = None, byteswap: bool = False) numpy.ndarray#
Konwertuje bufor próbek
uint32nanumpy.ndarraytypu float w jednym przebiegu.- Parametry:
buffer – bufor przypominający bytes zawierający próbki.
count – liczba elementów do odczytania.
-1odczytuje cały bufor odoffsetdo końca.offset – liczba bajtów do pominięcia na początku bufora.
out – opcjonalna, wstępnie zaalokowana
numpy.ndarraytypu float, do której zostanie zapisany wynik. Gdy jest podana, nie jest alokowana nowa tablica.byteswap – odwraca kolejność bajtów każdego elementu przed konwersją – właściwe ustawienie, gdy bufor pochodzi z urządzenia peryferyjnego, które zapisało dane w odwrotnej kolejności bajtów niż CPU kamery.
- Zwraca:
numpy.ndarraytypu float o długościcount(lub o dostępnej liczbie próbek, gdycountwynosi-1).
Spektrogram#
- 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#
Zwraca amplitudę dyskretnej transformaty Fouriera wejścia, pojęciowo równoważną
np.sqrt(real * real + imag * imag)po wywołaniunumpy.fft.fft()– bez alokowania buforów pośrednich, które wymagałaby postać jawna.- Parametry:
r – część rzeczywista wejścia jako 1-wymiarowa
numpy.ndarraytypu float. Jej długość musi być potęgą dwójki.imag – opcjonalna część urojona wejścia, o tym samym kształcie co r. W przypadku pominięcia wejście traktowane jest jako czysto rzeczywiste.
scratchpad – opcjonalny bufor roboczy dla FFT. Gdy jest podany, nie jest alokowana tymczasowa tablica robocza.
out – opcjonalny, wstępnie zaalokowany bufor docelowy dla widma amplitudowego. Gdy jest podany, wynik jest zapisywany bezpośrednio do niego.
log – gdy
True, zwraca logarytm naturalny amplitudy zamiast samej amplitudy.
- Zwraca:
numpy.ndarraytypu float o tej samej długości co r, zawierająca amplitudę (lub jej logarytm) w każdym prążku częstotliwości.