profil

Tworzenie filmów

poleca 85% 577 głosów

Treść
Grafika
Filmy
Komentarze

Hasła DVD, DivX czy XviD kojarzą się jednoznacznie z modnym ostatnio cyfrowym wideo, które nie byłoby tak popularne, gdyby nie algorytmy kompresji wideo MPEG-2 i MPEG-4. Tylko dzięki nim możemy cieszyć się filmami na ekranach telewizorów oraz monitorów komputerowych. Najważniejszym celem, jaki przyświecał twórcom standardów kompresji wideo, jest zapisanie obrazu o jak najlepszej jakości w pliku o możliwie małych rozmiarach. W dalszej części przedstawiam techniki wykorzystywane w najpopularniejszych obecnie kodekach. Przy okazji pokażę, dlaczego kodeki DivX, XviD oraz inne bazujące na algorytmie MPEG-4 kompresują filmy lepiej niż starszy MPEG-2. Następnie postaram się także przedstawić zalety i wady konkretnych kodeków.
Pierwszym algorytmem kompresji wideo był MPEG-1, którego bezpośrednim rozwinięciem jest ostatecznie zatwierdzony w listopadzie 1994 r. MPEG-2. Stworzenie tych standardów przyczyniło się do popularyzacji multimedialnych CD-ROM-ów, płyt (S)VCD, cyfrowej telewizji kablowej i satelitarnej (DVB) oraz krążków DVD
Podstawy standardu MPEG-4 zostały dopracowane w styczniu 1999 roku z myślą o wideokonferencjach, wideotelefonach, czy interaktywnych grach wideo. Jak powszechnie wiadomo, do popularyzacji tego standardu najbardziej przyczynił się DivX 3.11 Alpha, będący zmodyfikowanym kodekiem MPEG-4, opracowanym przez Microsoft. Pierwotnie miał on służyć tylko do transmisji strumieniowej przez Internet, jednak został "przystosowany" przez niezależnych programistów do kompresji materiału wideo w plikach AVI.
Różnice między standardami kompresji wynikają w dużej mierze z założeń przyjętych podczas ich projektowania. Dlatego MPEG-2 doskonale nadaje się wszędzie tam, gdzie możemy przesyłać dużą ilość danych. Obecnie jest on powszechnie stosowany i kompatybilny z popularnymi urządzeniami wideo. Nie sprawdzi się on natomiast przy transmisji wideo przez łącza o małej przepustowości. Do takich zastosowań przewidziano MPEG-4, który oferuje bardzo wysoki stopień kompresji, elastyczność i wiele funkcji możliwych do wykorzystania w przyszłych aplikacjach Audio Video. Jak to działa?
Pierwszym etapem kompresji MPEG jest tzw. dyskretna transformata cosinusowa (DCT). Najpierw enkoder dzieli obraz na bloki o rozmiarach 8x8 pikseli. W każdym bloku informacje o jasności i barwie poszczególnych punktów przekształcane są na częstotliwości, które odzwierciedlają rozkład jasności (luminancja) i kolorów (chrominancja). W wyniku tego najmniejszym szczegółom obrazu, które i tak z trudnością rozpoznawane są przez ludzkie oko, odpowiadają najwyższe częstotliwości widma będącego efektem działania transformaty. Później w procesie kwantyzacji te najwyższe częstotliwości są odfiltrowywane, co sprawia, że wielkość pliku graficznego maleje.
Technika ta jest podobna do stosowanej w standardzie JPEG. My jednak musimy zakodować nie jeden statyczny obrazek, ale wiele klatek filmowych. Dla zaoszczędzenia miejsca enkoder MPEG łączy pojedyncze obrazy (tzw. ramki), tworząc w ten sposób grupę obrazów GOP (Group of Pictures). W procesie kompresji powstają ramki kluczowe (Intra Frame), które zawierają pełną informację o obrazie oraz ramki pośrednie (Predicted Frame i Bidirectional Frame), wykorzystujące podobieństwa w następujących po sobie obrazach. Właśnie ramki typu P i B stanowią ogromną większość w każdej grupie GOP. Jednocześnie do ich zapisania wymagana jest znacznie mniejsza ilość danych, ponieważ nie zawierają one pełnej informacji o obrazie, a opisują jedynie różnice między kolejnymi ramkami.
W ramach tworzonych grup obrazów GOP stosuje się także przewidywanie ruchu (Motion Estimation), które działa z wykorzystaniem metody blokowej. Oznacza to, że enkoder MPEG dzieli obraz wideo na tzw. makrobloki, każdy o rozmiarach 16x16 pikseli. Następnie sprawdza, w jaki sposób zmienia się pozycja makrobloków w poprzednich i w następnych ramkach. Informacje o zmianach zapisywane są w formie wektorów przesunięć i obrazów różnicowych (ramki typu P i B), co zapewnia dalszą redukcję danych.
Opisane techniki doskonale się sprawdzają, jeśli dysponujemy tak pojemnym nośnikiem jak płyta DVD. Gdy chcemy nagrać film na płycie CD lub przesłać go przez Internet, potrzebujemy bardziej zaawansowanych metod redukcji danych. MPEG-4 oprócz dyskretnej transformaty cosinusowej wykorzystuje także bardzo efektywne algorytmy kompresji faletkowej (wavelet), które stosowane są do kompresji grafiki w standardzie JPEG2000. W porównaniu z DCT wykorzystanie kompresji wavelet zapewnia wyższą jakość obrazu. Dzieje się tak, ponieważ algorytm ten nie dzieli klatki na bloki, ale przetwarza całość. Operacje te wymagają jednak znacznie większej mocy obliczeniowej komputera.
Lepsza jakość filmu MPEG-4 przy niższych bitrate'ach wynika z zastosowania techniki kodowania kształtów (Shape Encoding). Kompresja MPEG-4 bazuje nie tylko na analizie niezależnych bloków obrazu wideo - dodatkowo rozpoznawane są obiekty występujące w kolejnych ramkach. Obiekty te są wyodrębniane i kodowane niezależnie od tła. Wykorzystanie tej metody pozwala, przy użyciu niewielkiej ilości danych, opisać przesunięcia skomplikowanych obiektów złożonych z wielu makrobloków (Video Object Planes) na niezmieniającym się tle. Przykładem może być ruchoma twarz prezentera telewizyjnego na nieruchomym tle. Standard MPEG-4 wprowadza elementy VOP (Video Object Planes) typu I, P i B, analogicznie do modelu GOP (Group of Pictures), znane już z MPEG-2. Dzięki zastosowaniu VOP możliwe jest zapisywanie zmian położenia, kształtu i tekstury elementów obrazu w równie oszczędny sposób, jak w przypadku GOP.
Szczególnym przypadkiem kodowania kształtów jest opcjonalnie wykorzystywana technika globalnej kompensacji ruchu (GMC). Dzięki GMC takie efekty jak zoom albo obrót kamery da się opisać przy użyciu niewielu parametrów i z wykorzystaniem wcześniej zebranych informacji o obrazie. W przeciwieństwie do Motion Estimation w technologii Global Motion Compensation kodowaniu podlegają nie tylko makrobloki, ale całe fragmenty obrazu, nawet jeśli wielkości obiektów się zmieniają.
Jak łatwo zauważyć, kompresja MPEG-4 jest dość skomplikowana. Jednak zrozumienie jej podstaw może być przydatne podczas tworzenia filmów w formacie DivX. Dzięki temu unikniemy eksperymentów z opcjami oprogramowania i będziemy świadomie panowali nad parametrami plików wynikowych. Na przykład DivX 5.1.1 oraz XviD od jakiegoś czasu korzystają z GMC, więc podczas kodowania materiału wideo mamy możliwość większego zredukowania ilości danych. Wymaga to jednak sporej mocy obliczeniowej podczas kompresji. Co ciekawe, pierwsze implementacje standardu MPEG-4, np. DivX 3.11, nie wykorzystywały takich technik.Największy wpływ na stopień kompresji algorytmu MPEG-4 mają z pewnością kodowanie kształtów i zastosowane metody wyszukiwania obiektów w obrazie. Optymalizacja techniki Shape Encoding w poszczególnych kodekach umożliwia zwiększenie stopnia upakowania danych bez zbyt dużej degradacji jakości. Standard MPEG-4 udostępnia wiele opisanych powyżej technik redukcji danych. Ostateczny efekt zależeć jednak będzie od konkretnego kodeka.
Każdy kompresor pozwala na zakodowanie materiału wideo na kilka sposobów. Najprostsze jest więc zakodowanie filmu jednoprzebiegowo z zadanym bitrate'em. Parametr ten ma ogromny wpływ na jakość filmu. Upraszczając, można powiedzieć, że określa tym samym stopień kompresji i wielkość pliku.Podczas jednoprzebiegowego kodowania ze stałą przepływnością (CBR - Constant Bit-Rate) może się zdarzyć, że na dynamicznych scenach widoczne będą duże uproszczenia obrazu (makrobloki). Po prostu ustalona na sztywno wartość bitrate'u będzie niewystarczająca dla zakodowania takich fragmentów filmu z zadowalającą jakością. Standardowo przy kodowaniu z wykorzystaniem algorytmów MPEG-4 stosuje się więc jednoprzebiegową konwersję ze zmiennym bitrate'em (VBR - Variable BitRate). W takim przypadku koder przeszukuje materiał wideo w taki sposób, aby statycznym scenom przypisać mniej danych, a więcej informacji wykorzystać do zakodowania akcji. Średni bitrate pozostanie jednak zgodny z przyjętymi założeniami formatu, a jakość pliku wynikowego będzie lepsza niż w przypadku kodowania CBR.Najlepszym sposobem na otrzymanie optymalnego strumienia danych jest tak zwane kodownie wieloprzebiegowe. Dzięki jego zastosowaniu można bardzo dokładnie ustalić najlepszy bitrate dla filmu przy zadanym ograniczeniu, jakim jest np. pojemność krążka CD-R. W praktyce wystarczają dwa przejścia algorytmu: w pierwszym analizowany jest cały materiał wideo i tworzone są specjalne statystyki. Zawierają one informację o tym, jaki współczynnik bitrate powinien zostać przyporządkowany poszczególnym fragmentom filmu. Podczas powtórnej obróbki obrazu kodek uśrednia te statystyki dla całego obrazu, uwzględniając przyjęte ograniczenia.
Mało znany 3vix D4 4.5 Pro oferuje obecnie kodowanie jedno- i dwuprzebiegowe, dzięki czemu staje się powoli konkurencyjny wobec DivX-a i XviD-a. Dodatkową zaletą płatnej (100 USD) wersji jest możliwość tworzenia plików MP4.Praktyczne pomiary wydajności kodeków wykazały, że szybkość kodowania zależy od wielu parametrów, które określamy podczas kompresji. Oczywiście największy wpływ na prędkość kodowania ma wybór liczby przebiegów algorytmu. Nie bez znaczenia jest też ingerencja w strukturę tworzonych grup obrazów GOP i w szczególności stosowania ramek typu B. Poza tym kodeki oferują różne sposoby ingerencji w tworzenia VOP - detekcji obiektów oraz ich przesunięć. Ustawienie dużej precyzji przeszukiwania obiektów może znacznie spowolnić pracę kompresora DivX czy też XviD. Trzeba przyznać, iż najnowszy DivX 5.1.1 działa szybciej niż jego poprzednia wersja. Kodek XviD podczas kompresji z porównywalnymi ustawieniami zakodował materiał nieco wolniej. Pod względem jakości uzyskaliśmy bardzo podobny efekt - subiektywnie jednak nieco lepiej wyglądał materiał zakodowany XviD-em.
Tworzenie filmów MPEG4 w standardzie ISO.
Najpopularniejsze kodeki DivX i XviD umożliwiają tworzenie wyłącznie zbiorów AVI. W standardzie ISO MPEG-4 opisano sposób zapisywania strumienia danych, podobnie jak w przypadku MPEG-1/2 (pliki z rozszerzeniami MPG i VOB). Aby zbiory zawierające materiał zakodowany w formacie MPEG-4 były prawidłowo odtwarzane, należy zapisywać je zgodnie ze specyfikacją. MP4 narzuca ponadto zakodowanie wysokiej jakości dźwięku AAC. Uzyskanie strumienia audio-wideo MP4 umożliwia narzędzie MPEG4ip, opracowane w ramach projektu zainicjowanego przez centrum technologiczne Cisco Systems.

Czy tekst był przydatny? Tak Nie
Przeczytaj podobne teksty

Czas czytania: 8 minut