Kompresja video Plan 1. Korelacje czasowe 2. Standardy wideokonferencji 3. Standardy MPEG 4. Video w sieci ATM
Wymagania kompresji video Format Rozdzielczość Próbk. Koloru Częstotliwość itrate 1 min. danych QCIF 176x144 4:2:0 10 3 Mbps 21.6 M CIF 352x288 4:2:0 25 30.4 Mbps 218 M PAL CCIR 601 720x575 4:2:2 25 165.6 Mbps 1.2 G ATSC 1080x1920 1920x1080 4:2:2 30 995.3 Mbps 7.1 G Aby zrealizować videotelefon w formacie QCIF 10fps przez linię o przepustowości 28.8 kbps kompresja 105:1 Wideokonferencja w formacie CIF 25 fps przez linię 384 kbps kompresja 79:1
Nadmiarowość w danych video Nadmiarowość przestrzenna kodowanie róŝnicowe, transformacyjne Nadmiarowość czasowa Sąsiednie ramki dzieli tylko 33 40 msek ardzo małe róŝnice (o ile nie ma zmiany planu) Naiwnie: uŝycie poprzedniej ramki do predykcji następnej, kodowanie róŝnic czyli nie kodujemy wszystkich ramek ALE TO NIE DZIAŁA!!! Powód nieuwzględnienie ruchu w ramkach.
Nadmiarowość czasowa
Kompensacja ruchu Zasada kompensacji ruchu: Dzielimy ramkę na obszary Szukamy w ramce poprzedzającej obszaru najlepiej dopasowanego Wybór rozmiaru obszaru
Wyznaczenie wektora ruchu Definiujemy funkcję błędu, szukamy jej minimum T ramka dopasowywana, R ramka odniesienia x, y połoŝenie górnego lewego rogu bloku w ramce T x+i, y+j połoŝenie górnego lewego rogu bloku w ramce R MAE( i, j) = 1 N N N T ( x+ k, y+ l) R( x+ i+ k, y+ j+ l) 2 k= 1 l= 1 Wartości i, j dla których funkcja błędu ma minimum wektor ruchu Zwykle : dopuszczalne wartości składowych wektora ruchu ograniczone: -p i p; -p j p; p rzędu 15
Wyznaczenie wektora ruchu c.d. Wektor ruchu oddzielnie dla kaŝdego bloku Wyznaczenie wektora ruchu kosztowne wiele obliczeń funkcji błędu Metody: full search (przeszukujemy cały moŝliwy zakres wektorów) dla jednego makrobloku 3*N 2 *(2*p+1) 2 =648475 operacji dla 1 sec video o rozdzielczości 720 x 480, 30 fps 3*10 10 suboptimal search (pewien podzbiór moŝliwych wektorów ruchu) redukcja złoŝoności obliczeniowych
Metody suboptymalne OTS (One at a Time Search) znalezienie minimum najpierw w kierunku poziomym, a następnie (przy ustalonej składowej poziomej) - pionowym 2-D log search. Zaczynamy od wyliczenia funkcji błędu w 9 punktach porywających cały moŝliwy zakres. Po znalezieniu miejsca, gdzie błąd jest minimalny staje się on nowym centrum poszukiwań z krokiem o połowę mniejszym. Procedura kończy się, gdy skok wynosi 1 piksel złoŝoność spada o czynnik rzędu p*p/log 2 p
Przeszukiwanie hierarchiczne
Próg poszukiwań Wektor prędkości Przed początkiem obliczeń sprawdzamy błąd pomiędzy blokiem docelowym a nie przesuniętym blokiem odniesienia gdy < próg to przyjmujemy, Ŝe wektor przesunięcia zero Dane róŝnicowe JeŜeli błąd pomiędzy blokiem docelowym a blokiem odniesienia mniejszy niŝ pewna ustalona liczba, to kodujemy i przesyłamy dane róŝnicowe i wektor przesunięcia; w przeciwnym razie kodujemy dane bloku Rozmiar bloku dopasowania kompromis między pracochłonnością a moŝliwościami dopasowania Dokładność dopasowania Niektóre algorytmy definiują wektor ruchu z dokł. do 0.5 piksela uŝywają podwojonego bloku kodowania.
Typy algorytmów kompresji video SłuŜące videotelefonii, videokonferecjom Opóźnienia związane z kodowaniem/dekodowaniem powinny być jak najmniejsze Strony symetryczne koder i dekoder o podobnym stopniu złoŝoności SłuŜące rozpowszechnianiu (na nośnikach, rozgłośnie) Jeden nadawca, wielu odbiorców dopuszczalna nierównowaga sprzętowa Koder znacznie bardziej złoŝony niŝ dekoder Większa tolerancja na opóźnienia SłuŜące rozpowszechnieniu pakietowemu przez sieć Muszą uwzględniać przekłamania, straty pakietów Zwykle transmisja progresywna
Standard H.261 Przyjęty jako norma CCIT w 1990 roku Zaprojektowany do obsługi videotelefonii i videokonferencji po liniach ISDN (bitrate px64 kbps, k=1..30) Wejście w formacie CIF (352x288) lub QCIF (176x144), kolor YUV (YC b C r ) 4:2:0 Po zakodowaniu ramki występują w sekwencjach: Ramki I (intra) kodowane tylko o dane wewnętrzne Ramki P (predictive) kodowane w oparciu o predykcję z ramki poprzedniej
Kodowanie ramek typu I Standard H.261 c.d. Podział na bloki 8x8, DCT Kwantyzacja: DC jednorodny kwantyzator ze skokiem w zerze z szerokością 8, AC stały w zerze kwantyzator z krokiem będącym parzystą liczbą pomiędzy 2 a 62 (nie ma tablic kwantyzacyjnych) Kodowanie: zigzac scanning, kodowanie Huffmana Kodowanie ramek typu P Wyliczenie kompensacji ruchu makrobloki 16x16 w oparciu o dane luminancji; dopuszczalny zakres wektora ruchu: -15 do 15 loki z ostrymi krawędziami wygładzenie przez filtr pętli Obliczenie róŝnic miedzy predykcją a danymi dla bloków, DCT, kwantyzacja (jak dla składowych AC ramek I), kodowanie. Organizacja danych lok (8x8) makroblok (2x2 bloki) grupa bloków (3x11 makrobloków ramka (CIF 12 GO, QCIF 3 GO)
Standard H.261 koder
Standard H.261 dekoder
H.261 strumień bitowy
Standard H.261 c.d. Jakość vs. bitrate itrate CIF QCIF 64 kbps zadawalająca lepiej niŝ zad. 128 kbps dobra Lepiej niŝ dobra 320 kbps dobra znakomita H.263 Przyjęty w 1996 Obsługuje dodatkowo formaty SCIF (128x96), 4CIF (704x576), 16CIF (1408x1152) Wektor ruchu wyznaczony z dokładnością do 0.5 piksela
Standard MPEG-1 Przyjęty w 1991 roku jako standard video na nośnikach z bitrate 1.5 Mbps Wymagania: Dobra jakość audio i video (typu VHS) przy bitrate 1.5 Mbps Swobodny dostęp do dowolnego miejsca w sekwencji video MoŜliwość szybkiego przewijania w obie strony Zmiany w porównaniu z H.261 DuŜo więcej ramek typu I Oprócz ramek typu P nowy typ ramek typu (bidirectional): ramki z predykcja dokonywaną zarówno przeszłych jak i przyszłych ramek typu I oraz P Kwantyzacja ramek I tabele kwantyzacji Zmiana organizacji strumienia bitowego
Kodowanie ramek typu
Standard MPEG-1 c.d. Typowy układ ramek (grupy obrazów GOP) I 1 2 3 4 P 5 6 7 8 P 9 10 11 12 I 13 Porządek wyświetlania I 1 P 5 2 3 4 P 9 6 7 8 I 13 10 11 12 Porządek strumienia bitowego
Standard MPEG-1 c.d. Porządek strumienia bitowego róŝny od porządku wyświetlania Predykcja czasowa dla ramek P i nie nie bazuje na sąsiednich ramkach; wektor ruchu zaleŝy od odległości czasowej ramki kodowanej i ramki odniesienia Ramki typu nie są uŝywane do predykcji nie powodują propagacji błędów, mogą być zakodowane mniej dokładnie Największy stopień kompresji, potem P i I. Największa złoŝoność obliczeniowa. rak moŝliwości kodowania ramek z przeplotem Uzyskana jakość: Sekwencje o niskiej lub średniej ruchomości jakość VHS Sekwencje bardziej dynamiczne słabiej niŝ VHS
MPEG-1 stumień bitowy
Standard MPEG-2 Przyjęty w 1994 roku jako ogólny standard dla video i telewizji cyfrowej, niezaleŝnie od aplikacji Działa dla bitrate w zakresie od 4 Mbps do 40 Mbps Nowe własności (w porównaniu do MPEG-1): Pozwala na kodowanie wideo z przeplotem Obsługuje inne poziomy próbkowania koloru (4:2:2 i 4:4:4) Pozwala na obsługę formatów z róŝnym aspekt ratio Pozwala na obsługę wielu zsynchronizowanych strumieni audio/video Skalowalność W standardzie zdefiniowano kilka profili (określających algorytm) oraz poziomów (określających więzy na parametry) uŝytkownik moŝe je dobierać do zastosowań
Standard MPEG-2 Profile w standardzie MPEG-2: Prosty nie uŝywa ramek typu przypomina H.261 najniŝsza złoŝoność obliczeniowa Główny przypomina MPEG-1 SNR-skalowalny Przestrzennie skalowalny Wysoki Ostatnie 3 profile mogą uŝywać więcej niŝ jednego strumienia bitowego dla kodowania wideo. Zwykle bazowy strumień koduje sekwencję z małą szybkością; pozostałe poprawiają jakość rekonstrukcji (przydatne do przesyłania przez sieć dopasowanie stopnia rekonstrukcji do pasma, czyli skalowalność). Gdy sekwencja poprawiająca zawiera nadpróbkowanie warstwy podstawowej skalowalność przestrzenna. Poziomy: niski (352x240), główny (720x480), wysoki 1440 (1440x1152), wysoki (1920x1080).
Standard MPEG-2 - podsumowanie Dopuszczalne kombinacje profil@ poziom Prosty Główny Snr-skal. Przest-skal. Wysoki Wysoki X X Wysoki 1440 X X X Główny X X X X Niski X X Jakość vs. bitrate itrate SIF-30 CCIR-30 HDTVx30 HDTVx60 352x240 704x480 1920x1080 1280x720 1.1 Mbps Dobra Słaba 4.0 Mbps Znakomita Dobra 9.0 Mbps Znakomita + + Znakomita 18 Mbps Znakomita + + Dobra Dobra 28 Mbps Znakomita Znakomita
MPEG-4 Standard międzynarodowy od 1999 roku ardziej abstrakcyjne podejście do kodowania multimediów Scena multimedialna = zbiór obiektów multimedialnych Obiekty: wizualne (nieruchome tło, gadająca głowa), słuchowe (mowa, muzyka, szum tła) KaŜdy obiekt kodowany oddzielnie generuje niezaleŝny strumień bitowy Strumienie multiplesowane z opisem strony Do opisu scen: IFS (bazuje na VRML) Protokół zarządzania elementarnymi strumieniami i ich multipleksowanymi wersjami DMIF (Delivery Multimedia Integration Framework) Pozwala na interaktywność Prace nad implementacjami w toku. Przykład: DivX.
MPEG-4 c.d.
Video w sieciach ATM Coraz więcej danych multimedialnych jest transmitowanych przez sieć Coraz większe znaczenie sieci ATM Podział na pakiety Transmisja pakietów przez kanały dostępne wielu uŝytkownikom Konsekwencje dla ruchu Wydajność transmisji zaleŝy od czynników poza kontrolą uŝytkownika Priorytetyzowanie danych koszt wysokiego priorytetu Wnioski dla kodera multimedialnego Powinien działać warstwowo Warstwa najniŝsza (o najniŝszej, moŝliwie stałej średniej bitowej) transmitowana z najwyŝszym priorytetem powinna pozwolić na rekonstrukcję Warstwy dodatkowe poprawiają jakość rekonstrukcji
Video w sieciach ATM - przykład Kodowanie podpasmowe. Pasmo 1 podstawowe; pozostałe dodatkowe.