Rama wewnętrzna

Klatka międzyklatkowa to klatka w strumieniu kompresji wideo , która jest wyrażona jako jedna lub więcej sąsiednich klatek. Część „inter” tego terminu odnosi się do zastosowania predykcji międzyramkowej . Ten rodzaj przewidywania próbuje wykorzystać redundancję czasową między sąsiednimi ramkami, umożliwiając wyższe współczynniki kompresji.

Przewidywanie międzyramkowe

Zakodowana ramka jest dzielona na bloki zwane makroblokami . Następnie, zamiast bezpośredniego kodowania nieprzetworzonych wartości pikseli dla każdego bloku, koder spróbuje znaleźć blok podobny do tego, który koduje na wcześniej zakodowanej klatce, zwanej ramką odniesienia . Proces ten jest wykonywany przez algorytm dopasowywania bloków . Jeśli koderowi powiedzie się wyszukiwanie, blok może zostać zakodowany przez wektor, znany jako wektor ruchu , który wskazuje położenie pasującego bloku w ramce odniesienia. Proces wyznaczania wektora ruchu nazywany jest estymacją ruchu .

W większości przypadków koder się powiedzie, ale znaleziony blok prawdopodobnie nie będzie dokładnie pasował do bloku, który koduje. Dlatego koder obliczy różnice między nimi. Te wartości resztkowe są znane jako błąd przewidywania i muszą zostać przekształcone i przesłane do dekodera.

Podsumowując, jeśli koderowi uda się znaleźć pasujący blok w ramce odniesienia, otrzyma wektor ruchu wskazujący na dopasowany blok i błąd predykcji. Używając obu elementów, dekoder będzie w stanie odzyskać surowe piksele bloku. Poniższy obraz przedstawia graficznie cały proces:

Proces predykcji międzyramkowej. W tym przypadku nastąpiła zmiana oświetlenia między blokiem w ramce odniesienia a blokiem, który jest kodowany: ta różnica będzie stanowić błąd przewidywania dla tego bloku.

Ten rodzaj przewidywania ma pewne zalety i wady:

  • Jeśli wszystko pójdzie dobrze, algorytm będzie w stanie znaleźć pasujący blok z niewielkim błędem przewidywania, tak aby po przekształceniu całkowity rozmiar wektora ruchu plus błąd przewidywania był mniejszy niż rozmiar nieprzetworzonego kodowania.
  • Jeśli algorytm dopasowywania bloków nie znajdzie odpowiedniego dopasowania, błąd przewidywania będzie znaczny. Zatem całkowity rozmiar wektora ruchu plus błąd predykcji będzie większy niż surowe kodowanie. W takim przypadku koder zrobiłby wyjątek i wysłał surowe kodowanie dla tego konkretnego bloku.
  • Jeśli dopasowany blok w ramce odniesienia został również zakodowany przy użyciu predykcji międzyramkowej, błędy popełnione przy jego kodowaniu zostaną przeniesione do następnego bloku. Gdyby każda klatka była zakodowana przy użyciu tej techniki, dekoder nie miałby możliwości zsynchronizowania się ze strumieniem wideo, ponieważ uzyskanie obrazów referencyjnych byłoby niemożliwe.

Ze względu na te wady, aby ta technika była wydajna i użyteczna, należy zastosować niezawodną i okresową ramkę odniesienia. Ta ramka odniesienia jest znana jako Intra-frame , która jest ściśle zakodowana wewnątrz, więc zawsze można ją zdekodować bez dodatkowych informacji.

W większości projektów istnieją dwa rodzaje ramek międzyramkowych: ramy P i ramy B. Te dwa rodzaje ramek i ramki I (obrazy zakodowane wewnątrz) zwykle łączą się w GOP (grupę obrazów). Ramka I nie wymaga dodatkowych informacji do dekodowania i może być używana jako wiarygodne odniesienie. Struktura ta pozwala również na osiągnięcie okresowości I-ramek, która jest potrzebna do synchronizacji dekodera.

Rodzaje ramek

Różnica między ramkami P i ramkami B polega na ramce odniesienia, której mogą używać.

