Programowe encodery MPEG

Obecnie wydajna kompresja danych wideo jest związana przede wszystkim z kompresją MPEG. Do niedawna za szczyt osiągnięć uważano sprzętowe kodowanie MPEG przeprowadzane poprzez specjalizowane karty, pozwalające na kodowanie w czasie rzeczywistym, a więc w czasie równym długości trwania kodowanego materiału wideo. Wzrost mocy obliczeniowej komputerów oraz optymalizacja oprogramowania pozwoliła na zmianę tego stanu.

Obecnie wydajna kompresja danych wideo jest związana przede wszystkim z kompresją MPEG. Do niedawna za szczyt osiągnięć uważano sprzętowe kodowanie MPEG przeprowadzane poprzez specjalizowane karty, pozwalające na kodowanie w czasie rzeczywistym, a więc w czasie równym długości trwania kodowanego materiału wideo. Wzrost mocy obliczeniowej komputerów oraz optymalizacja oprogramowania pozwoliła na zmianę tego stanu.

Strumień danych, z jakim mamy do czynienia w przypadku komputerowo przetwarzanego obrazu wideo, jest bardzo duży. Średnio przyjmuje się, że jedna sekunda, czyli 25 klatek materiału wideo o rozdzielczości telewizyjnej w PAL, bez zastosowanej kompresji może zająć od 20 do 30 MB. Zastosowanie odpowiedniej stratnej kompresji potrafi ten strumień wielokrotnie zmniejszyć. Powszechnie używane cyfrowe kamery wideo (DV i Digital8) stosują kompresję już na etapie rejestracji, czyli zapisu na kasetę. Zastosowana w nich kompresja nazywana potocznie DV zmniejsza strumień danych do wielkości około 3,6 MB/s. Wielkość ta jest już w zupełności wystarczająca do większości zastosowań, takich jak np. edycja wideo, ale nie nadaje się do zapisu na płytach CD/DVD oraz transmisji. W związku z tym do takich zastosowań jak cyfrowa transmisja satelitarna oraz zapis na płytach DVD zdecydowano się użyć wydajniejszego algorytmu kompresji MPEG-2, umożliwiającego bezproblemowe zapisanie materiału wideo o długości przekraczającej 90 minut, a w przypadku korzystania z płyt dwuwarstwowych wielkości tej nawet podwojonej.

Czym jest MPEG?

Nad opracowaniem i przestrzeganiem norm dotyczących kompresji cyfrowego obrazu i dźwięku nadzór sprawuje międzynarodowa organizacja ISO (International Standards Organization). Z jej inicjatywy powołano grupę specjalistów MPEG (Moving Pictures Expert Group), których zadaniem jest opracowywanie algorytmów kompresji, przeznaczonych do edycji, nadawania (transmisji) oraz przechowywania cyfrowo zapisanego obrazu i dźwięku. Dotychczas opracowano i wprowadzono do użycia algorytmy kompresji nazwane MPEG-1, MPEG-2 oraz MPEG-4. Obecnie nadal trwają prace badawcze nad kolejnymi nowymi algorytmami MPEG-7 i MPEG-21. Pierwszy z wprowadzonych jeszcze na początku lat 80. algorytmów był MPEG-1. Na jego bazie opracowano format Video CD, który umożliwiał zapisanie na typowej płycie CD materiału wideo o długości 74 minut, zawierającego obraz o rozdzielczości 352x288 punktów (dla systemu PAL) oraz 16-bitowego dźwięku o częstotliwości 44,1 kHz (mono lub stereo). Jakościowo płyta Video CD była odpowiednikiem popularnej kasety VHS. Kolejnym wprowadzonym algorytmem był MPEG-2, który definiował już kilka odmian o ściśle określonych zastosowaniach, takich jak np. płyty Super Video CD i DVD Video. Ostatnim opracowanym algorytmem jest MPEG-4, pierwotnie zaprojektowany do zastosowań internetowych, na bazie którego niezależnie powstały bardzo popularne obecnie formaty DivX;-) i XviD.

Rodzina kompresji MPEG-2

