Procesory sygnałowe w przetwarzaniu grafiki kompresja obrazów Kompresja obrazów prowadzi di do istotnej redukcji liczby przesyłanych danych, kosztem wzrostu wykonywanych obliczeń. Joint Photographic Experts Group kodowanie nieruchomych obrazów Doskonale nadaje się do kodowania grafiki o różnym stopniu kompresji w zależności od aktualnych potrzeb; nie nadaje się do kodowania tekstu (utrata rozróżniania znaków przy małych rozdzielczościach) Kompresja jest stratna; przy kompresji rzędu 10:1, 20:1 widać wyraźnie utratę szczegółów
Podział obrazu na małe bloki Kompresja obrazów JPEG używa JPEG File Interchange Format (JFIF), o rozszerzeniach nazw plików:.jpg lub.jff. M JPEG, MPEG, to rozszerzenie dla plików video
Kompresja obrazów Dzielimy obraz na mniejsze bloki i poddajemy transformacie w dziedzinę częstotliwości (transformata cosinusowa) Transformata wykorzystuje właściwość oka ludzkiego, bardziej czułegoł na składowe wolnozmienne (duże fragmenty rysunku) niż szybkozmienne (detale na rysunku)
Kompresja obrazów Po wykonaniu transformaty kosinusowej, następuje kodowanie jej składowych: małoczęstotliwościowych z dużą dokładnością (za pomocą liczb o dużej rozdzielczości) szybkozmiennych z małą dokładnością (za pomocą ograniczonej liczby bitów) Podczas dekodowania używamy odwrotnej transformaty kosinusowej, i odzyskujemy z utratą szczegółów obraz pierwotny
Kompresja obrazów Dwuwymiarowa dyskretna transformata kosinusowa (DCT) 8x8 wymaga kilkuset cykli zegarowych obliczeń na typowym procesorze sygnałowym (np. TMS320C55x). Algorytmy kompresji video wykonują znacznie większą liczbę transformat DCT oraz transformaty odwrotnej IDCT. Przykładowo, dekoder video w standardzie MPEG 4, dla rozdzielczości VGA (640x480) i liczbie 30 fps (frames per second) wymaga około 216,000 8x8 IDCT/s. W starszych wersjach codec ów IDCT zajmuje około 30% cykli pracy procesora. Nowsze algorytmy (np. H.264) zajmują tylko klk kilka%.
Kompresja obrazów Obrazy podlegają kwantowaniu i zapisywaniu na różnych liczbach bitów, w zależności od pasma do którego należą Przykład dotyczy przejścia z 12 bitowej na 5 bitową reprezentację liczb a następnie po zdekodowaniu ponownie na 12 bitową
Kompresja obrazów Operacja kwantyzacji zajmuje w starszych codec ach kilka % całego algorytmu (np. MPEG 2),natomiast t w nowszych algorytmach jest do zaniedbania. Przetwarzanie małych obrazów (np. 8x8) nie stwarza praktycznie żadnych wymagań na dodatkową pamięć wukładzie. Po skwantowaniu następuje kodowanie. Wykorzystuje się fakt, że spora część współczynników o wyższych częstotliwościach jest zerowa. Stąd, tzw. run length coding grupuje występujące po sobie zerowe wartości (run) i dekoduje tylko ich liczbę (length) zamiast wartości. Po tej operacji następuje tzw. variable length coding (VLC), grupujące powtarzające się wartości ś i przypisujące im mniejszą ij liczbę bitów podczas kodowania.
Kompresja obrazów Podczas dekodowania należy zastosować. variable length decoding (VLD), który jest bardziej wymagający obliczeniowo niż VLC. Potrzebujemy tablicę dekodującą oraz operacje porównania. Jeden bit zakodowany wymaga średnio około 11 operacji podczas dekodowania. To odpowiada około ¼ wszystkich obliczeń podczas dekodowania. Nowsze układy codec ów (np. H.264) stosują bardziej złożone kodowanie: CAVLC (Context Adaptive VLC) oraz CABAC (Context Adaptive Arithmetic Coding) które uzależniają kodowanie od poprzednio zdekodowanych wartości. Takie podejście powoduje większe zapotrzebowanie na obliczenia, nawet do ½ wszystkich obliczeń dla CABAC. Podczas dekodowania całych obrazów uwzględnia się podobieństwa między poszczególnymi dekodowanymi obrazkami 8x8, dekodując różnicę między sąsiednimi i i pikselami, i pochodzącymi z różnych bloków, wcześniej już zdekodowanych.
Kompresja obrazów Standard MPEG 4 wykorzystuje bardziej zaawansowany algorytm, przewidujący wartości pikseli w każdym rzędzie i kolumnie analizowanego bloku 8x8. 8 Standard H.264 oznacza bardziej złożone dekodowanie. Współczynniki są dekodowane a następnie poddawane transformacie odwrotnej, aby wyznaczyć rezyduum, które jest dodawane do przewidywanej wartości piksela. Obrazy kolorowe są analizowane niezależnie dla poszczególnych kolorów podstawowych (np.: RGB) lub oddzielnie dla luminancji (jasność) i chrominancji (zakodowanej barwy składającej się z wielu kolorów) Oko ludzkie jest bardziej czułe na luminancję niż na chrominancję, stąd dkdj dekodujemy obrazy o rozdzielczości dil ś i 16x16 dla luminancji i mniejszej rozdzielczości 8x8 dla chrominancji
Kompresja video Stosujemy podobne mechanizmy jak dla pojedynczych obrazów. Dodatkowo uwzględniamy przy kompresji informację o podobieństwie kolejnych obrazów (ramek). Standard JPEG pozwala na kompresję rzędu 10:1, bardziej zaawansowane kodeki dopuszczają 30:1, natomiast dla video mamy nawet 200:1 Stosujemy dwa mechanizmy: Motion Estimation próbujemy znaleźć fragment obrazu z poprzedniej ramki jaki pasuje do bieżącej ramki; przesunięcie między tymi fragmentami jest nazywane Motion Vector; podczas dekodowania mamy informację o różnicy między pikselami dla kolejnych ramek oraz wartość Motion Vector; Motion Compensation operacje kopiowania obszaru z jednej ramki do przesuniętego obszaru na drugiej ramce
Kompresja video Wykrywanie y ruchu obiektów Motion Vectors
Kompresja video Obraz dekodujemy na podstawie ramek: Dekodowanych jako obrazy stałe(i) Dekodowanych na podstawie poprzednich ramek (P) Dekodowanych na postawie poprzednich oraz przyszłych ramek (B) Podczas dkd dekodowania, co pewien czas ramkę dkdj dekodujemy jk jako obraz stały Do oceny podobieństwa ń obrazów używamyż sumy modułu ł zróżnic między pikselami lub sumy z kwadratów różnic, co wymaga większej liczby obliczeń; np.: dla obrazu QVGA (640x480) i30ramekna sekundę potrzeba 8 10 9 operacji arytmetycznych. Stąd, w praktyce ograniczamy się do 10 100 potencjalnych wartości Motion Vectors, wyznaczanych kilkukrotnie aby wyeliminować niektóre wstępnie zaproponowane wartości; drugie podejście uwzględnia Motion Vectors wyznaczone już dla sąsiednich bloków. Takie podejście redukuje liczbę obliczeń nawetodwarzędy.
Kompresja video
Kompresja video Niektóre standardy (H.264) umożliwiają dekodowanie bloków 16x16 i (jeśli zachodzi taka potrzeba) podział na mniejsze podbloki (np.: 8x8, 4x8, 8x4, 4x4) aby uzyskać poprawę jakości (ograniczyć błąd predykcji wartości dekodowanych pikseli). Kodowanie video wymaga wykonania więcej instrukcji niż dekodowanie. Ponadto, ok. 80% zajmują ją operacje związanieą z Motion Estimation. Stąd, część procesorów posiada specjalne instrukcje do obliczania modułu/kwadratu z różnic lub nawet niezależny układ przeznaczony tylkodo operacji kodowania. Przy kompresji video rosną także wymagania na pamięć podręczną procesora (trzeba przechowywać jednocześnie kilka ramek obrazu zwykły cache stosowany przy operacjach filtracji jest niewystarczający)
Kompresja video Dla przesunięć o liczbę pikseli nie będącą liczbą całkowitą, stosujemy aproksymację do ułamkowychczęści piksela (np. ¼) Większość standardów kodowania video określa tylko format strumienia danych oraz przyjęte kroki dekodowania. Sposób podejścia do kodowania obiektów ruchomych jest przyczyną, która różnicuje kodeki, ki stanowiącą tj tajemnicę producenta oprogramowania. Motion Compensation jest prostszym obliczeniowo zadaniem; obciążenie obliczeniowe procesora zależy od obrazu i nie przekracza zwykle 40% cykli zegarowych przeznaczonych przez procesora na dekodowanie obrazu.
Kompresja video Kompresja video powoduje powstawanie niepożądanych efektów: Blocking błędy powstające na granicach przetwarzanych bloków ze względu na powstawanie różnych błędów na sąsiednich blokach Ringing błędy powstające przy krawędziach obiektów, ze względu na odrzucenie części informacji o składowych szybkozmiennych obrazu w wyniku kwantyzacji na ograniczonej liczbie bitów Celem redukcji tych błędów stosujemy dodatkową filtrację, w trakcie dekodowania lub już po tej operacji. Dodatkowa operacja zwiększa wymagania na pamięć trzeba przechowywać ramkę odniesienia
Kompresja video Po zdekodowaniu należy obraz przed wyświetleniem przekształcić do postaci akceptowanej przez urządzenie wyświetlające. Zwykle, oznacza to przejście z zapisu obrazu w postaci sygnału luminacji i chrominancji na obraz RGB odpowiadający trzem kolorom. Ta transformacja wymaga ~12 operacji arytmetycznych t dla każdego piksela oraz dodatkowo interpolacji chrominancji, która podczas kodowaniawymagałamniejszej j rozdzielczości niż sygnał luminancji
Kompresja standard H.264 H.264 SVC (Scalable Video Codec) Obecnie istnieje potrzeba przesyłania video do wielu różnych urządzeń, kanałami o różnej przepustowości oraz urządzeń oróżnej mocy obliczeniowej. Dlatego musimy mieć kodek, który może zmieniać i ć wymagania co do rozdzielczości, dil ś i liczby przesyłanychł danych oraz liczby wymaganych obliczeń. Rozwiązaniemą jest standard, który na kilku różnych warstwach dekoduje od podstawowego obrazu z głównymi szczegółami po coraz bardziej złożone
Kompresja standard H.264 H.264 SVC (ScalableVideol Codec) ) Ten standard pozwala przy zmiennych warunkach transmisji sygnału i różnych parametrach a ac urządzeń odbiorczych o dopasować ać się ę do bieżących możliwości transmisji oraz odbioru
Kompresja standard H.264 SVC Zamiast typowej struktury ramek I, P, B, jak wyżej, stosuje się strukturę hierarchiczną, wg. której wyznaczamy ramki na podstawie poprzednich ramek: tzn. T1 i T2 jest wyznaczana na podstawie T0, natomiast T3 jest wyznaczana tylko T1 i T2. Dzięki temu uzyskujemy skalowalność: dlaszybkości 3.75 fps dekodujemy tylko T0, dla 7.5 fps dekodujemy T0 i T1 (T2 i T3 zaniedbujemy), natomiast dla 15 fps T0, T1 i T2. Wszystkieramki są dkd dekodowane dla 30 fps.
Kompresja standard H.264 SVC Struktura hierarchiczna zapewnia: łatwe usuwanie błędów transmisji (przechodzenie do niższej rozdzielczości praktycznie w sposób niezauważalny) Przechowywanie mniejszych plików bez potrzeby dodatkowego kodowania Możliwość emisji strumienia danych jednocześnie do wszystkich urządzeń w sieci sec (urządzenia ao mniejszej rozdzielczości od ecośc korzystają wówczas nie ze wszystkich emitowanych ramek) To rozwiązanie wymagazarządzania ramkami na różnych poziomach To rozwiązanie wymagazarządzania ramkami na różnych poziomach hierarchii ale to zadanie nie jest wymagające obliczeniowo
Kompresja standard H.264 AVC i SVC Advanced Video Codec (bez struktury hierarchicznej) Scalable Video Codec Zastosowanie do systemu monitorowania AVC wymaga, aby kamera generowała dwa sygnały o różnej rozdzielczości, co zwiększa wymagania na kamerę i sieć przesyłową; konieczność przeskalowywania rozdzielczości do różnych urządzeń SVC serwer dokonuje prostego dekodowania na różne rozdzielczości
Kompresja video istniejące standardy International Telecommunications Union (ITU) standardy transmisji H.26x International Standards Organization (ISO) standardy odbioru (konsumenta) MPEG, różne wersje
Kompresja video istniejące standardy H.261, zdefiniowany przez ITU, jeden z pierwszych standardów kompresji sygnału video. Przeznaczony do transmisji dwukanałowej (telekonferencje dla sieci ISDN 40kbps 2Mbps); dla obrazów o rozdzielczości 352X288 (CIF) oraz 176X144 (QCIF); wykorzystuje tylko ramki typu (I) oraz (P), ze względu na czułość na opóźnienia MPEG 1, zdefiniowany przez ISO, do celów przechowywania oraz odtwarzania sekwencji video na przenośnymś sprzęcie cyfrowym (CD) z rozdzielczości 352x240 dla 29.97 fps lub 352X288 dla 25 fps i prędkości ę transmisji 1.15 Mbps. MPEG 1 jest zbliżony właściwościami do H.261 ale wymaga większej liczby obliczeń, niezbędnych przy przetwarzaniu dynamicznych obrazów jakie występują w filmach, w stosunku do bardziej statycznych obrazów podczas telekonferencji. Kolejne wersje H 262 i MPEG 2 zapewniały większą jakość oraz Kolejne wersje H.262 i MPEG 2 zapewniały większą jakość oraz skalowalność przetwarzanych obrazów
Kompresja video istniejące standardy Kolejne wersje standardów kompresji charakteryzowały się większą odpornością ś na błędy transmisji (zastosowania wsieciach i bezprzewodowych) oraz skalowalnością ilepszą jakością obrazów H.264/MPEG 4 AVC wspólny standard ITU/ISO z 2003 r. video jakości VHS przy prędkości transmisji poniżej 600 Kbps; możliwość usługi video on demand za pomocą modemów ADSL (2x lub nawet 4x lepsza kompresja niż poprzednicy). filmy o rozdzielczości HD mieszczą się na typowym nośniku DVD. Windows Media Video 9 / VC 1 produkt firmy Microsoft, wspiera transformację na 16 bitowych liczbach całkowitych; operuje na blokach o różnych rozmiarach: 8x8, 8x4, 4x8 and 4x4.
Kompresja video Wybór kodeków do różnych aplikacji
Algorytm Goertzel a (1958 r.) DTMF Dual Tone Multiple Frequency dekoduje przyciski ycs klawiatury atu w sygnał dwutonowy o G j i j t tli ś i k 700 1700 H Generuje i rozpoznaje częstotliwości z zakresu 700 1700 Hz przy częstotliwości próbkowania 8kHz
Algorytm Goertzel a realizacja Generator sinusoidy jest rozpatrywany jako filtr o dwóch biegunachicharakterystyce: begu c a a oraz następujących zależnościach na współczynniki: ikońcowym równaniu opisującymsygnał yg wyjściowy y z generatora, wraz z wartościami początkowymi
Algorytm Goertzel a realizacja Kodowanie częstotliwości odbywa się za pomocą dwóch filtrów. Takie rozwiązanie nie wymaga dużej liczby obliczeń oraz pamięci na współczynniki filtrów
Algorytm Goertzel a realizacja Wyznaczenie X(k) ( ) wymagadtf, FFTlubbankufiltrów. Zgodnie z definicją DFT (ze względu na okresowość exp(j2πkn/n): Wartości transformaty X(k)można przedstawić za pomocą filtru: gdzie Wartość X(k)można interpretować jakowyjście filtru y(m)gdy m = N
Algorytm Goertzel a realizacja Wartości y k (m) wyznaczamy z równania na filtr: k Który można zrealizować jakofiltr o strukturze: Co wymaga mnożeń przez liczby zespolone
Algorytm Goertzel a realizacja Mnożenia dwóch liczb zespolonych można wyeliminować mnożąc równanie przez biegun sprzężony i uzyskując strukturę: Opisaną równaniami:
Algorytm Goertzel a realizacja Do wykrycia obecności danego tonu wymagane jest moduł kwadratu (energia) sygnału, stąd mamy: Cowymagatylkododawaniaimnożenia liczba rzeczywistych