Pobierz
najnowszy numer

Newsletter

Zapisz się do naszego Newslettera, aby otrzymywać informacje o nowościach z branży!

Jesteś tutaj

Kompresja obrazów ruchomych zgodna ze standardem H.264

Printer Friendly and PDF

h264_lead.jpgRosną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 mo­nitoringu wizyjnego, dla których szczegóły skomplikowanych rozważań matematycznych nie są istotne. Został on opraco­wany na podstawie dokumentu H.264/MPEG4 Part 10 White Paper oraz licznych publikacji Iaina Richardsona, dyrektora Centre for Video Communications, profesora School of Engi­neering w Aberdeen. Iain Richardson uchodzi obecnie za jed­nego 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 obra­zó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 mo­nitoringu wizyjnego. We wszystkich tych przypadkach zasada kompresji jest identyczna, różnice mogą dotyczyć jedynie spe­cyfiki poszczególnych aplikacji.

Na rys. 1 przedstawiony jest schemat blokowy, wyjaśnia­ją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 da­nych do zapisu lub transmisji.

Podczas dekodowania następuje proces odwrotny, to znaczy dekodowanie danych wejściowych, obliczanie trans­formaty odwrotnej oraz rekonstrukcja sekwencji obrazów. Omówmy kolejno wymienione powyżej elementy.

rys1.gif
Rys. 1. Kodowanie i dekodowanie informacji w standardzie H.264

Proces kodowania

Predykcja

Jak wiadomo, na ruchomy obraz telewizyjny składa się se­kwencja następujących po sobie ramek telewizyjnych. Koder
H.264 dokonuje podziału kolejnych ramek na mniejsze ele­menty, 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 prze­sunięcia, znanym już wcześniej z opisu metod kompresji MPEG-2 i MPEG-4. Wektory te określają zmiany położe­nia 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 pojedyn­czych 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.

rys2.gif
Rys. 2. Istota interpredykcji

 

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). Pro­ces interpredykcji bywa określany jako estymacja ruchu. Są to pojęcia równoznaczne.

Metody predykcji stosowane w standardzie H.264 są bar­dziej 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 wa­runkach 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 an­gielską 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 zazna­czone krawędzie, jednak większa część zdjęcia tonie w odcieniach szarości.

Operacja odjęcia danych pocho­dzących z interpredykcji od danych z aktualnego makrobloku jest także na­zywana kompensacją ruchu. Jak łatwo się domyśleć, wszystkie te zabiegi pro­wadzą do określenia zmian, jakie za­chodzą w kolejnych obrazach telewi­zyjnych, 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 residu­um 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 podo­bieństwo. Elementami takimi są ko­lejne ramki obrazu telewizyjnego.

residual.jpg
Rys. 3. Przykładowy obraz telewizyjny, utworzony z bloków residual
Obliczanie transformaty i kwantowanie

Na kolejnym etapie kodowania po­wstające w procesie predykcji bloki residual podlegają przekształceniu za pomocą zmodyfikowa­nej, dyskretnej transformaty kosinusowej, zwanej transforma­tą całkowitoliczbową, przy czym operuje się blokami o roz­miarach 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 dobra­ną 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ą zakodowa­nego obrazu.

W wyniku wszystkich opisanych dotychczas operacji po­wstają bloki danych składające się niemal z samych zer i je­dynie 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 kwantowa­nia 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ą sekwen­cji 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 od­wróconego procesu predykcji,
  • dane określające strukturę skompresowanego strumie­nia danych,
  • dane dotyczące narzędzi użytych w procesie kompresji,
  • dane pozwalające na kompletację sekwencji zdekodo­wanych 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 mate­matyczne o zmiennej długości kodu lub metody kodowa­nia arytmetycznego. Jest to proces bezstratny, prowadzący do wytworzenia skompresowanej, jednorodnej reprezenta­cji 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ą powszech­nie 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 czy­nienia 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 przeska­lowaniu, 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 kosinuso­wej, 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 pod­dawany takiemu samemu procesowi predykcji, jak to miało miejsce podczas kodowania. Następuje dodawanie zawarto­ści makrobloków residual do zawartości poprzednich makro­bloków obrazowych, a tym samym rekonstrukcja oryginal­nych fragmentów sekwencji obrazów.

Wszystkie opisane czynności wiążą się z nieprzerwanym wykonywaniem skomplikowanych operacji matematycz­nych, 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 wydaj­nej kompresji danych uzasadnia użycie tak skomplikowa­nych metod.

Uzyskane wyniki

Działanie H.264 w praktyce

Przedstawiony powyżej opis standardu H.264 jest jedy­nie 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 pod­czas kodowania, jak i podczas dekodowania sekwencji ob­razów.

Projektant systemów bezpieczeństwa czy instalator kamer przemysłowych jest zainteresowany efektami praktycznymi, wynikającymi z zastosowania takiej a nie innej metody kom­presji obrazów. Jakie więc wnioski wynikają z tych rozważań?

Najistotniejszą różnicą pomiędzy stosowanymi dotych­czas 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 zastosowa­nie w starszych metodach kompresji obrazów. Skąd więc ta zwiększona skuteczność?

Na tak postawione pytanie nie ma jednoznacznej odpowie­dzi. 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 blo­ków o małych rozmiarach i dynamicznie zmienianej wiel­koś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 do­niesienia prasowe, napotyka się notatki o dalszym, bardzo znacznym zwiększeniu stopnia kompresji obrazów z zachowa­niem podobnego poziomu jakości. Analizując ofertę rynkową w dziedzinie kamer przemysłowych oraz sieciowych rejestra­toró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 do­menę rynku komputerowego, takich jak wysokowydajne mi­kroprocesory 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

Wszelkie prawa zastrzeżone. Kopiowanie tekstów bez zgody redakcji zabronione / Zasady użytkowania strony