Kompresja Wideo

Magia plików wideo: kompresja międzyklatkowa i wewnątrzklatkowa w standardach takich jak MPEG i M-JPEG.

Dlaczego Kompresja Wideo to Cyfrowy Cud

Jeśli kompresję obrazów statycznych można porównać do sprytnego spakowania walizki na wyjazd, to kompresja wideo jest odpowiednikiem organizacji logistyki dla światowej trasy koncertowej zespołu rockowego. Skala danych jest monumentalnie większa, a wyzwania o wiele bardziej złożone. Wideo to nie tylko zbiór obrazów; to sekwencja obrazów wyświetlanych w szybkim tempie, tworząca iluzję ruchu. Ta sekwencyjna natura wprowadza nowy wymiar danych, którym trzeba zarządzać: czas.

Rozważmy surowy rozmiar danych krótkiego, nieskompresowanego klipu wideo. Pojedyncza klatka standardowego wideo Full HD (1920×10801920 \times 1080 pikseli) wykorzystująca 24-bitowy kolor (8 bitów na każdy z kanałów: czerwony, zielony i niebieski) wymaga:

1920×1080 pikseli×24 bity/piksel49.8 milionoˊw bitoˊw1920 \times 1080 \text{ pikseli} \times 24 \text{ bity/piksel} \approx 49.8 \text{ milionów bitów}

Czyli około 6.2 megabajtoˊw (MB)6.2 \text{ megabajtów (MB)} na klatkę.

Standardowe wideo odtwarzane jest z prędkością około 30 klatek na sekundę. Zatem na jedną sekundę nieskompresowanego wideo potrzebowalibyśmy:

6.2 MB/klatkę×30 klatek/sekundę=186 MB/sekundę6.2 \text{ MB/klatkę} \times 30 \text{ klatek/sekundę} = 186 \text{ MB/sekundę}

Jednominutowy film zajmowałby ponad 11 gigabajtów. Dwugodzinny film to ponad terabajt danych. Przesyłanie strumieniowe lub przechowywanie tak ogromnych plików byłoby całkowicie niepraktyczne w zastosowaniach konsumenckich. Dlatego skuteczna nie jest tylko udogodnieniem; jest to podstawowa technologia umożliwiająca działanie usług streamingowych jak Netflix, wideokonferencji jak Zoom, a nawet prostego udostępniania filmów ze smartfona.

Algorytmy kompresji wideo osiągają swoją niesamowitą wydajność, wykorzystując dwa fundamentalne rodzaje redundancji:

  1. Redundancja przestrzenna (wewnątrzklatkowa): Jest to redundancja w obrębie pojedynczej klatki, tak jak w obrazie statycznym. Odnosi się do obszarów tego samego lub podobnego koloru, jak błękitne niebo czy biała ściana.
  2. Redundancja czasowa (międzyklatkowa): Jest to redundancja pomiędzy kolejnymi klatkami. W większości filmów zmiana z jednej klatki na następną jest bardzo niewielka. Osoba mówiąca, samochód jadący przez ekran – tło często pozostaje statyczne lub zmienia się w przewidywalny sposób. To właśnie tutaj kompresja wideo osiąga największe oszczędności.

Kompresja Wewnątrzklatkowa i Międzyklatkowa: Dwa Filary Kodeków Wideo

Nowoczesne kodeki wideo, czyli oprogramowanie lub sprzęt obsługujący kompresję i dekompresję, stosują zaawansowane połączenie dwóch odrębnych strategii. Jedna z nich traktuje każdą klatkę jako osobny obraz, podczas gdy druga sprytnie wykorzystuje podobieństwa między klatkami w czasie.

Kompresja Wewnątrzklatkowa: Kompresowanie Pojedynczego Obrazu

zajmuje się redundancją przestrzenną. Traktuje pojedynczą klatkę wideo tak, jakby była statyczną fotografią i kompresuje ją samą w sobie, bez odniesienia do jakichkolwiek poprzedzających lub następujących klatek. Proces ten jest praktycznie identyczny z algorytmem kompresji JPEG:

  1. Klatka jest dzielona na małe bloki pikseli (np. 8×88 \times 8).
  2. Każdy blok jest przetwarzany przez Dyskretną Transformatę Kosinusową (DCT), która przekształca przestrzenne wartości pikseli na współczynniki częstotliwości, oddzielając istotne informacje wizualne bloku (niskie częstotliwości) od jego drobnych szczegółów (wysokie częstotliwości).
  3. Współczynniki są następnie , czyli etap, w którym mniej istotne percepcyjnie szczegóły wysokoczęstotliwościowe są odrzucane lub reprezentowane z mniejszą precyzją. Jest to główne źródło redukcji danych i utraty jakości.
  4. Wynikowe skwantyzowane współczynniki są ostatecznie kompresowane bezstratnie przy użyciu technik takich jak kodowanie Huffmana.

Klatki skompresowane wyłącznie tą metodą nazywane są klatkami I (Intra-frames). Stanowią one kręgosłup strumienia wideo.