Rama P

P-ramka to termin używany do zdefiniowania przewidywanych obrazów do przodu. Przewidywanie jest dokonywane na podstawie wcześniejszego obrazu, głównie ramki I lub ramki P, więc wymaga mniej danych kodowania (≈50% w porównaniu z rozmiarem ramki I).

Ilość danych potrzebnych do wykonania tej predykcji składa się z wektorów ruchu i współczynników transformacji opisujących korektę predykcji. Polega ona na zastosowaniu kompensacji ruchu .

Rama B

Klatka B to termin określający obrazy przewidywane dwukierunkowo. Ten rodzaj metody przewidywania zajmuje mniej danych kodowania niż ogólnie ramki P (≈25% w porównaniu z rozmiarem ramki I), ponieważ przewidywanie jest dokonywane na podstawie wcześniejszej lub późniejszej klatki lub obu z nich. (Ramki B mogą być również mniej wydajne niż ramki P w pewnych przypadkach, np.: kodowanie bezstratne)

Podobnie jak klatki P, klatki B są wyrażane jako wektory ruchu i współczynniki transformacji. Aby uniknąć rosnącego błędu propagacji, ramki B nie są używane jako odniesienie do dalszych prognoz w większości standardów kodowania. Jednak w nowszych metodach kodowania (takich jak H.264/MPEG-4 AVC i HEVC ) ramki B mogą być używane jako odniesienie do lepszego wykorzystania nadmiarowości czasowej.

Typowa struktura grupy obrazów (GOP).

Ilustracja zależności schematu grupy obrazków IBBPBB... Czas biegnie od lewej do prawej.

Typowa struktura grupy obrazów (GOP) to IBBPBBP... Klatka I służy do przewidywania pierwszej klatki P, a te dwie klatki są również wykorzystywane do przewidywania pierwszej i drugiej klatki B. Druga ramka P jest przewidywana również przy użyciu pierwszej ramki I. Obie ramki P łączą się, aby przewidzieć trzecią i czwartą ramkę B. Schemat pokazano na następnym obrazku:

Ta struktura sugeruje problem, ponieważ czwarta ramka (ramka P) jest potrzebna do przewidzenia drugiej i trzeciej (ramki B). Musimy więc przesłać ramkę P przed ramkami B, co opóźni transmisję (konieczne będzie zachowanie ramki P). Ta struktura ma mocne strony:

  • Minimalizuje problem ewentualnych odsłoniętych obszarów.
  • Ramki P i ramki B wymagają mniej danych niż ramki I, więc przesyłanych jest mniej danych.

Ale ma słabe punkty:

  • Zwiększa złożoność dekodera, co może oznaczać więcej pamięci potrzebnej do zmiany kolejności ramek i odrobinę więcej mocy obliczeniowej.
  • Ramki B mogą wprowadzać zależność dekodowania, co nieuchronnie zwiększa opóźnienie dekodowania.

H.264 Ulepszenia przewidywania między ramkami

Najważniejsze ulepszenia tej techniki w stosunku do poprzedniego standardu H.264 to:

  • Bardziej elastyczna partycja blokowa
  • Rozdzielczość kompensacji ruchu do ¼ piksela
  • Wiele referencji
  • Ulepszony makroblok bezpośredni/pomiń

Bardziej elastyczna partycja blokowa

Podział bloku luminancji 16×16 ( MPEG-2 ), 16×8, 8×16 i 8×8. Ostatni przypadek pozwala na podział bloku na nowe bloki 4×8, 8×4 lub 4×4.

H.264 block division.svg

Ramka do zakodowania jest podzielona na bloki o jednakowej wielkości, jak pokazano na powyższym rysunku. Każdy przewidywany blok będzie blokami tego samego rozmiaru co obrazy referencyjne, przesuniętymi o niewielkie przesunięcie.

Rozdzielczość kompensacji ruchu do ¼ piksela

Piksele w pozycji półpiksela uzyskuje się przez zastosowanie filtra o długości 6.

H=[1 -5 20 20 -5 1]

Na przykład:

b=A - 5B + 20C + 20D - 5E + F

