Studia Podyplomowe INFORMATYKA TECHNIKI MULTIMEDIALNE dr Artur Bartoszewski
Film ile klatek na sekundę? Impulsy świetlne działają na komórki nerwowe jeszcze przez kilka ułamków sekundy po ustąpieniu faktycznego zjawiska, przez co przy następujących szybko po sobie obrazach (od około 15 na sekundę), obserwowanych w odpowiedniej kolejności, uzyskujemy wrażenie obrazu ruchomego. Stąd dolna granica to ok 15 k/s; Kino 24 k/s TV 25 k/s Monitor analogowy 25 do 60 k/s Monitor LCD 60 k/s HDTV 25 do 60 k/s
Film jaka rozdzielczość? Przy szybko następującej po sobie sekwencji obrazów oko ludzkie jest dużo bardziej tolerancyjne dla mniejszych rozdzielczości niż w przypadku obrazów nieruchomych.
Kompresja filmu W technikach kompresji obowiązuje przede wszystkim zasada mówiąca, że zlikwidowanie redundantnej informacji jest sprawą zasadniczą. Przy wartościowaniu informacji uwzględnia się też fizjologiczne aspekty postrzegania. Rozdzielczość zakresu barw może być niższa niż rozdzielczość zakresu jaskrawości. Wartości kolorów mogą być traktowane nierównomiernie. W centrum ekranu nieścisłości w odtwarzanym obrazie będą się bardziej rzucały w oczy niż na jego obrzeżach. W związku z tym zmniejszona jakość odtworzenia będzie mniej zauważalna na peryferiach ekranu, niż w jego centrum.
Formaty kompresji filmu
Formaty zapisu filmu (M-JPEG) M-JPEG (Motion JPEG) to ruchoma" odmiana statycznego JPEG-a. Stosuje się tu ten sam algorytm kompresji. Pierwotnie stworzony do kompresji pojedynczych klatek, M-JPEG stosuje wyłącznie kompresję wewnątrzklatkową, czyli kompresuje każdą klatkę oddzielnie. Schemat kompresji wygląda następująco: RGB --> Konwersja do YUV --> Dyskretna transformacja kosinusowa --> Kodowanie Huffmana --> Plik AVI Po dokonaniu konwersji obrazu z formatu RGB na YUV każdy z trzech obrazów jest dzielony na bloki o wielkości 8x8 pikseli. Następnie na każdym z tych bloków dokonywana jest seria obliczeń, nazywana dyskretną transformacją kosinusową
Formaty zapisu filmu (M-JPEG) M-JPEG został utworzony do kodowania obrazów ruchomych i nie obejmuje swym działaniem ścieżki dźwiękowej. Zakres kompresji może być zmienny i wynosi od 2:1 aż do 100:1 (najgorsza jakość to najmniejsza ilość danych do zapisania na dysku), przy czym M-JPEG 12:1 daje niską jakość, całkowicie nie do przyjęcia nawet po zgraniu na VHS. Minimum jest 10:1, a ze względu na jakość poleca się stopień kompresji od 2 do 4:1. Ponieważ format ten wymaga instalowania specjalnych kodeków, a filmy zakodowane za jego pomocą zajmują dość dużo miejsca, lecz bardzo dobrze nadają się do późniejszej obróbki. format ten doskonale nadaje się do wstępnej kompresji obrazów przechwytywanych np. z kamery wideo lub tune ra TV. M-JPEG był pierwszym sposobem digitalizacji analogowych nagrań wideo i przez to powszechnie stosowanym w pierwszych urządzeniach digitalizujących.
Formaty zapisu filmu (M-JPEG) Rozdzielczość
Formaty zapisu filmu (DV) DV (Digital Video) Cyfrowy format komponentowy do zastosowań konsumenckich, DV, jest formatem specyficznym, który do zapisu wideo wykorzystuje cyfrowe taśmy o szerokości 6,35 mm. Sygnały wizyjne są kodowane: ze stałą kompresją danych 5:1, o wysokiej rozdzielczości ponad 500 linii poziomych, przy zastosowaniu próbkowania luminancji z częstotliwością 5,75 MHz oraz chrominancji - 6,75 MHz.
Formaty zapisu filmu (DV) Format DV wywodzi się w prostej linii od M-JPEG, a jednocześnie ma cechy zapożyczone z MPEG. Podstawowe algorytmy kompresji to: DCT (dyskretna transformata cosinusowa), czyli kompresja wewnątrzklatkową, kompresja międzypolowa. W odróżnieniu od stosowanej w MPEG kompresji międzyklatkowej w kompresji międzypolowej estymacja (przewidywanie) ruchu obiektów zmieniających swoje położenie jest szacowana na podstawie sąsiednich pól, a nie całych klatek.
Formaty zapisu filmu (DV) DV nie dorównuje jakością obrazu profesjonalnym (obecnie) cyfrowym formatom zapisu, np. Digital Betacam (DB). DB stosuje format YUV 4:2:2, któremu zawdzięcza lepsze odwzorowanie sygnału chrominancji niż w formacie YUV 4:2:0 używanym w DV (PAL). Format DV jest rzadko stosowany w zapisie obrazu na komputerze, ze względu na niski stopień kompresji (5:1), - kilkudziesięciominutowy film może zajmować nawet kilkanaście gigabajtów i konieczność stosowania niestandardowych kodeków
Szacowanie ruchu (motion compensation) Dzięki kompresji pojedynczych obrazów metodą MJPEG jest możliwe tworzenie obrazu ruchomego jako sekwencji nieruchomych klatek. Jeśli uwzględnimy, że każda ramka z sekwencji jest postrzegana mniej wyraźnie niż taka ramka obserwowana jako pojedynczy obraz nieruchomy, to dojdziemy do wniosku, że zastosowanie nawet duży współczynnika kompresji nie rzutuje w sposób znaczący na jakość obrazu. Przy JPEG umyka nam jednak ważny aspekt obrazu ruchomego, a mianowicie fakt znacznego wzajemnego podobieństwa kolejnych klatek. Niezbędne jest więc zastosowanie kompresji, dzięki której te nadmiarowe informacje zostałyby wyeliminowane. Takie działanie pozwala na 3-krotne, a nawet 4-krotne zwiększenie współczynnika kompresji i osiągnięcie wartości od 150:1 do 200:1
Szacowanie ruchu (motion compensation) Tu nasuwają się od razu pytania: W jaki sposób jednak wyodrębnić statyczne elementy obrazu?" Ponieważ o statyce i dynamice obrazu orzekać można dopiero na podstawie sekwencji klatek, konieczne staje się porównanie co najmniej dwóch kolejnych, zdigitalizowanych obrazów nieruchomych. Teoretycznie można by przeprowadzić porównanie obrazów piksel po pikselu, rejestrując jedynie różnicę między nimi - wraz z określeniem współrzędnych, dla których zmiany te nastąpiły. Takie rozwiązanie byłoby jednak bardzo niepraktyczne, bo nawet najdrobniejsze, niezauważalne dla oka przesunięcie obrazu (wywołane np. przez drgania kamery)
Szacowanie ruchu (motion compensation) Rozwiązaniem jest podział obrazu na bloki pikseli. Można teraz porównywać nie pojedyncze piksele lecz całe ich bloki i, w procesie kojarzenia bloków (block Mtching), orzekać o różnicach i podobieństwie. Można w ten sposób stwierdzić, czy w polach następują jakieś zmiany - w takim przypadku informację o nich przekazuje się w postaci wartości różnicowych. Przy szybkiej zmianie podobnych klatek, stosowanym niekiedy rozwiązaniem jest interpolacja. Jeżeli porównany pierwszą i trzecią klatkę z sekwencji, to możemy na ich podstawie podać przybliżoną wartość klatki drugiej. Tak więc zamiast tej drugiej klatki, można przekazywać jedynie różnice między jej rzeczywistym wyglądem a obliczonym przybliżeniem.
Kompensacja ruchu Podobieństwa pomiędzy ramkami
Kompensacja ruchu
MPEG - Szacowanie ruchu (motion compensation) Tego typu kompresję umożliwia właśnie druga używana przez MPEG technika zwana motion compensation (szacowanie ruchu). Ramka I(x) jest podobna do ramki poprzedzającej I(x-1), może więc być skonstruowana przy jej użyciu. Wektor wskazujący odpowiedni fragment (16x16) ramki referencyjnej (marobloku) może być zapisany za pomocą mniejszej liczby bitów niż fragment oryginalnego obrazka. Dopasowanie poprzedzającego i aktualnego makrobloku często nie jest właściwe, więc zapisywana jest również różnica pomiędzy danymi rzeczywistymi a przewidywanymi, nazywana MCPE (Motion Compensation Prediction Error).
Kompensacja międzyklatkowa - szacowanie ruchu Wychwytywanie zmian pomiędzy poszczególnymi klatkami, które wynikają z przesunięcia obiektów. Zalety: pozwala na znacznie lepszą kompresję dzięki zredukowaniu ilości informacji opisujących różnice pomiędzy klatkami. Wady: wymaga czasochłonnych obliczeń, wymaga dostarczenia bloku danych naprzód
Techniki kompresji Kompresja międzyklatkowa (Inteiframe compression) polega na kompresji klatek zawartych pomiędzy klatkami kluczowymi. W systemie PAL pełna informacja o zawartości obrazu jest przenoszona przez co 12. klatkę. Omawiana kompresja zakłada, że pomiędzy klatkami kluczowymi (typu I) znajdują się klatki podobne do siebie, co umożliwia ich kompresję. Kompresja wewnątrzklatkowa (Intraframe compression) polega na kompresji każdej klatki, bez podziału na klatki kluczowe. Na przykład w formacie M-JPEG (Motion JPEG) każda ramka jest kompresowana podobnie jak obrazy JPEG.
Formaty zapisu filmu (MPEG) Kompresją obrazów ruchomych, przesyłanych z prędkością transmisji 1.5 Mb/s, zajmuje się tzw. grupa MPEG (MovingPictureExperts Group). Dokładna nazwa tego zespołu to JTC1/SC2/WG11. Prace rozpoczęte w 1992 roku trwają nadal MPEG określa się często jako standard bazowy, co oznacza dokładnie tyle, że jesion niezależny od aplikacji specjalnych.
Formaty zapisu filmu (MPEG) MPEG-1 to stary standard kompresji danych audiowizualnych do zastosowań multimedialnych. Strumień danych MPEG-1 może zawierać zakodowaną (skompresowaną) sekwencje wideo, dźwięk lub obydwa te składniki jednocześnie. Strumienie wizyjny i dźwiękowy są dzielone na tzw. ramki (krótkie fragmenty), które mogą być przeplatane między sobą w celu uzyskania synchronizacji obrazu i dźwięku. Kompresja danych jest stratna, tzn. wprowadza nieodwracalne zniekształcenia (to cena, jaką płacimy za silną kompresję). Im większy stopień kompresji, (czyli mniejsza objętość wynikowego strumienia/pliku) tym gorsza jakość zrekonstruowanego sygnału.
Formaty zapisu filmu (MPEG) MPEG - jako standard bazowy - określa pewne podstawowe założenia obowiązujące niezależnie od stosowanych aplikacji specjalnych: Informacja wideo ma być reprezentowana przez zestaw sekwencyjnie wyświetlanych obrazów. Każdy obraz musi być reprezentowany przez dwuwymiarową tablicę trójek RGB opisujących poziomy barw poszczególnych pikseli obrazu. Ma to być standard wymagający prędkości transmisji niższej niż 1,5 Mb/s, dzięki czemu mógłby być stosowany w sieciach komputerowych i umożliwiałby zapis sygnałów audiowideo na dostępnych obecnie nośnikach. Metoda kompresji musi zapewnić swobodny dostęp do każdej klatki filmu. Aby możliwy był dostęp do obrazu w aplikacjach interakcyjnych, opóźnienie kodowania i dekodowania, a także całkowity czas dostępu nie może być dłuższy niż jedna sekunda /to dziś już za mało/. Powinien zapewniać synchronizację obrazu i dźwięku.
Formaty zapisu filmu (MPEG) Musi umożliwiać szybkie wyszukiwanie w przód i wstecz. Musi zapewniać odtwarzanie wstecz. Przy kompresji obrazów ruchomych nie mamy do czynienia z kodowaniem pojedynczych klatek, ale z odtwarzaniem zależności następujących po sobie obrazów nieruchomych. Aby zapewnić edycję dowolnego pojedynczego obrazu z wnętrza sekwencji składającej się na film, należy w strumieniu danych umieszczać w krótkich odstępach czasu klatki rejestrowane w sposób naturalny i nie odwołujące się do innych klatek filmu. Z uwagi na konieczność odtwarzania obrazu w okienku ekranu, jego wymiary muszą być skalowalne w poziomie i pionie (elastyczność formatu obrazu). Ponieważ przy cyfrowym zapisie i przesyłaniu danych mogą wystąpić błędy, należy zapewnić mechanizmy ich korekcji. MPEG powinna uwzględnić (w przyszłości) możliwość kodowania obrazów ruchomych w czasie rzeczywistym /ten postulat doczekał się realizacji po 15 latach/
MPEG sekwencje ramek I B B B P B B B P B B B I
Rodzaje ramek (MPEG) Ramki I kodowane niezależnie od reszty danych wideo Ramki P kodowane na podstawie predykcji z ostatniej ramki I bądź P (tej, która była bliższa) Ramki typów I i P to tzw. ramki kotwiczne Ramki B kodowane na podstawie predykcji z poprzedniej i następnej ramki
Predykcja obrazu w kodowaniu MPEG
Rodzaje ramek (MPEG) Intraobrazy (I) kompresowane są w najmniejszym stopniu. Ponieważ stanowią one punkty swobodnego dostępu (Random Access Points) nie mogą mieć referencji do innych klatek. Obrazy predykcyjne (P) korzystają z informacji zawartej na innych klatkach (zarówno z informacji pochodzącej z infraobrazów jak i z informacji zawartej na innych obrazach predykcyjnych), będąc jednocześnie punktami odniesienia dla innych klatek tego samego rodzaju. Obrazy dwukierunkowe (B) to obrazy o najwyższym stopniu skompresowania. Są one interpolowane na podstawie sąsiadujących z nimi z obu stron klatek (rodzaj tych klatek nie jest istotny).
Rola poszczególnych ramek wyjasnienie Weźmy jako przykład zderzenie gwiazd (prezentowane już kilka slajdów wyżej) się na tle kosmosu. Przemieszczanie się małej gwiazdy będzie opisane w klatkach B i P, zaś mniej dynamicznie zmieniający się obszar kosmosu będzie pobierany z informacji zawartych w klatce typu I. Pełna informacja o obrazie pojawi się znowu po odnowieniu informacji z klatki kluczowej I.
Cechy ramek (MPEG) Ramki I: muszą występować stosunkowo często aby możliwe było wygodne przeniesienie do dowolnego miejsca w sekwencji wideo, zajmują dużo miejsca Ramki P: zajmują więcej miejsca niż ramki B gdyż wykorzystują tylko jednokierunkową kompensację ruchu.
Cechy ramek (MPEG) MPEG wychwytuje" ruch wewnątrz bloków o rozmiarach 16 na 16 pikseli i koduje go w postaci wektorów ruchu. Na podstawie tych wektorów system dekompresujący jest w stanie przewidzieć kolejną klatkę. Ażeby nie dopuścić do zafałszowania obrazu w trakcie dekompresji, do systemu dekodującego przekazywane są również dane o rzeczywistym wyglądzie klatki, którą on przewiduje. Aby jednak zyskać na rozmiarze danych, przekazywane są jedynie te z nich, które różnią się od przewidywanych. Te dane różnicowe, informujące o odchyleniach obrazu rzeczywistego od przewidzianego określa się błędem MCPE (Motion- Compensation-Prediction-Error).
Cechy ramek (MPEG) Kodowanie MPEG nie poprzestaje na przewidywaniu i kontrolowaniu ruchu w sekwencji klatek następującej zgodnie z kierunkiem osi czasu. Obrazy dwukierunkowe wyliczane są na podstawie zarówno klatek uprzednich jak i klatek po nich następujących. Takie postępowanie nazywa się predykcją dwukierunkową
Algorytm kodowania MPEG 1. Kodowanie metodą transformacji DCT (transform coding) 2. Szacowanie ruchu (motion compensation) 3. Kodowanie Huffmana
1. Kodowanie metodą transformacji DCT (transform coding) MPEG przekształca każdą trójkę RBG obrazu na trójkę YUV, czyli na sygnały luminancji i chrominancji. Ponieważ oko ludzkie jest mniej czułe na sygnał chrominancji niż luminancji, obszary U i V zostały celowo ograniczone. Obraz jest dzielony na makrobloki, a każdy z nich odpowiada obszarowi 16x16 pikseli oryginalnego obrazu. Makroblok składa się z sześciu bloków o rozdzielczości 8x8 pikseli: czterech związanych z sygnałem luminancji Y, po jednym dla każdej ze składowych U i V chrominancji. Następnie każdy blok jest przetwarzany jak plik JPEG, czyli poddawany transformacji DCT. Blok po kwantyzacji zawiera dużą liczbę zer, które można później usunąć.
2. Szacowanie ruchu (motion compensation) Wykorzystuje ono fakt, że ramka I(x) jest podobna do ramki poprzedzającej I(x-l), może więc być skonstruowana przy jej użyciu. Wektor wskazujący odpowiedni fragment (16x16) ramki referencyjnej może być zapisany za pomocą mniejszej liczby bitów niż fragment oryginalnego obrazka. Dopasowanie poprzedzającego i aktualnego makrobloku często nie jest właściwe, więc zapisywana jest również różnica pomiędzy danymi rzeczywistymi a przewidywanymi, nazywana MCPE (Motion Compensation Prediction Etror). Patrz budowa ramki na poprzednich slajdach
3. Kodowanie Huffmana Uzyskane dane są poddawane kodowaniu metodą Huffmana. Jest to bezstratna metoda kodowania statystycznego. Wykorzystuje ona fakt, że pewne wartości danych występują częściej niż inne. Jeżeli zatem zakodujemy częściej występujące wartości za pomocą krótszych kluczy, a występujące rzadziej - za pomocą dłuższych, to łączna długość zakodowanych danych będzie krótsza niż przed kodowaniem. Istnieją trzy warianty kodowania tą metodą: 1. statyczny - tabela częstotliwości jest ustalana z góry, niezależnie od tego, jakie dane będą kodowane; 2. dynamiczny - w celu wypełnienia tabeli częstotliwościami dokładnie dla tych danych, które są kodowane, przed rozpoczęciem kodowania przeprowadzana jest analiza częstotliwości znaków; 3. adaptacyjny - wstępne założenie o częstotliwości występowania znaków zostają w trakcie kodowania dostosowane do częstotliwości rzeczywistych.
Kodowanie a dekodowanie Aby odtworzyć ramkę (klatkę filmu) należy: 1. odwrócić proces kodowania Huffmana, 2. odtworzyć wektory ruchu i skopiować odpowiednie części ramki referencyjnej, 3. uwzględnić sygnał błędu MCPE. 4. zbudowaną ramkę YUV przekształcić do postaci odpowiedniej do wyświetlenia (RGB)