Kompresja Międzyklatkowa: Przewidywanie Przyszłości z Przeszłości

To tutaj leży prawdziwa siła kompresji wideo. zajmuje się redundancją czasową. Zamiast kodować każdą klatkę od zera, przewiduje ona zawartość bieżącej klatki na podstawie jednej lub więcej wcześniej zdekodowanych klatek (zwanych klatkami referencyjnymi).

Podstawową techniką jest tutaj Kompensacja Ruchu. Oto jak to działa:

  1. Koder dzieli bieżącą klatkę na bloki (często nazywane makroblokami, np. 16×1616 \times 16 pikseli).
  2. Dla każdego makrobloku w bieżącej klatce, koder przeszukuje klatkę referencyjną, aby znaleźć blok pikseli, który jest do niego najbardziej podobny.
  3. Zamiast kodować rzeczywiste piksele makrobloku, koder zapisuje . Wektor ten jest w zasadzie instrukcją: "weź blok z pozycji (x, y) w ostatniej klatce i przesuń go na pozycję (x', y') w tej klatce."
  4. Często przewidywany blok nie jest idealnym dopasowaniem. Koder oblicza wtedy różnicę między rzeczywistym makroblokiem a jego przewidywaniem po kompensacji ruchu. Ta różnica, zwana rezydualną, jest następnie kompresowana (za pomocą DCT i kwantyzacji) i wysyłana. Ponieważ przewidywanie jest zwykle bardzo dobre, rezydualna zawiera bardzo mało informacji i może być skompresowana niezwykle wydajnie.

Eksplorator kompensacji ruchu

Wybierz makroblok i zobacz skad koder pobiera dane do predykcji.

Scenariusze

Tło przesuwa się płynnie w prawo, więc większość makrobloków ma ten sam wektor poziomy.

Makroblok1 / 3

Wektory wskazuja z klatki referencyjnej na blok w klatce biezacej.

Klatka referencyjna
0
0
0
0
0
0
0
2
2
0
0
0
0
2
2
0
0
0
0
2
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Klatka biezaca
0
0
0
0
0
0
0
0
2
2
0
0
0
0
2
2
0
0
0
0
2
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Legenda

Kolor komórki przybliża jasność pikseli; pierścienie oznaczają bieżący blok (zielony) oraz dopasowanie w klatce referencyjnej (bursztynowy).

0 — tło / najciemniejsze
1 — niska intensywność
2 — obiekt
3 — jasny detal
Bieżący makroblok
Dopasowanie w referencji
Wektor ruchu
(+1, +0)
Kierunek
Prawo
Długość1.00
Energia rezyduum8

Makroblok obejmujący obiekt podąża za wektorem +1 w poziomie.

Metryki scenariusza
Średnia |v|
0.67
Średnie rezyduum
4.7
Wektory zerowe
1/3

Klatki zakodowane tą metodą predykcyjną nazywane są klatkami P (Predicted frames) oraz klatkami B (Bi-directionally predicted frames).

Główni Aktorzy: Klatki I, P oraz B

Nie wszystkie klatki w skompresowanym strumieniu wideo są sobie równe. Nowoczesne kodeki, takie jak MPEG, używają mieszanki trzech różnych typów klatek, aby osiągnąć optymalną równowagę między współczynnikiem kompresji, jakością i funkcjonalnością.

Klatki I, P i B
  • Klatki I (Intra-frames lub Klatki Kluczowe)

    Klatki I są samowystarczalne. Są kompresowane wyłącznie przy użyciu technik wewnątrzklatkowych (przestrzennych) i nie zależą od żadnych innych klatek do dekodowania. Są to w zasadzie kompletne, niezależne obrazy (jak plik JPEG) osadzone w strumieniu wideo.

    Rola: Służą jako punkty odniesienia w wideo. Są niezbędne do rozpoczęcia odtwarzania, umożliwienia widzowi przewinięcia do określonego momentu w filmie oraz do odzyskiwania danych po błędach transmisji. Ponieważ zawierają pełną informację o obrazie, są największym z trzech typów klatek.

  • Klatki P (Predicted frames)

    Klatki P są bardziej wydajne. Są kodowane za pomocą kompensacji ruchu z najnowszej poprzedzającej klatki I lub P. Klatka P przechowuje tylko wektory ruchu i dane rezydualne (różnice). To sprawia, że są znacznie mniejsze niż klatki I.

    Rola: Przenoszą "historię" ruchu naprzód od jednej klatki kluczowej do następnej, drastycznie redukując ilość danych potrzebnych do opisania zmian między klatkami.

  • Klatki B (Bi-directionally predicted frames)

    Klatki B oferują najwyższy poziom kompresji. Wykorzystują kompensację ruchu, patrząc zarówno wstecz na poprzednią klatkę referencyjną (I lub P), jak i w przód na przyszłą klatkę referencyjną (I lub P). Dzięki możliwości odniesienia do informacji z dwóch kierunków, koder często może znaleźć jeszcze lepsze dopasowanie (przewidywanie interpolowane), co skutkuje bardzo małą ilością danych rezydualnych.

    Rola: Klatki B wypełniają luki między klatkami I i P z maksymalną wydajnością. Są najmniejszym typem klatki. Ich użycie wiąże się z kompromisem: wprowadzają opóźnienie, ponieważ dekoder musi czekać na nadejście przyszłej klatki referencyjnej, zanim będzie mógł zdekodować klatkę B. Oznacza to również, że klatki muszą być przesyłane i dekodowane w innej kolejności niż są wyświetlane.

