Rosnąca popularność sieciowych systemów telewizyjnych, w tym także systemów monitoringu IP, pociąga za sobą stały rozwój metod kompresji obrazów telewizyjnych. W literaturze poświęconej tej tematyce jest dostępnych wiele opracowań, których cechą wspólną jest znaczny stopień szczegółowości, a co za tym idzie brak czytelnego opisu podstaw działania tych standardów.
Poniższy artykuł traktuje temat opisowo i jest adresowany do szerokiej rzeszy projektantów i instalatorów systemów monitoringu wizyjnego, dla których szczegóły skomplikowanych rozważań matematycznych nie są istotne. Został on opracowany na podstawie dokumentu H.264/MPEG4 Part 10 White Paper oraz licznych publikacji Iaina Richardsona, dyrektora Centre for Video Communications, profesora School of Engineering w Aberdeen. Iain Richardson uchodzi obecnie za jednego z najlepszych znawców tematyki kompresji ruchomych obrazów telewizyjnych i jest współtwórcą standardu H.264.
W dokumencie Recommendation H.264: Advanced Video Coding, opublikowanym w roku 2003 przez ITU i ISO/IEC, metoda H.264, pozwalająca na kompresję ruchomych obrazów telewizyjnych, została uznana za standard przemysłowy, co przyczyniło się do jej szybkiego upowszechnienia. Dotyczy to zarówno zastosowań związanych z zapisem i przekazem programów telewizyjnych, jak i zamkniętych systemów monitoringu wizyjnego. We wszystkich tych przypadkach zasada kompresji jest identyczna, różnice mogą dotyczyć jedynie specyfiki poszczególnych aplikacji.
Na rys. 1 przedstawiony jest schemat blokowy, wyjaśniający przebieg procesu kodowania i dekodowania informacji w standardzie H.264.
Spróbujmy prześledzić drogę danych kodujących obrazy telewizyjne, począwszy od źródła, aż do wyjścia dekodera. Czym wyróżnia się ten system? W procesie kodowania mamy do czynienia z następującymi operacjami:
- predykcja, czyli przewidywanie treści kolejnych obrazów telewizyjnych,
- obliczanie transformaty kosinusowej, czyli przejście z dziedziny czasu do dziedziny częstotliwości,
- kodowanie danych wyjściowych, czyli przygotowanie danych do zapisu lub transmisji.
Podczas dekodowania następuje proces odwrotny, to znaczy dekodowanie danych wejściowych, obliczanie transformaty odwrotnej oraz rekonstrukcja sekwencji obrazów. Omówmy kolejno wymienione powyżej elementy.

Proces kodowania
Predykcja
Jak wiadomo, na ruchomy obraz telewizyjny składa się sekwencja następujących po sobie ramek telewizyjnych. Koder
H.264 dokonuje podziału kolejnych ramek na mniejsze elementy, o rozmiarach 16x16 pikseli. Elementy te nazywają się makroblokami. Operacją mającą kluczowe znaczenie dla tego standardu jest predykcja zawartości kolejnych makrobloków, dokonywana na podstawie poprzednio zakodowanych danych. Jak rozumieć słowo „predykcja”? Chodzi o przewidywanie treści obrazów, które mają dopiero nastąpić. Tłumacząc jaśniej, jest to próba wykalkulowania, jak będzie wyglądał kolejny makroblok danych, jeśli jego poprzednicy mieli określoną treść i wygląd.
Podczas predykcji operuje się pojęciem wektorów przesunięcia, znanym już wcześniej z opisu metod kompresji MPEG-2 i MPEG-4. Wektory te określają zmiany położenia elementów obrazu na kolejnych klatkach telewizyjnych. W zasadzie przedmiotem predykcji jest nie tyle zawartość kolejnych makrobloków, co długość i kierunek wektorów przesunięcia. W przypadku H.264 przesunięcia wskazywane przez wektory mogą być mniejsze od rozmiarów pojedynczych pikseli, co znacznie poprawia reprodukcję obrazów, na których elementy składowe poruszają się z małą prędkością. We współczesnych systemach kompresji H.264 stosuje się dokładność równą 1/4 wielkości pojedynczego piksela.

