Blog (57)
Komentarze (10k)
Recenzje (1)

Gehenna skalowania obrazu

@BerionGehenna skalowania obrazu04.10.2017 03:04

Przed wiekami, kiedy nasi przodkowie ozdabiali jaskinie wizerunkami zwierząt, a w każdym razie niedługo po - pod strzechą w każdym domu można było znaleźć stojący na piedestale, kolorowy telewizor CRT. Wielki kineskopowy baniak, grzejąco-elektryzujący, wyświetlający obraz zgoła odmiennie od dzisiaj dominujących LCD, OLED, a jeszcze nie tak dawno także PDP. Pod wieloma z tych piekielnych machin, nieśmiało wystawała konsola. W Polsce był to oczywiście legendarny Pegasus i jego niezliczone klony, w USA czy Japonii niepomiernie szersze spektrum „gier wideo”: od Sega Master System, przez SNES, aż po takie egzotyki jak NEC TurboGrafx-16. Mijają lata, kolejne generacje konsol, a nośniki optyczne kręcą się pod wciąż obecnymi w życiu każdego gracza telewizorami CRT.

Dzisiejsze matryce pozwalają na wyświetlanie rozdzielczości 1920x1080 (a nawet i wyższych) w proporcjach 16:9. Jest to ogólnie przyjęty i obecnie najpopularniejszy wspólny standard obejmujący konsole, filmy i PC. Dawniej najczęściej spotykanymi formatami obrazu były oczywiście 4:3 w 320x240 i 640x480. Przez to, że mieliśmy także podział na regiony, gry wyświetlają się bardzo różnie na różnych konsolach i komputerach (np. gry na PS2 w PAL to 640x512, a w NTSC 640x448, zaś gry na FC/NES to 256x224 w PAL-A i B, a NTSC już tylko 256x208). Mało tego, ze względu na ograniczenia sprzętowe jak i samych silników gier, nie zawsze są zachowane i te rozdzielczości (bywają mniejsze w pionie).

I jak teraz taki chaos wyświetlić na nowoczesnym telewizorze lub monitorze? Co się stanie z obrazem? Tutaj do akcji wkracza skalowanie obrazu przez konsolę (emulatory na PS3, X360 etc.) lub telewizor (w każdym przypadku kiedy rozdzielczość jest niższa niż natywna matrycy). Niniejszy materiał będzie traktować właśnie o tym jak gry wyglądały kiedyś i jak dzisiejsze technologie to rujnują (co zresztą jest podle wykorzystywane przez kłamliwy marketing wydawców remasterów). Kwestię okablowania, konwerterów i przelotek pominę bo to tutaj najmniej istotne, a także było już wielokrotnie wałkowane na dowolnym growym portalu (a więc kwestię jakości sygnału i możliwych artefaktów).

Uwaga!

Ze względu na „silnik blogowy”, który skaluje (psuje ;)) przesyłane pliki graficzne, polecam pobrać paczkę ze wszystkimi zamieszczonymi w dalszej części tekstu zrzutami ekranu. Większość jest w rozdzielczości 1280x720, którą należy oglądać na ekranie z natywną 1920x1080 lub wyższą. Dlaczego nie 720p? Dlatego, że musiałbyś wyświetlać je na pełnym ekranie aby miało to sens. Dlatego najbezpieczniej i najwygodniej jest oglądać na wyższej rozdzielczości kiedy cała grafika - niepowiększona ani niepomniejszona - mieści się w oknie. W przeciwnym razie może być ci ciężko wyobrazić sobie to o czym piszę w danej chwili.

Brak skalowania

Obraz z antyku można na niektórych telewizorach (coraz rzadziej spotykana opcja) wyświetlić bez skalowania w taki sposób, że wyświetlany obraz jest 1:1, a pozostałe miejsce zapełnione czarnym ekranem. Dzięki temu, obraz jest ostry jak żyleta, wręcz doskonałej jakości i… mikroskopijny, uniemożliwiający komfortową grę. ;) Im wyższa natywna rozdzielczość matrycy, tym mniejsze okno z grą (wyobraź sobie dowolny tytuł z Pegasusa na ekranie 8K).