Przy opracowywaniu algorytmu kompresji MPEG-2 w zależności od obszaru zastosowań dokonano podziału na poszczególne profile (Profiles) oraz poziomy (Levels). Profile definiują 5 typów kodowania obrazu (w tym próbkowania YUV): Simple Profile, Main Profile, 422 Profile, SNR Scalable Profile, Spatially Scalable Profile oraz High Profile. Poziomy natomiast określają dopuszczalne rozdzielczości obrazu oraz maksymalny transfer danych. Dzięki tak szerokiemu podziałowi kompresja MPEG-2 obejmuje szereg rozmaitych zastosowań od zapisu o jakości kasety VHS, aż do telewizji przyszłości HDTV (High Definition Television). Aktualnie powszechnie stosuje się trzy odmiany kompresji MPEG-2, a mianowicie MPEG-2 Main Profile@Main Level (w skrócie zapisywany MPEG-2 MP@ML), MPEG-2 422 Profile@Main Level (MPEG-2 422P@ML) oraz Main Profile@High-14 Level (MPEG 2 MP@H-14). MPEG-2 MP@ML został stworzony do przesyłania sygnałów wideo. Z tego powodu jest głównie używany do przesyłania cyfrowych sygnałów telewizyjnych, czyli DVB (Digital Video Broadcasting). Wymagana jest tu najlepsza możliwa jakość obrazu przy możliwie najniższym współczynniku transferu danych (maksymalnie 15 Mbit/s). Również na płytach DVD (Digital Versatile Disk) używa się właśnie tej odmiany kompresji. W tym przypadku maksymalny transfer danych nie przekracza 10 Mbit/s, a ze względu na możliwość umieszczenia dodatkowych ścieżek z dźwiękiem, napisami w rzeczywistości jest jeszcze niższy.

Ze względu na brak konieczności wielokrotnego kopiowania materiału oraz edycji używa się próbkowania YUV 4:2:0. MPEG-2 422P@ML został stworzony do celów postprodukcji i montażu wideo. Aby zachować niezmienioną jakość obrazu nawet po wielokrotnym kopiowaniu, używa się próbkowania YUV 4:2:2. Dzięki temu możliwe jest również uzyskanie profesjonalnej jakości niezbędnej przy kluczowaniu. Maksymalny strumień danych określono na 50 Mbit/s. MPEG 2 MP@H-14 jest jednym z ostatnio wprowadzonych standardów przeznaczonych do zapisu danych nowego formatu wideo o nazwie HDV.

Współczynnik transferu danych wynosi w tym przypadku 25 Mbit/s.

Jak działa kompresja MPEG-2

W zasadzie wszystkie kompresje danych wideo z reguły wykorzystują niedoskonałości ludzkiego wzroku. To co w znaczny sposób odróżnia kompresję MPEG od kompresji Motion-JPEG, DV i innych, to część procesu kompresji polegająca na analizowaniu określonych sekwencji klatek. Poszczególne klatki w sekwencji składają się z klatek typu I, B, oraz P określanych jako GOP (Group of Pictures). Klatki I, są obrazami indeksowymi, które są kompresowane indywidualnie i zawierają wszystkie dane niezbędne do wyświetlenia obrazu bez dostarczania jakiejkolwiek dodatkowej informacji. Klatki B, są obrazami skompresowanymi dwukierunkowo i zawierają wyłącznie informacje dotyczące różnicy pomiędzy dwoma sąsiednimi klatkami. Zawierają o wiele mniej danych niż klatki I, jednakże aby rozkompresować i wyświetlić klatkę B, niezbędna jest informacja z klatek poprzedzających oraz następujących. Klatki P są obrazami "przewidywanymi". Są one interpolowane na podstawie informacji zawartych w klatkach w sekwencji wideo i zawierają jeszcze mniej informacji niż klatki B. Sposób, w jaki klatki I, B i P są usytuowane w GOP, zależy od sposobu kodowania, np. IBBPBBPBBPBBPBBPBB.

Proces kompresji w MPEG-2 to szereg skomplikowanych obliczeń matematycznych, w trakcie których zostaje usunięta część danych o obrazie, której i tak ludzkie oko nie zauważy. Już w trakcie próbkowania YUV 4:2:0 strumień danych jest zmniejszany o ponad 1/3. W kolejnym etapie następuje podział obrazu na bloki i poddanie go dyskretnej transformacie kosinusowej DCT (Discrete Cosine Transformation).

Z otrzymanych macierzy są usuwane wartości, które są nie dostrzegalne dla ludzkiego wzroku. Największy jednak zysk przynosi proces kompensacji ruchu, wykorzystujący wspomniane wcześniej klatki I, B i P, czyli GOP.

W uproszczeniu polega to na tym, że jeżeli w naszym obrazie porusza się np. piłka, to w poszczególnych klatkach jej ruch opisywany jest tzw. wektorem ruchu, a informacja o reszcie obrazu jest powielana z klatek wcześniejszych. Uzupełnieniem procesu kompresji w MPEG-2 jest kodowanie VLC (Variable Lenght Coding), usuwające z kompresowanego strumienia powtarzających się ciągów danych i zastępowaniu ich krótszymi. Kodowanie może przebiegać ze zmiennym transferem danych VBR, utrzymującym stałą jakość lub stałym transferem danych CBR.

W celu podwyższenia jakości obrazu często stosuje się dwuprzebiegowe kodowania ze zmiennym transferem danych VBR. Stworzenie dobrego programowego encodera MPEG nie należy do rzeczy najprostszych. Przekonało się już o tym wiele nawet dużych firm, które oferują mniej lub bardziej udane produkty.

W większości przypadków często istotnym problemem jest kompromis pomiędzy szybkością a jakością kodowania.


Zobacz również