Plac zabaw GOP

Zobacz jak klatki I, P i B układają się w kolejności odtwarzania i kodowania.

Presety

Jedna klatka I i szereg klatek P przewidywanych w przód.

Klatka w odtwarzaniu1 / 6

Klatki B pojawiają się później w kolejności kodera, bo czekają na przyszłe referencje.

Kolejność wyświetlania
I1odt #1kod #1
P2odt #2kod #2
P3odt #3kod #3
P4odt #4kod #4
P5odt #5kod #5
P6odt #6kod #6
Kolejność kodera
I1odt #1kod #1
P2odt #2kod #2
P3odt #3kod #3
P4odt #4kod #4
P5odt #5kod #5
P6odt #6kod #6
Wybrana klatka
Typ klatki
I
Kolejność odtwarzania#1
Kolejność kodera#1
Referencje
Brak

Kotwica GOP. Dekoder startuje od tej klatki.

Legenda klatek
IKlatka I (kotwica)
PKlatka P (predykcja naprzód)
BKlatka B (dwukierunkowa)
Wpływ na bitrate
Strumień All-I
7,2 Mb
Strumień preset
3 Mb
Zaoszczędzone bity
4,2 Mb
Współczynnik
2.40x
Maks. opóźnienie
0 kl.

Porównanie Standardów: M-JPEG kontra MPEG

Wybór standardu kompresji ma głęboki wpływ na rozmiar pliku, jakość i użyteczność. Dwie główne rodziny standardów ilustrują różne filozofie: Motion JPEG i rodzina MPEG.

M-JPEG (Motion JPEG): Proste Podejście

M-JPEG to najprostsza metoda kompresji wideo. Traktuje ona film jako nic więcej niż serię niezależnych obrazów JPEG przesyłanych strumieniowo jeden po drugim.

  • Metoda: Używa wyłącznie kompresji wewnątrzklatkowej. Każda klatka jest klatką I. Całkowicie ignoruje redundancję czasową między klatkami.
  • Zalety: Niezwykle prosty do wdrożenia. Edycja z dokładnością do klatki jest bezproblemowa, ponieważ każda klatka jest samowystarczalna. Brak opóźnień wynikających ze zmiany kolejności klatek. Wysoka odporność na błędy, uszkodzona klatka wpływa tylko na nią samą.
  • Wady: Wyjątkowo nieefektywny. Rozmiary plików są znacznie większe niż w przypadku kodeków opartych na MPEG dla tej samej jakości wizualnej, ponieważ nie wykorzystuje ogromnej redundancji między klatkami.
  • Zastosowania: Profesjonalne przepływy pracy w edycji wideo (jako format pośredni), niektóre systemy obrazowania medycznego oraz wysokiej klasy kamery bezpieczeństwa, gdzie integralność każdej pojedynczej klatki jest ważniejsza niż rozmiar pliku.

Rodzina MPEG (MPEG-2, H.264, H.265, itp.)

Rodzina standardów MPEG (Moving Picture Experts Group) reprezentuje dominujące podejście do kompresji wideo. Standardy te są zbudowane wokół potężnej koncepcji predykcji międzyklatkowej z kompensacją ruchu.

  • Metoda: Używa mieszanki kompresji wewnątrzklatkowej (dla klatek I) i międzyklatkowej (dla klatek P i B) w celu usunięcia zarówno redundancji przestrzennej, jak i czasowej.
  • Zalety: Niezwykle wysoka wydajność kompresji, co prowadzi do małych rozmiarów plików odpowiednich do streamingu, transmisji i przechowywania na nośnikach konsumenckich, takich jak płyty Blu-ray.
  • Wady: Znacznie bardziej złożony obliczeniowo zarówno do kodowania, jak i dekodowania. Edycja jest trudniejsza i zazwyczaj wymaga cięcia tylko w miejscach klatek I, aby uniknąć konieczności ponownego kodowania dużych fragmentów. Bardziej podatny na błędy transmisji. Uszkodzona klatka I lub P może wpłynąć na dekodowanie wszystkich kolejnych klatek aż do następnej klatki I.
  • Zastosowania: Praktycznie wszystkie nowoczesne aplikacje wideo: streaming online (YouTube, Netflix), cyfrowa telewizja, wideokonferencje, płyty Blu-ray i DVD oraz nagrywanie wideo na smartfonach.
    Kompresja Wideo | Teleinf Edu