Oryginalna rozdzielczość „The Fantastic Adventures of Dizzy” na konsolę Famicom.
Oryginalna rozdzielczość „The Fantastic Adventures of Dizzy” na konsolę Famicom.
Wizualizacja odwzorowania w skali 1:1 na ekranie 720p.
Wizualizacja odwzorowania w skali 1:1 na ekranie 720p.

Skalowanie stratne

Nie sądzę aby ktokolwiek potrafił mordować się z mikrobem z powyższego akapitu, dlatego najczęstszą formą skalowania jest - umownie je nazwijmy - stratne. Dzieje się tak dlatego, że nie sposób podzielić bez reszty obu liczb naraz: 1280 i 720 (a także ich wielokrotności) przez szerokość i wysokość „starszych rozdzielczości”, otrzymując tę samą liczbę całkowitą. Wyspecjalizowane algorytmy zajmują się transformacją obrazu w locie, czego konsekwencją jest gigantyczna strata na jakości.

Oryginalna rozdzielczość „Tenchu: Stealth Assassins” na konsolę PlayStation.
Oryginalna rozdzielczość „Tenchu: Stealth Assassins” na konsolę PlayStation.
Wizualizacja odwzorowania po przeskalowaniu algorytmem bilinear (dwuliniowym) na ekranie 720p.
Wizualizacja odwzorowania po przeskalowaniu algorytmem bilinear (dwuliniowym) na ekranie 720p.

Im mniejsza rozdzielczość źródłowa, tym gorsza jakość po przeskalowaniu. A jeśli gra oryginalnie powstała z myślą o proporcjach 4:3 to tragedia jest jeszcze większa. Okręgi stają się owalami, szczegóły ulegają zatarciu, traci się ostrość na całej powierzchni (szczególnie jest to dotkliwe na starych czcionkach).

Czasami emulatory w konsolach lub wbudowane mechanizmy w telewizor, pozwalają przeskalować obraz, zachowując oryginalne proporcje, a jeśli do tego specyfika silnika gry i jej styl nie pozwalają utrzymać idealnej ostrości na oryginalnej platformie, całość nie wypada już tak źle. Świetnym przykładem może być Okami.

Zrzut ekranu, przechwycony przez kartę wideo (czyli już ze znacznym spadkiem jakości) w oryginalnej rozdzielczości gry „Okami” na PlayStation 2.
Zrzut ekranu, przechwycony przez kartę wideo (czyli już ze znacznym spadkiem jakości) w oryginalnej rozdzielczości gry „Okami” na PlayStation 2.
Wizualizacja odwzorowania po przeskalowaniu algorytmem bilinear (dwuliniowym) na ekranie 720p z zachowaniem proporcji.
Wizualizacja odwzorowania po przeskalowaniu algorytmem bilinear (dwuliniowym) na ekranie 720p z zachowaniem proporcji.
Jak wyżej, jednak tym razem bez zachowania proporcji, ale też bez rozciągania na cały ekran.
Jak wyżej, jednak tym razem bez zachowania proporcji, ale też bez rozciągania na cały ekran.

Skalowanie bezstratne

Jedynym algorytmem umożliwiającym bezstratne przeskalowanie obrazu, czyli z zachowaniem tej samej jakości co w rozdzielczości źródłowej, jest najbliższy sąsiad. Działa on tak, że powiela każdy piksel i dostawia do niego trzy kolejne, dokładnie takie same, sąsiadujące z jego rogiem i dwoma bokami (im większy obraz, tym iteracji jest więcej, oczywiście to przykład zachowujący te same proporcje). Algorytm ten jest nie tylko najprostszy w implementacji, ale także najmniej zasobożerny.

Porównanie skalowania z użyciem algorytmu nearest neigbour (najbliższy sąsiad) i bicubic (dwusześciennego).
Porównanie skalowania z użyciem algorytmu nearest neigbour (najbliższy sąsiad) i bicubic (dwusześciennego).

