omow_kodowanie_video_w_standardzie_mpeg [mgr Wiki]

[[omow_kodowanie_video_w_standardzie_mpeg]]
mgr Wiki

## Kodek MJPEG

Algorytm MJPEG należy do najczęściej stosowanych podczas przechwytywania formatów kompresji obrazu. Format ten wykorzystywany jest zarówno przy kompresji sprzętowej jak również tylko programowej. Idea polega na kompresji każdej klatki filmu i oddzielnie z zastosowaniem algorytmu JPG.

W tym przypadku schemat kompresji wygląda następująco:

    RGB --> Konwersja do YUV --> Dyskretna transformacja kosinusowa --> Kodowanie Huffmana --> Plik AVI

Po dokonaniu konwersji obrazu z formatu RGB na YUV (docelowo YUV 4:2:0) każdy z trzech obrazów jest dzielony na bloki o wielkości 8×8 pikseli. Następnie na każdym z tych bloków dokonywana jest seria obliczeń, nazywana dyskretną transformacją kosinusową

#### Dyskretna transformata kosinusowa

Polega na zamianie sygnału ciągłego luminacji i chrominacji na reprezentację dyskretną w tzw. przestrzeni kosinusowej. W ramach tego procesu najpierw obliczana jest macierz współczynników transformacji, zawierająca informację o częstości występowania poszczególnych pikseli. Macierz ta następnie poddawana jest procesowi kwantyzacji (dyskretyzacji). Tutaj z kolei następuje zamiana funkcji ciągłej na postać próbkowaną. Czyli co określony okres czasu (kwant) określona jest jej wartość (próbkowanie). Następuje więc zamiana zapisu analogowego na cyfrowy. Jakość obrazu, a więc również stopień kompresji, zależy przede wszystkim od parametrów kwantyzacji. Im krótszy okres wybierzemy do pobrania próbki (wartości), tym jakość będzie lepsza a stopień kompresji mniejszy - ale potrzeba będzie więcej miejsca na zapisanie tych danych (i odwrotnie).

#### Kodowanie Huffmana

Ma na celu zmniejszenie objętości macierzy. Pozwala to na bezstratne zmniejszenie ilości informacji, a polega na przypisaniu poszczególnym powtarzającym się ciągom pewnych kodów. Wartościom występującym często, a wiec zajmującym najwięcej miejsca przypisywane są krótkie kody, a występującym rzadko długie kody. Wszystko to jest określone w specjalnej tabeli służącej później do ich odkodowania.

W końcowym wyniku otrzymujemy plik AVI z dźwiękiem lub bez, zależnie od konkretnych możliwości. Cechą charakterystyczną jest to, że każda klatka jest klatką kluczową. Więc edycja takiego materiału jest łatwa.

Proces dekompresji przebiega oczywiście w odwrotnym kierunku

## Kodek MPEG

W tym kodeku osiągnięto większy stopień kompresji wykorzystując fakt, że klatki sąsiadujące ze sobą są bardzo podobne do siebie. Większa część informacji dla klatek opisujących daną scenę jest taka sama. W związku z tym pojawiła się idea opisywania tylko zmian w stosunku do sąsiednich klatek, wykorzystana właśnie w formacie MPEG.

Proces kompresji w zarysie wygląda następująco:

    RGB --> Konwersja do YUV --> Dyskretna transformacja kosinusowa --> Kompensacja ruchu --> Kodowanie Huffmana --> FILM

#### Typy klatek

W strumieniu zakodowanym kodekiem MPEG występują 3 typy klatek: klatki I (Intra) - kluczowe, klatki różnicowe (delta): P (Predictive) i B (Bidirectional) opisujące tylko zmiany między klatkami. Są one poddawane kompresji.

- Klatki I - kluczowe, zawierają pełną informację o obrazie i są kompresowane podobnie jak w przypadku algorytmu MJPEG (czyli mamy tutaj do czynienia z kompresją wewnątrzklatkową, informacja w niej zapisana jest niezależna od informacji w innych sąsiadujących, tj. poprzedzających i następujących klatkach). Mają one największą objętość. W przypadku MPEG2 co 12 klatka jest klatką kluczową (dla PAL, w NTSC co 15).
- Klatki P - są tworzone na podstawie najbliższej, co nie znaczy sąsiedniej, poprzedzającej ją klatki I lub P.
- Klatki B - są tworzone na podstawie poprzedzających ją i następujących po niej klatek I i P. Podlegają one największej kompresji, a więc zawierają najmniej informacji, niosą więc obraz najgorszej jakości.

Klatki I, P, B układane są w określone sekwencje nazywane w skrócie GOP (Group Of Pictures). Zawsze pierwszą klatką w grupie jest klatka I, stanowi ona pukt odniesienia dla kodowania pozostałych klatek P i B. Długość i kolejność ramek w grupie może być regulowana, co ma wpływ na jakość i stopień kompresji obrazu (łatwo można to zobaczyć dokonując ustawień zaawansowanych we właściwościach MPEG dla kodeka MPEG1 i MPEG2). Dla MPEG2 grupa może składać się np. z 12 klatek o następującej kolejności IBBPBBPBBPBBI. Pomimo takiego ułożenia klatek w grupie klatki nie są kodowane w tej kolejności. Proces kompresji dotyczy zawsze całej grupy GOP. Najpierw kodowana jest początkowa klatka I, następnie na jej podstawie najbliższa klatka P, czyli w tym przypadku 4 klatka. Następnie po kolei klatki P, na podstawie poprzedzających ich klatek. Dla przykładu, w naszym wypadku: 7 klatka na podstawie klatki 4, 10 na podstawie 7 itd. Po zakodowaniu wszystkich klatek P, dopiero następuje kompresja klatek typu B, które wypełniają pozostałe miejsce pomiędzy klatkami I i P. tworzone są one w oparciu o poprzedzające je i następujące po nich klatki I i P.

Każdą klatkę dzieli się na bloki, w przypadku MPEG2 o wymiarach 16×16 pikseli i dla każdego z nich oblicza się kompensację ruchu. Polega ona na określeniu przesunięcia bloku, zmiany kolorów, kąta patrzenia kamery w stosunku do sąsiednich klatek. Istotną różnicą standardu MPEG4 w stosunku do MPEG1 i 2, jest dopuszczalność kompesacji ruchu obszarów o dowolnych kształtach a nie tylko 16×16 lub 8×8 pikseli. Procesy Dyskretnej transformacji Kosinusowej i Kodowania Huffamna są oparte na takich samych zasadach jak w przypadku formatu MJPEG.

## Linki zewnętrzne

http://pl.wikipedia.org/wiki/Mpeg MPEG na pl.wikipedia.org

Jesli ktos potrzebuje czegos naprawde zrozumialego: http://www.lo.stary-sacz.iap.pl/text/piotr/repr_inf/rep_an_film.ppt (opracowanie na podstawie tej właśnie prezentacji)

omow_kodowanie_video_w_standardzie_mpeg.txt · Last modified: 2006/05/23 09:45 by 213.134.172.237