Kompresja 1 Kompresja wideo Dane wideo jako sekwencja

Transkrypt

Kompresja 1 Kompresja wideo Dane wideo jako sekwencja
Kompresja
Streszczenie
Studia Dzienne
Wykład 14, 18.05.2006
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 .
1
• 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:
• 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 kompen2
sacj˛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
2
(B
−
C
)
ij
ij
b2 i=1 j=1
Wada: dla każdego przesuni˛ecia konieczne liczenie bł˛edu
„od nowa”.
2. miara wewn˛etrznej projekcji (integral projection):
¯
b ¯¯ X
b
X
¯
¯
¯
i=1 ¯j=1
Bij −
b
X
j=1
¯
¯
¯
¯
ij ¯¯
¯
C +
¯
b ¯¯ X
b
X
¯
¯
¯
j=1 i=1
Bij −
b
X
i=1
C
¯
¯
¯
¯
ij ¯¯
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).
3
Zastosowanie: wybór bloków-kandydatów w oparciu o
t˛e miar˛e i wyznaczenie najlepiej pasujacego
˛
z zastosowaniem miary bardziej dokładnej.
˛
krokiem.
3. Przeszukiwanie z rosnacym
Badamy wszystkie wektory przesuni˛eć w najbliższym
sasiedztwie
˛
i wektory z ustalonym skokiem w dalszym
sasiedztwie.
˛
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 sasedz˛
twie 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.
4
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.
5
1.1.2 Gdy stosowany jest przeplot...
W sytuacji, gdy bieżaca
˛ ramka zawiera co drugi wiersz i co
druga˛ kolumn˛e (np. w zwiazku
˛
z przeplotem), interpolujemy
brakujace
˛ wartości. Niech A, B, C, D to znane wartości pikseli, h1, v1, c, v2, h2 wartości przybliżane, ułożone jak poniżej:
A h1 B
v1 c v2
C h2 D
Wówczas h1, h2 sa˛ wyliczane jako wartość średnia z odpowiednio A, B i C, D, podobnie v1, v2 to średnie z A, C i odpowiednio B, D. A wartość c to średnia z A, B, C, D.
1.2 Reprezentacja sygnału wideo i obrazów kolorowych
Standardowe parametry:
• 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).
6
• Dla zachowania zgodności z sygnałem „czarno-białym”:
podział na składowe Y CbCr (Y: luminacja, odpowiada
obrazowi monochromatycznemu; CbCr : chrominacja, definiuja˛ składowe koloru)
• Składowe Y CbCr 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 CbCr 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.
7
• 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.
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.˛
8
Dalsze usprawnienia i etapy:
• Dla wygładzenia kraw˛edzi w blokach używanych do predykcji, stosowane jest filtrowanie (choć może być wyła˛
czone). 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; uzyskiwanego stopnia kompresji (który wynika też z dynamiki scen, ilości obliczeń, które możemy wynkonać przy
kompensacji ruchu, ...).
˛
sa˛ w grupy bloków (GOB): 3 wier• Makrobloki łaczone
sze 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.
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
9
(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 B B P B B P B B P B B I
1 2 3 4 5 6 7 8 9 10 11 12 13
Uwzgl˛edniajac
˛ zależności mi˛edzy ramkami, kolejność w strumieniu bitowym dla powyższej sekwencji ramek b˛edzie nast˛epujaca:
˛
I P B B P B B P B B I B B
1 4 2 3 7 5 6 10 8 9 13 11 12
Sterowanie pr˛edkościa˛ w MPEG:
10
• 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.
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:
˛ snrskalowalny (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).
11
• 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.
12