| Jakość obrazu w kompresji Divx |
Autor: Mike
Przy kompresowaniu obrazu jakość zależy głównie od dwóch parametrów. Pierwszy z nich to rozdzielczość obrazu, a drugi wartość strumienia danych które opisują ruch (mierzone w kilobitach na sekundę) - czyli bitrate.
Rozdzielczość obrazu wpływa głównie na jakość obrazu statycznego - im jest większa - tym bardziej wyraźne są szczegóły i detale.
Natomiast wartość strumienia ma istotne znaczenie przy scenach ruchomych, czyli wszędzie tam gdzie występuje akcja i ruch.
Kodek Divx aby opisać obraz, dzieli go na tzw. makrobloki. Są to kwadraty o boku 16x16 pikseli.
Zatem gdy nasz film ma rozdzielczość np. 640 x 272 piksele to kodek podzieli obraz na 40 x 17 = 680 bloków.
Każdemu takiemu blokowi podczas ruchu jest przydzielana część strumienia.
Jeśli strumień nie wystarcza do opisania wszystkich zmian jakie następują w blokach, to kodek redukuje część informacji poprzez zwiększenie tzw. wspołczynnika kompresji klatki DRF(z eng. "Detail Removing Factor").
Mechanizm redukcji jest analogiczny, jak podczas kompresowania obrazków do formatu JPEG. Dzięki określeniu poziomu kompresji mamy wpływ na wygląd klatki.
Na podobnej zasadzie działa mechanizm kompresji w kodeku Divx. W zależności od wielu okoliczności, takich jak np. aktualny stan poziomu ("gauge") zasobnika bitów (z eng. "Bits Reservoir"), kodek podejmuje decyzję o wyborze określonego współczynnika DRF do opisu danej klatki filmu.
Im większy współczynnik DRF, tym klatka otrzymuje mniej bitów, które może przeznaczyć na opis obrazu. Ta redukcja przyczynia się do powstawania charakterystycznych kwadratów podczas dynamicznych scen. Przykład poniżej pokazuje jak pogarsza się jakość obrazu, gdy ograniczamy wartość bitrate, a w konsekwencji kodek musi stosować wyższe współczynniki kompresji DRF:

Zjawisko to szczególnie objawia się to w kilku przypadkach: gdy występują gwałtowne ruchy kamery i ujęcia ruchome z boku; w scenach w których występuje duża ilość ognia, lub widoki fal morskich itp.
Wyjątkowo nieprzyjazne mogą też być wszelkiego rodzaju sceny, w których widoczne są kraty i siatki - np. gdy kamera przesuwa się wzdłuż płotu lub siatki, obraz w tle ulega znacznemu zniekształceniu. Poniżej znajduje się przykład sceny, w której występuje duża ilość ognia.
Pierwsza klatka pochodzi z próbki skompresowanej w rozdzielczości 640x272 z bitrate równym 1000kbps:
Natomiast obraz poniżej to bliźniacza klatka z fragmentu o tej samej rozdzielczości, ale nieco wyższej wartości strumienia (bitrate=1500kbps):

Aby zapobiec efektowi powstawania widocznych makrobloków, trzeba albo zwiększyć wartość bitrate, albo zmniejszyć rozdzielczość.
Zwiększenie strumienia (bitrate) wiąże się jednak ze wzrostem objętości filmu. Można zatem ograniczyć nieco rozdzielczość, przez co opis ruchu będzie dla kodeka łatwiejszy.
Nie wpłynie to bardzo znacząco na ostrość obrazu, a sceny ruchome będą wyglądać dużo lepiej.
Zbyt duże zmniejszenie rozdzielczości nie jest wskazane, ponieważ doprowadzi do utraty ostrości, na czym ucierpią zwłaszcza sceny statyczne, gdzie często widocznych jest wiele drobnych detali (np. nieruchome zbliżenia twarzy aktorów).
Dobre efekty daje zastosowanie technologii łączenia w jednym filmie różnych wartości strumienia, w zależności od charakteru sceny, tzn. czy jest statyczna, czy ruchoma. Do niedawna rozwiązanie to było bardzo pracochłonne, ponieważ film trzeba skompresować dwukrotnie dla dwóch różnych wartości strumienia (tzn. low bitrate i high bitrate).
Przez pewien czas rozwiązaniem tego problemu było stosowanie specjalnej wersji kompresora mpeg2avi PX3, z podwójnym wyjściem AVI (dla róznych wartości bitrate).
Po takiej kompresji otrzymywaliśmy dwa pliki o różnych wielkościach, z których specjalny program dobierał odpowiednie sceny w zależności od ich charakteru.
Dobrym programem tego typu jest AVIRevolution - dość łatwy w obsłudze, posiada bardzo przydatną funkcję wykresu, ilustrującą wartość strumienia w poszczególnych scenach filmu w postaci kolorowych słupków, umożliwia też dokładne oszacowanie końcowej objętości filmu i utworzenie pliku finalnego o dokładnie zadanej długości.
|
|