Kwantyzacja to nazwa grupy przekształceń sygnałów (np. dźwięku, obrazu, wartości odczytanej z czujnika), która zmniejsza precyzję sygnałów, aby mogły one zostać przetworzone przez jakieś urządzenie. W ramach zajęć będziemy zmniejszać rozdzielczość bitową obrazu poprzez zmniejszanie ilości bitów, na jakich będzie zapisany pojedynczy piksel naszego obrazu. Będziemy również testować skuteczność algorytmów, które mają na celu poprawę jakości wyświetlania/drukowania obrazów przy bardzo małej ilości informacji jednak zwiększając ich czytelność w stosunku do czystej kwantyzacji.
W celu ułatwienia pracy i uniknięcia problemów przy pracy z niektórymi algorytmami można pracować na zmiennoprzecinkowym typie danych float
(zakres \(<0,1>\)). Należy tylko pilnować, żeby po redukcji rozdzielczości bitowej, aby ilość wartości naszego obrazu nie przekraczała założonej ilości. Przykładowo dla 4-bitowej dokładności wartości koloru powinno być 16 (\(2^4=16\)). Można to w łatwy sposób sprawdzić przy wykorzystaniu funkcji:
np.unique(zmienna).size
Poniżej kilka przykładów redukcji rozdzielczości bitowej (kwantyzacji) dla obrazów kolorowych i w skali odcieni szarości.
Przykłady kwantyzacji przy użyciu ColorFit
Dithering
Dithering to zamierzony efekt zastosowania szumu w celu zniwelowania błędu kwantyzacji. W trybie kolorowym próba stworzenia koloru poprzez kompozycję kilku barw z dostępnej palety, gdy kolor oryginalny nie może zostać bezpośrednio wyświetlony. W trybie czarno-białym podobna symulacja jak w trybie kolorowym, lecz z zastosowaniem do odcieni szarości. Przeanalizujemy tutaj kilka rozwiązań, mających na celu poprawię wyglądu obrazów w celu poprawy jakości wizualnej obrazów o zmniejszonej rozdzielczości bitowej. Wszystkie przykładowe wizualizacje opisanych tu metod zostały zebrane na końcu fragmentu opisującego Dithering.