Rozróżnić należy dwa rodzaje predykcji: intrapredykcję, dokonywaną tylko na podstawie danych pochodzących z bieżącej ramki obrazowej, oraz interpredykcję, dokonywaną na podstawie danych pochodzących z wielu ramek (rys. 2). Proces interpredykcji bywa określany jako estymacja ruchu. Są to pojęcia równoznaczne.
Metody predykcji stosowane w standardzie H.264 są bardziej elastyczne niż w innych metodach kodowania, przez co precyzja ich działania jest większa. Stosowane są małe bloki danych, o rozmiarach 16x16 pikseli, które w pewnych warunkach mogą być dodatkowo zmniejszane do rozmiarów 4x4. Jest to szczególnie istotne podczas interpredykcji, gdzie dane są pobierane z pikseli z bieżącej ramki oraz z pikseli znajdujących się w podobnym obszarze ramek poprzednich.
Tworzenie różnic cząstkowych, bloki residual
Kolejną bardzo ważną operacją, związaną z kodowaniem w standardzie H.264, jest tworzenie obiektów noszących angielską nazwę residual, powstających w wyniku odjęcia danych pochodzących z predykcji od danych stanowiących treść bieżącego makrobloku. Obraz utworzony z elementów residual (rys. 3) przypomina znany z fotografii efekt reliefu, w którym widoczne na obrazie obiekty mają wyraźnie zaznaczone krawędzie, jednak większa część zdjęcia tonie w odcieniach szarości.
Operacja odjęcia danych pochodzących z interpredykcji od danych z aktualnego makrobloku jest także nazywana kompensacją ruchu. Jak łatwo się domyśleć, wszystkie te zabiegi prowadzą do określenia zmian, jakie zachodzą w kolejnych obrazach telewizyjnych, a tym samym do zmniejszenia ilości przekazywanych informacji.
Brak jest ścisłego odpowiednika terminu residual w języku polskim. W matematyce mówi się o residuum lub pozostałości. Słowo to należy rozumieć jako szczątkową różnicę, powstałą na skutek odjęcia od siebie elementów wykazujących duże podobieństwo. Elementami takimi są kolejne ramki obrazu telewizyjnego.

