Artykuł dostępny jest również w formie dokumentu
Transkrypt
Artykuł dostępny jest również w formie dokumentu
Rozdzielczości analogowe i cyfrowe Słowo wstępne Gdy mamy do czynienia z filmami w postaci cyfrowej, możemy się zetknąć z pewną zagadką. Otóż mówi się, że obraz o rozdzielczości 720x576 ma proporcje 4:3! Nietrudno obliczyć, że 720:576 to 5:4, zatem skąd takie dziwne informacje? Czy to jakaś pomyłka? Rozdzielczość analogowa a rozdzielczość cyfrowa Przyjrzyjmy się sposobowi digitalizacji (zmiany na postać cyfrową) analogowego materiału wideo. Jedna sekunda obrazu w systemie PAL zawiera dokładnie 25 klatek, zaś każda klatka 625 linii poziomych (z czego tylko 574 linie i dwie półlinie zawierają właściwy obraz). Skoro jedna klatka jest transmitowana w ciągu 40 milisekund, to łatwo obliczyć, że jedna linia pozioma to dokładnie 64 mikrosekundy. Ponieważ brzegi poziomych linii nie zawierają obrazu, interesują nas tylko "środkowe" 52 mikrosekundy. Obraz (a właściwie jego jasność) jest próbkowany z częstotliwością 13.5 MHz, co daje nam 13.5 * 52 = 702 punkty na jedną linię poziomą. Skąd zatem rozdzielczość pozioma 720 pikseli? Dodatkowe 9 pikseli po bokach obrazu przechwytuje się, ponieważ analogowe urządzenia do transmisji wideo nie są tak precyzyjne, aby na pewno przekazać cały obraz w środkowych 702 pikselach. Dlatego digitalizując obraz zapewniamy sobie margines bezpieczeństwa w postaci tych 9 pikseli po bokach - jest to tzw. obszar overscan. A skąd rozdzielczość pionowa 576? Mamy 574 pełne poziome linie obrazu oraz dwie linie poziome (jedna u góry, druga w dole) zawierające obraz tylko do połowy swej długości. Aby uchwycić cały obraz, digitalizujemy 576 pełnych linii. Dla systemu telewizyjnego NTSC częstotliwość digitalizacji rekomendowana przez ITU jest taka sama, jak w przypadku systemu PAL - 13.5 MHz. W NTSC mamy 29.97 klatek na sekundę oraz 525 linii poziomych, z których 484 pełne linie i dwie półlinie zawierają właściwy obraz. Jedna linia pozioma obrazu "trwa" przez 63+5/9 mikrosekundy, z czego tylko "środkowe" 53+2/3 mikrosekundy zawierają informacje o obrazie. Otrzymujemy zatem (52+2/3) * 13.5 = 711 punktów rozdzielczości poziomej i 486 rozdzielczości pionowej. Dlaczego zatem rozdzielczość pionowa DVD w systemie NTSC wynosi tylko 480 pikseli? Ponieważ kompresja MPEG jest oparta na fragmentach obrazu 16x16 (tzw. makroblokach), przez co wymaga, aby wymiary obrazu były podzielne przez 16. Proporcje piksela Skoro obraz o wymiarach 702x576 ma proporcje 4:3, to wniosek może być tylko jeden: punkty nie są kwadratami! Przy kwadratowych pikselach obraz w proporcjach 4:3 powinien mieć wymiary 768x576, zatem proporcje piksela obrazu o rozdzielczości 702x576 (oraz 720x576) to 768:702, czyli 128:117. Z kolei gdy mamy do czynienia z obrazem anamorficznym, mnożymy proporcje piksela przez 4/3 ((4/3)*(128/117)=512/351). Dla systemu NTSC proporcje piksela wynoszą odpowiednio 72/79 i (4/3)*(72/79)=288/237. Konwersja formatów obrazu Prawidłowa konwersja z jednego formatu obrazu na drugi wiąże się ze skomplikowanymi obliczeniami. Oto sposób ich wykonywania: obliczamy wartość VCF = wysokość_celu / wysokość_źródła obliczamy HCF = (proporcje_źródła / proporcje_celu) * VCF obliczamy szerokość docelową: szerokość_docelowa = HCF * szerokość_źródła obliczamy wysokość docelową: wysokość_docelowa = VCF * wysokość_źródła gdzie: wysokość_celu to znana z góry wysokość obrazu formatu docelowego proporcje_źródła to proporcje piksela w materiale źródłowym proporcje_celu to proporcje piksela w docelowym formacie obrazu Następnie przeskalowujemy obraz do rozdzielczości szerokość_docelowa x wysokość_docelowa i obcinamy brzegi (lub dodajemy czarne pasy) tak, aby osiągnąć żądane wymiary naszego formatu docelowego. Weźmy na przykład konwersję z PAL do NTSC. Wymiary PAL to 720x576, zaś wymiary NTSC to 720x486, ale w świecie cyfrowego wideo stosuje się 720x480 (ponieważ 480 dzieli się przez 16). liczymy VCF = 486/576 = 27/32 liczymy HCF = ((128/117) / (72/79)) * 27/32 = 79/78 obliczamy nową szerokość 720 * (79/78) = 729 + 3/13 obliczamy nową wysokość 576 * (27/32) = 486 przeskalowujemy obraz z 720x576 do 729x486 obcinamy boki obrazu tak, aby uzyskać 720x480 Poniżej przedstawiamy gotowe skrypty AviSynth służące do konwersji systemów telewizyjnych (z NTSC do PAL i na odwrót). Prawa autorskie © VideoAudio.pl 2001-2008 # PAL -> NTSC materiał TFF z przeplotem LoadPlugin("•cie•kadgbob.dll") DGBob(order=1) ConvertToYUY2() ConvertFPS(59.94) Lanczos4Resize(728,484,1,1,718,574) Crop(4,2,-4,-2) SeparateFields() SelectEvery(4,0,3) Weave() # PAL -> NTSC materiał BFF z przeplotem LoadPlugin("•cie•kadgbob.dll") DGBob(order=0) ConvertToYUY2() ConvertFPS(59.94) Lanczos4Resize(728,484,1,1,718,574) Crop(4,2,-4,-2) SeparateFields() SelectEvery(4,1,2) Weave() # NTSC -> PAL materiał TFF z przeplotem LoadPlugin("•cie•kadgbob.dll") DGBob(order=1) ConvertToYUY2() ConvertFPS(50) Lanczos4Resize(720,480) SeparateFields() SelectEvery(4,0,3) Weave() # NTSC -> PAL materiał BFF z przeplotem LoadPlugin("•cie•kadgbob.dll") DGBob(order=0) ConvertToYUY2() ConvertFPS(50) Lanczos4Resize(720,480) SeparateFields() SelectEvery(4,1,2) Weave() W powyższych skryptach do zmiany rozdzielczości wykorzystano filtr Lanczos4Resize(), lecz zamiast niego można użyć dowolnego filtra AviSynth służąceggo do skalowania obrazu, np. BilinearResize() lub BicubicResize(). Dodatek: Czym są "linie rozdzielczości"? W świecie analogowego wideo stosuje się pojęcie "linii rozdzielczości" (ang. lines of resolution ), które powoduje wiele zamieszania. Oznacza ono ilość pionowych linii obecnych w kwadratowym obszarze obrazu. Innymi słowy, aby obliczyć ilość "linii rozdzielczości", musimy "obciąć" boki obrazu tak, aby jego szerokość (nie wyrażona w punktach, lecz w centymetrach) była równa jego wysokości, a dopiero wtedy policzyć pionowe linie. Na przykład gdy weźmiemy obraz 702x576 o proporcjach 4:3, obliczamy (3/4)*702 i dostajemy 526.5 "linii rozdzielczości". Prawa autorskie © VideoAudio.pl 2001-2008