Kodowanie i kompresja 1 Kompresja wideo
Transkrypt
Kodowanie i kompresja 1 Kompresja wideo
Kodowanie i kompresja Streszczenie Studia Wieczorowe Wykład 10, 2007 1 Kompresja wideo Dane wideo jako sekwencja skorelowanych obrazów (ramek). Specyfika danych wideo: • drobne zmiany kolorów w kolejnych ramkach (niezależnie w każdej ramce) niezauważalne statycznie, irytujace ˛ w sekwencji; • rozmyte kraw˛edzie zauważalne statycznie, lecz nieistotne przy dużej dynamice sekwencji. Specyfika zastosowań: • wideokonferencje: symetria mi˛edzy kodowaniem i dekodowaniem. • dane wideo: kodowanie może mieć wi˛eksze wymagania obliczeniowe. 1.1 Kompensacja ruchu (oparta na blokowaniu) Stosujemy predykcj˛e zawartości bieżacej ˛ ramki w oparciu o ramk˛e ja˛ poprzedzajac ˛ a.˛ Dokładniej: • Dzielimy ramk˛e bieżac ˛ a˛ na bloki rozmiaru M × M . • Dla każdego bloku bieżacej ˛ ramki badamy jego podobieństwo (wg ustalonej miary) do obszarów rozmiaru M × M w ramce poprzedniej, znajdujacych ˛ si˛e w ustalonym otoczeniu tego bloku. • Jeśli podobieństwo odpowiednio duże (do najbardziej podobnego bloku z ramki poprzedniej, spośród porównywanych): kodujemy blok bieżacy ˛ poprzez wektor ruchu (równy wzgl˛ednemu położeniu wzgl˛edem kodowanego bloku) i wartości różnic pomi˛edzy blokiem bieżacym ˛ i blokiem z poprzedniej ramki (traktowanym w ten sposób jako wartość przewidywana, predykcja). • Jeśli podobieństwo małe: zakodowana postać bloku zawiera oryginalne wartości z bloku (i informacj˛e o tej formie kodowania). Inne warianty i szczegóły: 1 • kodujac ˛ bieżac ˛ a˛ ramk˛e, najlepiej porównywać jej bloki do bloków poprzedniej, ale w postaci w jakiej b˛edzie ona po odkodowaniu (uwzgl˛edniajac, ˛ że po stronie dekodera tylko ta postać b˛edzie znana); • uproszczony wariant kompensacji może polegać na tym, że w przypadku odpowiednio dużego podobieństwa do bloku z poprzedniej ramki, nie kodujemy różnic mi˛edzy blokami, przyjmujemy że sa˛ identyczne; • jeśli ramka “nast˛epna” jest znana (b˛edzie kodowana w inny sposób i przesłana wcześniej), stosuje si˛e kompensacj˛e z dwustronna˛ predykcja˛ (bidirectional) – próbujemy kompensacji w odniesieniu do poprzedniej i nast˛epnej ramki. • Kompresja wektorów ruchu: Najwydajniejsza ze stosowanych metod (np. w MPEG) koduje ciag ˛ wektorów ruchu kolejnych bloków metoda˛ predykcyjna.˛ Wartość predykcji wektora dla danego bloku B to średnia wektorów bloku nad B i z lewej strony B. Nast˛epnie kodowanie arytmetyczne lub inne. 1.1.1 Miary podobieństwa i czas obliczeń 1. Bład ˛ bezwzgl˛edny, bład ˛ średniokwadratowy: dla kwadratowych bloków B i C o rozmiarze b × b: b X b 1 X |Bij − Cij | b2 i=1 j=1 b X b 1 X (Bij − Cij )2 2 b i=1 j=1 Wada: dla każdego przesuni˛ecia konieczne liczenie bł˛edu „od nowa”. 2. miara wewn˛etrznej projekcji (integral projection): ¯ ¯ ¯ b ¯ ¯ b ¯X b b ¯X b ¯ X X X ¯ b ¯ X ¯ ¯ ¯ ¯ B − C + ¯ B − C ij ij ¯ ij ij ¯ ¯ ¯ ¯ ¯ j=1 i=1 i=1 ¯j=1 j=1 i=1 Zaleta: wyznaczanie różnic dla wi˛ekszości przesuni˛eć możliwe w czasie rz˛edu b (wykorzystujac ˛ wartości wyznaczone dla przesuni˛eć zbadanych wcześniej). Zastosowanie: wybór bloków-kandydatów w oparciu o t˛e miar˛e i wyznaczenie najlepiej pasujacego ˛ z zastosowaniem miary bardziej dokładnej. 3. Przeszukiwanie z rosnacym ˛ krokiem. Badamy wszystkie wektory przesuni˛eć w najbliższym sasiedztwie ˛ i wektory z ustalonym skokiem w dalszym sasiedztwie. ˛ 2 Uzasadnienie: rozmazanie szybko przesuwajacych ˛ si˛e obiektów jest mniej zauważalne. 4. Metoda kolejnych uściślen. Krok 1: badanie wektorów ruchu z ustalonym krokiem wi˛ekszym od 1, wybór najlepszego. Krok 2: badanie wektorów ruchu z krokiem 1, w sasedztwie ˛ wektora wybranego w Kroku 1. 5. Metody oparte na przestrzennych zależnościach mi˛edzy blokami: oparte na założeniu, że przesuwajace ˛ si˛e obiekty sa˛ wi˛eksze od rozmiaru bloku. Predykcja wektora ruchu w oparciu o wartości wektora ruchu już zakodowanych bloków z bieżacej ˛ ramki, znajdujacych ˛ si˛e w bliskim sasiedztwie. ˛ Dla poprawienia predykcji, stosuje si˛e podział bloków na „szachownic˛e” i koduje kolejne jej „kolory” wykorzystujac ˛ te, które zostały zakodowane wcześniej. 6. Metody oparte na czasowych zależnościach mi˛edzy blokami: wydajne w przypadku ruchu jednostajnego. Predykcja wektora ruchu bloku B w bieżacej ˛ ramce w oparciu o wartość wektora ruchu bloku na tej samej pozycji w ramce poprzedniej. 7. Dwuwymiarowe przeszukiwanie binarne. Parametry: blok B w bieżacej ˛ ramce na pozycji (a, b), obszar poszukiwań ograniczony do bloków w odległości co najwyżej d w poziomie i d w pionie. Krok 1. Wyznaczamy krok s = 2blog de−1 . Blok B porównywany jest z blokami poprzedniej ramki na pozycjach (lewych górnych narożników): (a, b), (a, b + s), (a, b − s), (a + s, b), (a − s, b). Krok 2. Wybieramy blok o najwi˛ekszym podobieństwie, oznaczmy jego pozycj˛e przez (x, y). Jeśli (x, y) = (a, b), to s := s/2. W przeciwnym razie (a, b) := (x, y). Krok 3. Jeśli s = 1: wybieramy najbardziej podobny do B blok spośród dziewi˛eciu najbliższych w sasiedztwie ˛ (a, b). W przeciwnym razie powrót do Kroku 2. UWAGA: pomijamy porównania z blokami znajdujacymi ˛ si˛e w dalszym sasiedztwie ˛ od B niż sasiedztwo ˛ wyznaczone przez parametr d. 1.2 Reprezentacja sygnału wideo i obrazów kolorowych Standardowe parametry: 3 • sekwencja zawiera 30 klatek (ramek) na sekund˛e; ramka to 525 wierszy • każda ramka dzielona na dwa pola: pierwsze zawiera nieparzyste wiersze, drugie wiersze parzyste; • pojedyncze pole wysyłane co 1/60 sekundy (co daje wrażenie wi˛ekszej cz˛estotliwości). Reprezentacja sygnału kolorowego: • Podział na trzy składowe: RGB (red, green, blue). • Dla zachowania zgodności z sygnałem „czarno-białym”: podział na składowe Y Cb Cr (Y: luminacja, odpowiada obrazowi monochromatycznemu; Cb Cr : chrominacja, definiuja˛ składowe koloru) • Składowe Y Cb Cr wyznaczane z RGB poprzez zastosowanie przekształcenia liniowego (podobnie odwrotnie): Y = 0, 299R + 0, 587G + 0, 114B Cb = B − Y Cr = R − Y • Spróbkowane analogowe wartości Y Cb Cr sa˛ normalizowane i kwantyzowane. Po normalizacji uzyskujemy Ys ∈ [0, 1] oraz Crs , Cbs ∈ [−1/2, 1/2]. Wartości wynikowe to liczby 8-bitowe oznaczane Y U V : Y = 219Ys + 16 U = 224Cbs + 128 V = 224Crs + 128 Próbkowanie (rekomendacja 601): • Każda składowa spośród YUV może być próbkowana z inna˛ cz˛estotliwościa.˛ Cz˛estotliwości to wielokrotności 3,725MHz, określamy je jako trzy liczby y : u : v, odpowiadajace ˛ cz˛estościom y ∗ 3, 725, u ∗ 3, 725 i v ∗ 3, 725 MHz próbkowania składowych Y, U oraz V. • Najpopularniejszy schemat próbkowania to 4 : 3 : 2, który odpowiada (po wyeliminowaniu cz˛eści sygnału nie odpowiadajacej ˛ wizji) 720 próbkom na wiersz dla luminacji i 360 próbkom na wiersz dla chrominacji (?). 4 1.3 Wideokonferencje, czyli oszcz˛edne kodowanie (H.261) 1. Ramki dzielimy na bloki rozmiaru 8 × 8. 2. Stosujemy kompensacj˛e ruchu. 3. Różnice mi˛edzy predykcja˛ a wartościami rzeczywistymi kodujemy za pomoca˛ DCT. Kompensacja ruchu z zastosowaniem makrobloków: • cztery bloki pikseli rozmiaru 8 × 8 sa˛ organizowane w jeden makroblok; • na makroblok składaja˛ si˛e cztery bloki luminacji i po jednym z każdego bloków chrominacji (zakładamy czterokrotnie wi˛eksza˛ cz˛estość próbkowania luminacji) • dopasowanie (wektor ruchu) ustalamy tylko na podstawie luminacji, porównujemy bloki w odległości maksymalnie 15 pikseli w lewo/prawo, gór˛e/dół. • wektor ruchu dla chrominacji powstaje przez podzielenie przez dwa wektora ruchu dla luminacji. • tryb intra: bez kompensacji (za małe podobieństwa); tryb inter: z kompensacja.˛ Dalsze usprawnienia i etapy: • Dla wygładzenia kraw˛edzi w blokach używanych do predykcji, stosowane jest filtrowanie (choć może być wyłaczone). ˛ Pozwala to uniknać ˛ dużych wartości współczynników wysokocz˛estotliwościowych. • Kroki kwantyzacji decyduja˛ o stopniu kompresji i jakości odtworzenia: dlatego moga˛ być zmieniane w zależności od przepustowości łacza ˛ komunikacyjnego. • Makrobloki łaczone ˛ sa˛ w grupy bloków (GOB): 3 wiersze po 11 makrobloków. Kwantyzator ustalany jest dla całego GOB (i przesyłany w jego nagłówku), chyba że przesłany zostanie nowy nagłówek przed końcem GOB. Sterowanie pr˛edkościa˛ (utrzymywanie stałej pr˛edkości wyjściowej): • dobór długości kroku kwantyzatora (p. makrobloki); • pomijanie ramek. 5 1.4 MPEG-1 Ogólny schemat kodowania podobny do H.261: podział obrazu na bloki, kompensacja ruchu, DCT dla wartości odchyleń od predycji, kwantyzacja współczynników po DCT (jak w JPEG; ale tablice kwantyzacji moga˛ być różne dla różnych ramek jak w H.261). Uwaga: MPEG-1 nie uwzgl˛ednia przeplotu. Problem w H.261: każda ramka wyznaczana na podstawie poprzedniej, dane moga˛ być odtwarzane tylko w sposób sekwencyjny. Zapewnienie swobodnego (a nie tylko sekwencyjnego!) dost˛epu do różnych fragmentów danych: • Ramki I: kodowane bez odwołań do innych ramek. • Ramki P: kodowanie predykcyjne, predykcja w oparciu o poprzedzajac ˛ a˛ ramk˛e P lub I (ta,˛ która bliżej). • Ramki B: predykcja dwukierunkowa, w oparciu o najbliższe ramki typu I i P (przed nia˛ i za nia). ˛ Typowa kolejność ramek (chronologiczna, dalej powtarza si˛e cykl 1-12): I 1 B B 2 3 P B 4 5 B P 6 7 B B 8 9 P B B 10 11 12 I 13 Uwzgl˛edniajac ˛ zależności mi˛edzy ramkami, kolejność w strumieniu bitowym dla powyższej sekwencji ramek b˛edzie nast˛epujaca: ˛ I 1 P 4 B B P 2 3 7 B B 5 6 P 10 B 8 B I B 9 13 11 B 12 Sterowanie pr˛edkościa˛ w MPEG: • na poziomie sekwencji: usuwanie (cz˛eści) ramek typu B (nie maja˛ żadnego wpływu na pozostałe). • na poziomie ramek: zwi˛ekszanie kroku kwantyzacji, pomijanie składowych wysokocz˛estotliwościowych. Wyniki: 25 ramek na sekunk˛e o wielkości 352 × 288 pikseli możliwe przy przepustowości 1,5 megabita na sekund˛e. 6 1.5 MPEG-2 Standard niezależny od aplikacji, modularny: 1. profile (algorytm): (a) prosty: nie używa ramek B, (b) główny: podobny do MPEG-1, (c) podejście warstwowe, najpierw strumień danych o gorszej jakości, potem strumienie poprawiajace: ˛ snr-skalowalny (ciagi ˛ poprawiajace ˛ uściślaja˛ wartości współczynników po DCT), przestrzennie skalowalny (ciagi ˛ poprawiajace ˛ dodaja˛ wi˛ecej próbek), czasowo skalowalny (dodatkowe ramki), wysoki. 2. poziomy (ograniczenia): niski (352×240), główny, wysoki 1440, wysoki (1920× 1080). Inne metody kompresji (w porównaniu z MPEG-1): • uwzgl˛ednienie przeplotu: kompresja pól a nie ramek (P), w kodowaniu drugiego pola ramki, wykorzystywane poprzednie (i pola z ramki poprzedniej). • dodatkowe tryby: kompensacja ruchu 16 × 8 (wybór kompensacji spośród kompensacji dla górnej i dolnej połowy bloku); dualna podstawowa kompensacja ruchu (dwie predykcje, uśrednienie). MPEG-4, MPEG-7: podejście abstrakcyjne, interfejs do opisu danych multimedialnych. Literatura: 1. D. Salomon, Data compression. The Complete Reference. 3rd Edition. Springer, 2004. 2. K. Sayood, Kompresja danych, Read Me, 2002. 7