Obliczanie transformaty i kwantowanie
Na kolejnym etapie kodowania powstające w procesie predykcji bloki residual podlegają przekształceniu za pomocą zmodyfikowanej, dyskretnej transformaty kosinusowej, zwanej transformatą całkowitoliczbową, przy czym operuje się blokami o rozmiarach 4x4 lub 8x8 pikseli. W wyniku tej operacji powstaje zbiór współczynników, który z kolei podlega kwantyzacji, czyli zaokrągleniu do wartości całkowitych. Odbywa się to drogą dzielenia wartości współczynników przez odpowiednio dobraną liczbę całkowitą i odrzucania reszty z dzielenia.
Tego typu operacja oznacza utratę pewnej części danych opisujących kompresowany obraz, dlatego też bardzo istotny jest dobór parametrów procesu kwantyzacji. Zależy od tego precyzja przekształcenia matematycznego, a tym samym równowaga między objętością danych a jakością zakodowanego obrazu.
W wyniku wszystkich opisanych dotychczas operacji powstają bloki danych składające się niemal z samych zer i jedynie niewielu elementów niezerowych. Liczba elementów niezerowych rośnie wraz z pogarszaniem stopnia kompresji, czemu towarzyszy poprawa jakości zakodowanego obrazu. Przy odpowiednim doborze parametrów procesu kwantowania można uzyskać kompromis pomiędzy wysoką jakością obrazów a skutecznością kompresji.
Kodowanie strumienia danych
Ciąg danych pochodzący z procesu kwantyzacji jest uzupełniany o dodatkowe informacje, związane z obróbką sekwencji obrazów telewizyjnych. Całość jest kodowana w jeden wspólny strumień danych, niosący następujące informacje:
- skwantowane wartości współczynników stanowiących wynik transformaty bloków residual,
- dane pozwalające na późniejsze przeprowadzenie odwróconego procesu predykcji,
- dane określające strukturę skompresowanego strumienia danych,
- dane dotyczące narzędzi użytych w procesie kompresji,
- dane pozwalające na kompletację sekwencji zdekodowanych obrazów telewizyjnych.
Opisany powyżej strumień wartości i parametrów, zwanych elementami syntaktycznymi, jest konwertowany na jednolity kod binarny, stanowiący wynik całego procesu kompresji. Na tym etapie kodowania wykorzystuje się metody matematyczne o zmiennej długości kodu lub metody kodowania arytmetycznego. Jest to proces bezstratny, prowadzący do wytworzenia skompresowanej, jednorodnej reprezentacji przesyłanych informacji. Powstały w wyniku kodowania ciąg bitów może być przetransmitowany z wykorzystaniem dowolnej metody telekomunikacyjnej, a także zapisany na odpowiednio dobranym nośniku danych celem późniejszego odtworzenia.
Proces kodowania binarnego przypomina znaną powszechnie technikę kompresji danych komputerowych. Większości czytelników znane są formaty plików skompresowanych zip czy rar. Na ostatnim etapie kompresji H.264 mamy do czynienia z podobnym procesem, prowadzonym w sposób ciągły, w czasie rzeczywistym.
Proces dekodowania
Dekodowanie strumienia danych
Dekoder H.264 odbiera strumień danych stanowiący wynik procesu kompresji i drogą dekodowania binarnego wydziela z niego opisane powyżej elementy syntaktyczne. Zachodzi tu podobieństwo do rozpakowywania plików typu zip czy rar. Odzyskane elementy syntaktyczne są poddawane dalszemu procesowi dekodowania.
Skalowanie współczynników i transformata odwrotna
Pobrane ze zbioru elementów syntaktycznych skwantowane współczynniki transformacji podlegają ponownemu przeskalowaniu, które odbywa się drogą przemnożenia ich wartości przez liczbę stałą, użytą poprzednio w procesie kwantyzacji. Proces ten jest często określany jako kwantyzacja odwrotna, jednakże nie jest to zbyt ścisłe porównanie, gdyż informacje utracone w wyniku dzielenia i odrzucania reszty nie ulegają pełnemu odtworzeniu w procesie mnożenia.
Na kolejnym etapie dekodowania przeskalowane współczynniki są poddawane odwrotnej transformacie kosinusowej, w wyniku której odtwarzane są bloki residual. Są one łączone w większe grupy, tworząc makrobloki residual.
Rekonstrukcja sekwencji obrazów
W procesie dekodowania każdy z makrobloków jest poddawany takiemu samemu procesowi predykcji, jak to miało miejsce podczas kodowania. Następuje dodawanie zawartości makrobloków residual do zawartości poprzednich makrobloków obrazowych, a tym samym rekonstrukcja oryginalnych fragmentów sekwencji obrazów.
Wszystkie opisane czynności wiążą się z nieprzerwanym wykonywaniem skomplikowanych operacji matematycznych, co pociąga za sobą bardzo wysokie zapotrzebowanie na moc obliczeniową systemu kodowania, jednakże wynik końcowy w postaci znakomitej jakości obrazu oraz wydajnej kompresji danych uzasadnia użycie tak skomplikowanych metod.
Uzyskane wyniki
Działanie H.264 w praktyce
Przedstawiony powyżej opis standardu H.264 jest jedynie ilustracją zasady jego działania. Faktyczne mechanizmy kompresji obrazów są znacznie bardziej skomplikowane, a ich zrozumienie wymaga zagłębienia się w zagadnienia matematyczne. Przykładem może być zastosowanie filtrów eliminujących błędy wynikające z podziału obrazu na bloki o niewielkich rozmiarach. Filtry te stosuje się zarówno podczas kodowania, jak i podczas dekodowania sekwencji obrazów.
Projektant systemów bezpieczeństwa czy instalator kamer przemysłowych jest zainteresowany efektami praktycznymi, wynikającymi z zastosowania takiej a nie innej metody kompresji obrazów. Jakie więc wnioski wynikają z tych rozważań?
Najistotniejszą różnicą pomiędzy stosowanymi dotychczas metodami kompresji obrazów a standardem H.264 jest wysoka wydajność tego procesu. W stosunku do metod MPEG-2 i MPEG-4 H.264 zapewnia lepszą jakość obrazu przy porównywalnym strumieniu zakodowanych danych wyjściowych albo skuteczniejszą kompresję strumienia danych przy podobnej jakości obrazu.
Uważny czytelnik łatwo zauważy, że wiele mechanizmów wykorzystanych w standardzie H.264 znajduje zastosowanie w starszych metodach kompresji obrazów. Skąd więc ta zwiększona skuteczność?
Na tak postawione pytanie nie ma jednoznacznej odpowiedzi. Wspomniane powyżej podobieństwa sugerują, że H.264 jest raczej rozszerzeniem istniejących standardów niż nową, rewolucyjną koncepcją kodowania danych. Różnica polega na dalszej komplikacji działania algorytmu, na zwiększeniu różnorodności ramek pośrednich (operuje się tu pojęciem plastra – z angielskiego slice), a także na zastosowaniu bloków o małych rozmiarach i dynamicznie zmienianej wielkości. Uzyskuje się tym samym lepsze wykorzystanie możliwości kompresji w zależności od konkretnej treści obrazu telewizyjnego. Działając z osobna, każde ze wspomnianych usprawnień poprawia skuteczność kompresji o niewielki procent, lecz wszystkie razem, połączone w jeden system, zapewniają zauważalną poprawę.
Standard H.264 stale się rozwija. Śledząc najnowsze doniesienia prasowe, napotyka się notatki o dalszym, bardzo znacznym zwiększeniu stopnia kompresji obrazów z zachowaniem podobnego poziomu jakości. Analizując ofertę rynkową w dziedzinie kamer przemysłowych oraz sieciowych rejestratorów wizyjnych, zauważa się wzrost popularności metody kompresji H.264. Tendencja ta wiąże się między innymi ze stałym spadkiem cen elementów stanowiących dotychczas domenę rynku komputerowego, takich jak wysokowydajne mikroprocesory czy komponenty cyfrowych sieci IP.
Na zakończenie, posługując się żartobliwie terminologią zaczerpniętą z opisu H.264, można stwierdzić, że w wyniku predykcji sytuacji rynkowej na najbliższe kilkanaście miesięcy wszystkie wektory przesunięcia wskazują wzrost popularności metody H.264 i spadek zainteresowania metodami MPEG.
Andrzej Walczyk
Zabezpieczenia 3/4/2008