Piksele w pozycji ćwiartki piksela są uzyskiwane przez interpolację dwuliniową .

Podczas gdy MPEG-2 pozwalał na rozdzielczość ½ piksela, Inter-frame pozwala na rozdzielczość do ¼ piksela. Oznacza to, że możliwe jest przeszukanie bloku w ramce do zakodowania w innych ramkach odniesienia lub możemy interpolować nieistniejące piksele, aby znaleźć bloki, które są jeszcze lepiej dopasowane do bieżącego bloku. Jeśli wektor ruchu jest liczbą całkowitą jednostek próbek, oznacza to, że na obrazach referencyjnych można znaleźć skompensowany blok w ruchu. Jeśli wektor ruchu nie jest liczbą całkowitą, predykcja zostanie uzyskana z interpolowanych pikseli przez filtr interpolatora w kierunku poziomym i pionowym.

Subpel interpolation.jpg

Wiele referencji

Wiele odniesień do szacowania ruchu umożliwia znalezienie najlepszego odniesienia w 2 możliwych buforach (Lista 0 do poprzednich obrazów, Lista 1 do przyszłych obrazów), które zawierają łącznie do 16 klatek. Przewidywanie bloków odbywa się na podstawie ważonej sumy bloków z obrazu referencyjnego. Pozwala to na lepszą jakość obrazu w scenach, w których występują zmiany płaszczyzny, powiększenia lub gdy ujawniane są nowe obiekty.

Multiple references.jpg

Ulepszony makroblok bezpośredni/pomiń

Tryb pomijania i tryb bezpośredni są bardzo często używane, zwłaszcza w przypadku klatek typu B. Znacznie zmniejszają liczbę bitów do zakodowania. O trybach tych mówi się, gdy blok jest kodowany bez wysyłania błędów resztkowych lub wektorów ruchu. Koder zarejestruje tylko, że jest to makroblok pominięcia. Dekoder wydedukuje wektor ruchu bloku zakodowanego w trybie Direct/Skip na podstawie innych bloków już zdekodowanych.

Istnieją dwa sposoby wydedukowania ruchu:Direct skip.jpg

Temporal
Wykorzystuje blokowy wektor ruchu z klatki Listy 1, znajdującej się w tej samej pozycji, aby wydedukować wektor ruchu. Blok listy 1 używa bloku listy 0 jako odniesienia.
Przestrzenny
Przewiduje ruch z sąsiednich makrobloków w tej samej klatce. Możliwym kryterium mogłoby być skopiowanie wektora ruchu z sąsiedniego bloku. Te tryby są używane w jednolitych strefach obrazu, w których nie ma dużego ruchu.

Block partition.jpg

Na powyższym rysunku różowe bloki to bloki kodowane w trybie Direct/Skip. Jak widać, są one stosowane bardzo często, głównie w ramkach typu B.

Dodatkowe informacje

Chociaż użycie terminu „ramka” jest powszechne w nieformalnym użyciu, w wielu przypadkach (na przykład w międzynarodowych standardach kodowania wideo MPEG i VCEG ) stosuje się bardziej ogólną koncepcję, używając słowa „obraz” zamiast „klatka” , gdzie obraz może być albo pełną klatką, albo pojedynczym polem z przeplotem .

Kodeki wideo , takie jak MPEG-2 , H.264 lub Ogg Theora , zmniejszają ilość danych w strumieniu, śledząc klatki kluczowe z jedną lub kilkoma klatkami pośrednimi. Ramki te można zazwyczaj zakodować przy użyciu niższej przepływności niż jest to wymagane w przypadku klatek kluczowych, ponieważ większość obrazu jest zwykle podobna, więc należy zakodować tylko zmieniające się części.

Zobacz też

  • Oprogramowanie H.264: http://iphome.hhi.de/suehring/tml/download/
  • T.Wiegand, GJ Sullivan, G. Bjøntegaard, A.Luthra: Przegląd standardu kodowania wideo H.264/AVC . Transakcje IEEE dotyczące obwodów i systemów dla technologii wideo, tom. 13, nr 7, lipiec 2003