Jak wyżej widać, nawet na tak banalnym czterokolorowym przykładzie można dostrzec utratę szczegółów w przypadku zastosowania czegokolwiek innego niż NN (a nawet fałszowania kolorów!). Gdzie jest zatem haczyk? Dlaczego prawie nikt tego nie stosuje w telewizorach, odtwarzaczach, konsolach i oficjalnych emulatorach? Być może dlatego, że pamięć mas jest bardzo krótka, więc trzeba być autystykiem lub wyjątkowym pasjonatem, aby pamiętać jak wyglądała gra czy film 20 lat temu (a więc jakość przestaje być istotna), z kolei czarne ramki po bokach lub nawet dookoła, irytują większość graczy/widzów.

Poniżej znajdują się wizualizacje skalowania NN w czterech wariantach:

  1. idealnym, gdzie (w tym przypadku) gra „Gimmick!” z FC/NES została podbita trzykrotnie, a pozostałe miejsce wypełnione czarnym tłem
  2. rozciągnięciem, tak aby zająć cały pion, ale jednocześnie z zachowaniem proporcji
  3. rozciągnięciem maksymalnie w pionie i trochę na szerokość
  4. rozciągnięciem na cały ekran
[1/2]
[2/2]
[1/2]
[2/2]

Gęstość

Największą różnicę - wręcz kolosalną - widać na materiale z ~256 kolorami i mniej, na dodatek na możliwie jak największym ekranie o niskim PPI. Ale również nawet na nowszych grach czy filmach VCD i DVD-Video (oczywiście masterowanych nie z VHS/Betacam tylko taśmy filmowej). Jeśli PPI jest wysokie, czyli stosunek wielkości ekranu do jego rozdzielczości (w skrócie: im więcej pikseli pomieści na cal), a różnica rozdzielczości źródłowej z natywną matrycy np. telewizora jest nieduża, to tylko dla tandemu wprawnego oka i słoniowej pamięci, rozmazanie ekranu będzie nieznośne.

Wykorzystuje to np. Sony w konsoli PlayStation Vita, która posiada wbudowany emulator PlayStation Portable. Natywną rozdzielczością PSV jest 960x544 czyli dokładnie dwukrotnie więcej niż miało PSP. Pomimo „blurowanego” obrazu gier z tamtych lat, który na dodatek nie jest w stanie zamaskować braku aliasingu na wektorach i obiektach 3D, przy PPI wynoszącym 220, jest zaskakująco strawny.

Oryginalna rozdzielczość „Loco Roco 2” na konsolę PlayStation Portable.
Oryginalna rozdzielczość „Loco Roco 2” na konsolę PlayStation Portable.
Wizualizacja zrzutu ekranu tej samej gry, emulowanej na PlayStation Vita.
Wizualizacja zrzutu ekranu tej samej gry, emulowanej na PlayStation Vita.

Skalowanie na poziomie silnika gry

W przypadku emulatorów i wirtualizatorów, można podejść do kwestii skalowania jeszcze inaczej bo już na poziomie emulacji gry, między innymi sztucznie podbijając rozdzielczość. Wówczas to platforma emulująca zajmuje się - nieprzetwarzaniem tylko generowaniem obrazu - a nie telewizor/monitor.

Poniżej w przykładzie „Vagrant Story” z konsoli PlayStation, emulowany na PlayStation 2 za pomocą PS2PSXe, wyświetlany w 640x512. Niestety z tzw. szwami na obiektach (boki tekstur nie pasują do siebie), które są skutkiem ubocznym podniesienia rozdzielczości.

Wnioski

Dla większości osób utrata jakości nie ma żadnego znaczenia ponieważ zwyczajnie jest dla nich na tyle mała, że nieistotna lub nawet niedostrzegalna, ewentualnie nie mają punktu odniesienia i niewiedzą jak materiał wyglądał w oryginale. Sprawę pogarsza także bezlitosna fizyka, bowiem im mniejsza różnica w rozdzielczościach, im większa odległość obserwatora od ekranu i im mniejszy ekran, tym mniejsza dostrzegalna różnica. Dochodzi także aspekt jakości kabla, przetwarzania sygnału, a nawet ustawienia matrycy (np. kontrastu, jasności, odwzorowania kolorów). Z przykrością więc stwierdzam, że cała moja powyższa boleść nikogo nie obchodzi i cały ten wywód był daremny. :)

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.