Kompresja sekwencji obrazów - algorytm MPEG- Moving Pictures Experts Group (MPEG) - 988 ISO - International Standard Organisation CCITT - Comité Consultatif International de Téléphonie et TélégraphieT CCIR - Comité Consultatif de la Radiodiffusion Pierwszy raport z prac (MPEG-) - 990 Pierwsza demonstracja wyników - 99 Raport z opisem MPEG- - 994 MPEG- - kodowanie sekwencji obrazów i dźwid więku dla potrzeb zapisu na dyskach kompaktowych i wizyjnych MPEG- - kodowanie sekwencji obrazów i dźwid więku głównie g dla potrzeb przekazu telewizyjnego Potrzeba kompresji - proste oszacowania: Jeden obraz = x (44( + 70) ) próbek x linii =.080.000 próbek Jedna próbka = 8 bitów w = bajt (B) Jeden obraz =.080.000 B =,03 MB Jedna sekunda filmu =,03 MB x obrazów w =,7 MB Jeden dysk CD (700( MB) = 700 /,7 7 s filmu HANC VANC Field Field VANC Field Field 4 linie 88 linii linii 88 linii Jeden film (,( h = 400 s) = 400 / 7 00 płyt CD x 44 x 70 próbek próbki (70 Y + *30 U,V ) 3 Norma MPEG- -dokumenty ISO/TEC DIS 388- SYSTEM opisuje synchronizację i przełą łączanie sygnałów w dźwid więkowych i wizyjnych. ISO/TEC DIS 388- VIDEO opisuje sposób b kodowania sygnału u video, udostępnia odświe wieżanie wraz z przeplotem. ISO/TEC DIS 388-3 AUDIO opisuje kodowanie dźwid więków, w, rozszerzenie dla kodowania wielu kanałów w (dźwi więków surround, dźwięków w wielojęzycznych). ISO/TEC DIS 388-4 Testy Porównawcze opisuje czynności ci służące do określenia charakterystyki kodowania i dekodowania oraz do testowania zgodności z innymi częś ęściami standardu. 4
Norma MPEG- -dokumenty c.d. ISO/TEC DIS 388- Symulacja Programowa jest opisem technicznym programowego wykonania pierwszych trzech częś ęści standardu. ISO/TEC DIS 388- Rozszerzenie Systemu Komendy i Kontrola Cyfrowego Przetwarzania Mediów opisuje protokół dla aplikacji klient serwer. ISO/TEC DIS 388-9 Specyfikacja Interfejsu do Przetwarzania Aplikacji Wysokiej Jakości w Czasie Rzeczywistym definiuje zależno ności czasowe dla transmisji MPEG- w czasie rzeczywistym. + Dodatki Ogólny algorytm kompresji sekwencji obrazów. Próbkowanie i kwantowanie kolejnych ramek obrazu. Kodowanie ramek ramki Próbkowanie i kwantowanie ramki Kodowanie ramek strumień bitów. Próbkowanie i kwantowanie kolejnych ramek Wynik próbkowania i kwantowania ramki - trzy tablice liczb opisujące obraz w kategoriach modelu telewizyjnego ( YIQ lub YUV ). Stosuje się następuj pujące schematy próbkowania: Typowe rozmiary tablic dla ramki (PAL- linii): Y 70 x 7 U 70 x 7 V 70 x 7 4:4:4 Y 70 x 7 U 30 x 7 V 30 x 7 4:: TV 4:4:4 4:: 4::0 Y 70 x 7 U 30 x 88 V 30 x 88 TV 4::0 4:: 4:: Y 70 x 7 U 80 x 7 V 80 x 7 próbki luminancji próbki chrominancji 7 luminancja chrominancja chrominancja 8
. Kodowanie ramek Określenie porządku kodowania Kodowanie kolejnych ramek według określonego porządku.. Określenie porządku kodowania Przykładowy porządek kodowania ramek:... I I BB BB PP BB BB PP B B I I... Ramka typu I (Intra) Ramka typu P (Predicted) Ramka typu B (Bidirectional) 9... Kodowanie ramek typu I (Intra) Ramki typu I koduje się używając c algorytmu JPEG. Jest to najdokładniejszy adniejszy sposób b kodowania ramek wykorzystywany w algorytmie MPEG-.... Kodowanie ramek typu P (Predicted) Kodowanie obrazu przy pomocy wektorów w ruchu Założenia: ramki zostały y podzielone na mniejsze częś ęści (makrobloki), częś ęści te dalej będąb traktowane niezależnie, nie, ramki bliskie są do siebie dość podobne. 0 Podstawowa zasada: ramka odniesienia (x, y) [u, v]= [x o -x, y o -y] wektor ruchu (x o, y o ) m 0 o makroblok odniesienia Jeśli m o jest podobny do, to w przybliżeniu można zapisać jako m i, j = m i + u, j v ( ) ( ) kod o + kodowany makroblok Tak więc, dla zakodowania makrobloku przy założeniu, że e zapisana jest ramka odniesienia, wystarczy podać jedynie wektor ruchu [u,[ v]. v Zastosowanie powyższej zasady w praktyce wymaga jednak udzielenia odpowiedzi na szereg pytań. Jaki rozmiar powinien mieć makroblok? Która ramka jest ramką odniesienia? Poprzednia? Następna? Co to znaczy podobny makroblok? W jakim obszarze ramki odniesienia poszukiwać podobnego makrobloku? Co zrobić,, gdy nie ma podobnego makrobloku? 3
Kodowanie ramek typu P (Predicted)) c.d. Rozmiar makrobloku wynosi X pikseli (norma MPEG-). Ramką odniesienia jest najbliższa poprzednia ramka typu I lub P (norma MPEG-). Co to znaczy podobny makroblok i w jakim obszarze go poszukiwać,, norma MPEG- nie precyzuje. Metoda poszukiwania wektora ruchu [u,[ v] v zależy y w tym przypadku od implementacji. Jeżeli eli metoda poszukiwania wektora ruchu dopuszcza wynik negatywny, makroblok koduje się używając c algorytmu JPEG (norma MPEG-). 3 Wyznaczanie wektora ruchu (przykład metody) ramka odniesienia (x+3, y-4) (x-4, y-4) m o obszar poszukiwania obszar poszukiwania ramka kodowana ( x ) (x-4, y+3) (x+3, y+3) kodowany makroblok kod ( x ) W obszarze poszukiwania bada się wszystkie możliwe położenia makrobloku m o i wybiera to, które minimalizuje kryterium d(u,v). 4 d ( u,v) = m kod ( x + i, y + j) m o ( x + i + u, y + j + v) przy czym i = 0 j = 0 4 u,v 3 Liczby u,v są składowymi poszukiwanego wektora ruchu. Wektor ruchu [u,[ v] zawsze będzie b znaleziony. Bezpośrednie rozwiązanie zanie zadania poszukiwania [u,v]] dla jednego makrobloku wymaga obliczenia wartości funkcji d(u,v ), tyle razy ile pikseli zawiera obszar poszukiwania, czyli 384 razy. Licząc c wartość d(u,v),, należy y równier wnież wykonać kilkaset operacji arytmetycznych. Kodowanie ramek typu P - algorytm o Podzielić kodowaną ramkę na makrobloki. o Wykorzystując c ramkę odniesienia wyznaczyć wektory ruchu dla makrobloków. 3 o Dla zakodowanej przy pomocy wektorów w ruchu ramki wyznaczyć i zakodować błąd d predykcji. Na podstawie ramki odniesienia i wektorów w ruchu, zrekonstruować kodowaną ramkę Obliczyć różnicę ramki źródłowej i ramki zrekonstruowanej - wynikiem jest tak zwany obraz błędu predykcji. Zakodować obraz błęb łędu predykcji przy pomocy algorytmu JPEG (inna tablica kwantyzacji). 4
..3. Kodowanie ramek typu B (Bidirectional) Ramkę typu B koduje się wykorzystując c najbliższe, poprzednią i następn pną ramkę typu I lub P. Przykładowo: T T T T... I B B P B B P... T T T T czas Dla różnych r ramek typu B czasy T i T mogą być różne. 7 Wyznacza się dwa wektory ruchu [u[, v ] i [u[, v ]. T czas ramka odniesienia [u, v ]= [x -x, y -y] (x, y) T T m kod + T + T ( i, j) = m ( i + u, j + v ) + m ( i + u, j v ) ramka kodowana (x, y ) m makroblok odniesienia ramka odniesienia T (x, y) kodowany makroblok kod (x, y ) m [u, v ]= [x -x, y -y] makroblokodniesienia T + T 8 Kodowanie ramek typu B - algorytm o Podzielić kodowane ramki na makrobloki. o Wykorzystując c ramki odniesienia wyznaczyć wektorów w ruchu dla makrobloków. pary 3 o Dla zakodowanej przy pomocy wektorów w ruchu ramki wyznaczyć i zakodować błąd d predykcji. Na podstawie ramek odniesienia i par wektorów ruchu, zrekonstruować kodowaną ramkę Obliczyć różnicę ramki źródłowej i ramki zrekonstruowanej - wynikiem jest obraz błęb łędu predykcji. Zakodować obraz błęb łędu predykcji przy pomocy algorytmu JPEG. 3. Kontrola przepływno ywności bitowej strumienia danych Ciąg klatek Sterowanie tablicami kwantyzacji Koder I, P, B Bufor Strumień bitów (stała a przepływność bitowa) Badając c stan bufora wyjściowego można zmieniać tablice kwantyzacji tak, aby uzyskać stałą przepływno ywność dla wyjściowego strumienia bitów. 9 0
4. Kolejność kodowania i dekodowania ramek Kodowanie:... I B B P B B P... 3 Zapis, transmisja, dekodowanie: 4... I P B B P B B... 7 4. Ograniczenia systemu MPEG- Poziom Próbki/ wiersz wiersz Wiersze /ramkę /ramkę Ramki/ Ramki/ sekundę Próbki Próbki luminancji/s Mb/s Mb/s Wysoki 90 90 0 0.8.800 80 80 Wysoki 440 440 0 0 47.00.00 0 0 440 440 Główny 70 70 7 7 30 30 0.38.000 Niski Niski 3 3 88 88 30 30 3.04.80 4 4 3 7