Bevezető
Bevezető
Ezen cikkben egy régóta létező, és működőképes (az élet egyes területein régóta aktívan használt), az átlagfelhasználó számára is emészthetően tálalható, otthoni felhasználók körében mégis máig valamiféle "idegen eredetű űrtechnológia" népszerűségével vetekvő számban szőnyeg alá söpört rendszert szeretnék bemutatni.
Azon nem titkolt hátsó szándékkal, hogy kedvet adjak a használatára, és a magam részéről megtegyem, amit tudok, hogy mind szélesebb körben elterjedtté váljon.
Profi, vagy akár hobbi fotósok, weblapdesignerek, és nyomdászok, kép és videó szerkesztéssel foglalkozók bizonyára betéve ismerik már a rendszert, ez az írás elsősorban nem nekik, hanem az otthoni, "igényesebb fajta átlagfelhasználók"-nak készült, de bárkinek megérheti átfutni, meglehet, hogy talál benne valami újat, és/vagy érdekeset.
Lássuk, miről is van szó:
A Color Management System egy átfogó rendszer, mely azt hivatott biztosítani, hogy az aktuálisan használt, konkrét megjelenítőtől függetlenül (adott CRT/LCD monitor/TV, projektor, tintasugaras-/lézernyomtató, scanner, kamera, stb.) mindig ugyan azt, sőt, rögtön a szabványos palettához igazított színeket lássuk viszont mindenhol (vagy hardware-es limitáltság esetén, az adott lehetőségekhez mértem, az ahhoz lehető legközelebb állót).
A rendszer elérhető Windows és MacOSX alatt is, utóbbi tágabb alapfuncionalitást nyújt, de a fontosabb dolgok mindkettővel megoldhatók. Linux esetén nem tudom, hogy legalább közelről szaglik-e tőle bármely disztribúció, de sejtelmem szerint ott egyelőre el kell felejteni a dolgot.
Én most csak a Windows alatti felhasználással foglalkozom (mivel nem veszek kézbe semmi almás cuccot), csak a PC-re kötött monitorok/TV-k/projektorok esetében, és azon belül is elsősorban a házimozizásra helyezem a hangsúlyt. (Legfőképp azért, mert ezen felhasználási terület jelenleg a leggyérebb, holott a HD korszakban alapvető dolog kéne, hogy legyen.) Ezen belül is a Vista és Windows 7 féle sotware-környezetre alapozom a példákat.
Igen, a profik még mindig CRT-n nézik vissza a képet Blu-ray master-elés során.
Mielőtt nagyon előreugornánk, vegyük számba, mire is lesz szükségünk (a nyilvánvaló dolgokon túl):
- Egy megfelelően kalibrált, és profilozott megjelenítőre.*
- A Windows (vagy MacOS) megfelelő beállítására.
- CM kompatibilis, és megfelelően konfigurált programokra.
* Nincs feltétlen szükségünk saját mérőműszerre, ha megelégszünk egy közelítő állapottal is, vagy tudunk "bérelni" (pl. házhoz járó egyének formájában).
Elöljáróban arról, hogy milyen eredményre számítsunk:
- Nem egészen úgy fest a dolog, hogy az adott rendszerből próbáljuk meg kihozni a lehető legtöbbet, inkább úgy mondanám, hogy minden rendszerből ugyan azt a tökéletességet próbáljuk kifacsarni, és végül jutunk, amire jutunk. De nagy vonalakban elmondható, hogy míg a tökéletes eredményhez minőségi megjelenítőkre van szükség, addig a kevésbé jó kategóriákat képviselő megjelenítőkkel is elérhetjük az önmagukhoz képest kiváló (és alapállapotukhoz képest itt is akár nagyságrendekkel jobb) eredményt. Még azt is megkockáztatom, hogy egyes esetekben többet ér a jól kalibrált, és managelt, olcsóbb megjelenítő, mint a kalibrálatlan, és/vagy manageletlen drágaság (drága megjelenítőknél előfordul a gyári előrekalibrálás, de a color managementről minden esetben magunknak kell gondoskodni, ehhez esetleg segítséget, fáradságot kímélő, vagy minőséget javító eszközöket kapunk a gyártótól).
- A szabványos színleképezést célozzuk, nem a leg csili-vilibb ragyogást. Tehát félre ne értse senki, nem fog a nappalink szőnyege a színek tengerének áradatában tocsogni, és nem folyik majd a fülünkön is a neonzöld, metálkék, de infravörösről se álmodozzunk (utóbbit amúgy sem látnánk).
- Ha minden jól megy, akkor a végeredmény az (vagy az efelé tartó úton állunk meg valahol, de közelebb, mint ahonnan indultunk), hogy tökéletesen ugyan azt látjuk a monitorunkon, amit az is látott, aki végső formájában elmentette, majd közzétette a forrásanyagunkat. (Se többet, se kevesebbet.)
- Mint semmi a földön, ez sem 100%-ig tökéletes eljárás, csak a pillanatnyilag elérhető legjobb. :)
Kalibrálás, profilozás
Először is vegyük át, mi mit jelent, miként zajlik:
1. A kalibrálás során a megjelenítőt a megcélzott (célszerűen szabványos) értékekre hozzuk, melynek során a megjelenítő natív színtere kerül optimalizálásra/szabványra hozásra. Ezek az értékek:
A./ A White Point, avagy fehér szín hőmérséklete (Kelvinben szokás kifejezni, mivel aszerint adják meg, hogy hány Kelvin-re kell hevítenünk a fekete testünket ahhoz, hogy fehér fényt bocsásson ki magából izzás közben -> mint a villanykörték izzószála...)
B./ A gamma görbe, ami a szürke egyensúllyal áll összefüggésben (szakadásmentes átmenet feketéből fehérbe). Ezt egy vagy több függvénnyel írhatjuk le, például végig x^2.22 exponenciális függvény görbéje, vagy az elején és végén meredekebbre vett sRGB görbe, mely akkoriban a régi CRT monitorok felépítéséből fakadóan volt előnyös, (a mai LCD-k már ezt is digitálisan állítják elő, hogy igazodjanak a CRT-k karakterisztikájához, de ettől függetlenül ezzel kell dolgoznunk).
C./ Luminance, vagyis fényerő (a fehér fény "erőssége"), általában cd/m^-ben kifejezve.
A legtipikusabb calibration target a "kőkorszak" vége óta:
6500K-es WP
2.2-es gamma
CRT-kre 100 ; LCD-kre 120 cd/m^2 luminance
A ma javasolható célértékek (amennyiben a program kellően testre szabható e téren):
D65-ös WP (nem azonos a 6500K-el, pontosabb, és a HD videók megjelenítésénél már ez a szabvány)
2.22-es gamma (egész pontosan 1/0,45 ~ 2.2222222222 a végtelenig, de ne írd ki 3 jegynél többre, ez is bőven sok)
A luminance pedig inkább tetszés szerint, én ezt javasolnám: CRT-kre 120, LCD-kre 140 cd/m^2 (legalább 1 napig teszteld, és mondjuk 10-essével lépkedj, míg tetszik)
Ha ezt kifőztük, nekiláthatunk a kalibrálás műveletének. Ez több ponton is eltérhet, attól függően mit kalibrálunk, de a műszerhez járó software-ek pontról pontra végigvezetnek minden lépésen, és segítenek a beállítások elvégzésében.
Ennek során először a megjelenítő hardwares beállításait hangoljuk be (vagy kézzel pötyögve az OSD-ben, vagy automatizáltan, ha támogatja a megjelenítő), majd a program egy méréssor eredményeiből előállít egy LookUpTable-t, mellyel finomhangolja a karakterisztikát. (Ez egy ICC fileba mentődik, melyből bootoláskor visszatölthető a VGA-ba, vagy egyes esetekben magában a megjelenítőben kerül mentésre).
Ez a LUT tulajdonképp egy megfeleltetés, mely eltolja a megjelenítő felé tartó értékeket az előre meghatározott táblázat értékei szerint (tehát manipulálja a jelet egy köztes ponton, hogy a végső kimenet megfeleljen a szabványos értékek eléréséhez).
Ezzel elértük, hogy a megjelenítőnk a saját színterében szabványos értékek szerint üzemel.
Egy kép, amit a kalibrálás során készítettem.
2. A profilozás során a kalibrált állapotban mérjük ki a megjelenítő natív színterének (vagy szimuláltan natív színterének**) 3 referenciapontját: az R=max G=max B=max (azaz tisztán piros, zöld, kék al-pixelek teljes fényerőn, a többi pedig minimumon/nullán).
Ez a művelet rendszerint a kalibráláshoz végzett méréssorozat részeként történik, és szintén az ICC fileba (avagy ICC profilba) kerül mentésre.
**Szimuláltan natív széntér: Némely wide gamut (azaz tág színtartományú) monitor gyárilag is tartalmaz beépített LUT-ot némely szűkebb, szabványos színterek szimulálására. Ezzel kapcsolatban két dologra érdemes figyelni: Egyrészt hacsak nem hardware-esen kalibrálható a monitor, akkor ez már csak a VGA LUT-al finomítható tovább az adott megjelenítő paramétereihez (vagyis nem tudunk RGB gammákat állítgatni az OSD-ben, ha ezen preset-ek közül választunk). Ez viszont problémás lehet, ha némileg elcsúsztak már a színek a gyári átlagértékektől, és pontos WP-t, valamint gammát szeretnénk. (Így érdemesebb lehet a színterek konvertálását inkább a software-ekre bízni.) Továbbá nem minden minden arany, ami fénylik, így attól, hogy talál az ember pl. sRGB presetet az OSD-ben, az még nem garancia, hogy ennek hatására a színtartomány is limitálódik, nem csak a WP csúszik el (ami ráadásul nem is kalibrálható már, míg ki nem lépünk a presetből, szóval értelmetlen a funkció).
A kalibrálást "szemre" is elvégezhetjük, neten található tesztképek segítségével, vagy segédprogramokkal még LUT szintjén is. A profilozás már nem ilyen egyszerű, viszont találhatunk a neten (vagy a megjelenítőhöz csomagolt CD-n, illetve a gyártó support oldalán) kész ICC fileokat, vagy koordinátaértékeket, amik ha nem is tökéletesen passzolnak a mi saját készülékünkhöz, de jó közelítést adhatnak.
Jó, és tökéletes eredményhez viszont szinte elengedhetetlen egy mérőműszer, ami lehet coloriméter, vagy spektrométer, de utóbbival nem futsz össze minden sarkon, és otthonra felesleges is lenne. Egy kellően pontos coloriméter viszont manapság már megfizethető áron beszerezhető (például külföldi webshopokból akár ~30k).
Én most a "sláger népterméket", az X-Rite (régen svájci GretagMachbet, és akár a Pantone, vagy BluEye, illetve SQUID2 matrica alatt is fellelhető) Eye One Display 2 eszközt fogom bemutatni. Pontosabban én az olcsóbb, LT verziót vásároltam meg, mert ez csak egyetlen funkciót korlátoz: a luminance értékének állíthatóságát. De épp ez az érték a leg szubjektívebb, szemre érdemes belőni a környezeti viszonyok függvényében.
Sőt, én magam a BasICColor nevű, német gyártmányú programmal használom, mert tágabb beállítási lehetőségeket nyújt (és a drágább X-Rite csomag felárból majdnem kijön ez a software is).
Elsőre talán nehéz elképzelni a dolgot, de ez a műszer ugyanúgy alkalmas projektorok kalibrálására is. Ilyen esetben egy állványba kell fogatni, és a vászonra irányítani. (Lehetőleg minél közelebb, de úgy, hogy még ne takarja ki a belátott területet a vetített képből).
A Prohardver már foglalkozott ezzel az eszközzel, de "biztos, ami biztos" alapon, én most fel is nyitok egyet, hogy megnézzük belülről (nem, ez már nem volt működőképes akkor sem, mikor nekimentem a csavarhúzóval...):
Csavarozáshoz fel kell tépni a serialos matricát, és a tapadókorongot is.
Szolíd kis belső, pont ezt vártam. -> Na jó, nagyon nem ezt vártam. :)
A kis nyákot is kiszabadítva megszemlélhető az ólomsúly.
Színszűrők szemből.
Színszűrő lapocskák szétkapva. -> Igen, több darabból legóztak.
Szenzorok. (A közepén én törtem el a lapot szétszedéskor.)
Van ezen valami az USB vezérlőn kívül? :)
Nem pont olyan, amilyennek várnánk (bár ezt sejtettem). Nem tűnik drágább cuccnak, mint egy lézeres egér, és inkább azért lehet drágán adni, mert fél-profiknak szánják, munkaeszköznek. Na meg persze software-t is kellett hozzá barkácsolni, és azt sem dobhatják ingyen. Jó sok ólom is van benne a zöldagyúak örömére. A takaríthatósága sincs megoldva (csak így szétszedve, de ez garanciavesztés is, és könnyű tönkretenni).
Csak hogy valami pozitívumot is mondjak: elég jól összerakták, nem igen fog szétesni, ha ide-oda hurcolássza az ember.
Color Management
Color Management
Na igen, ez az, ahol kezdenek igazán izgalmassá válni a dolgok. Akár azt is mondhatnám, hogy bárki képes a monitorra biggyeszteni egy EyeOne-t, Spyder-t, vagy ColorMunki-t, és azt mondani a bizakodó ügyfélnek, hogy "Kezicsókolom, és belőttem a monitort, és itt az ICC file, beadva a windows-nak, ugye milyen szép?". Aztán az ügyfél talán azt is mondja a placebó hatása alatt, hogy "Igen, köszönöm, mennyi is lesz, x000 Ft?".
Gondolom, a fenti kis szösszenetből már lesüt, hogy itt valami még nagyon nem kerek. Hát nem is. :)
Az első, ami kalibrálás után feltűnik, hogy nem nagyon tűnik fel semmi, ha csak az üres asztalt bámulja az ember. Illetve csak a fényerő, és a szürke árnyalatok változása tűnhet fel, mert egyelőre csak ezek (és a fehéregyensúly) léptek érvénybe.
Ahhoz, hogy egy megjelenített kép (digitális fénykép, weblapok design-ja, SD/HD filmek képe) tényleg szabványszerűen kerüljön megjelenítésre, még szükség van egy lépésre. Talán már kitaláltátok, ez lesz a Color Management. (MacOS-en elvileg megy, mint a karikacsapás, ezért sem firtatom, illetve nincs Mac-em, úgyhogy ha akarnám se tudnám megmondani, így van-e.)
A megjelenítőnk egy saját, egyedi színtérben alkot, és ami ebben a leg"szebb", hogy ezt a színteret címzi fel a 3x8 bites színkezelés, szóval, mikor egy program tökéletes pirosat kér, akkor a monitor odaadja neki azt a színt, ami nála a skála legvégére esik.
Szerencsére a coloriméterünk kimérte nekünk ezt a színteret (3+1 pontból meg lehet határozni, 6+2 koordinátát: R;G;B=max;max;max, és WP), illetve ideális esetben a forrásanyag színtere is ismert. (Filmeknél utána lehet járni a szabvány alapján. Webes képeknél pedig vagy van beágyazott profil, vagy ha untagged a file, akkor is jó valószínűséggel trafál bele a program, ha sRGB-nek feltételezi, így ezzel nem lesz sok gondunk).
A feladat tehát a két színtér közti konvertálás. Ehhez jó orvosi ló lett a monitorom, mert van, ahol túlnyúlik, van ahol viszont kilóg az sRGB, avagy Rec 709 színtérből. Az alábbi képen látható, hogy kalibrálás utáni mérésből rajzoltattam, mert passzol a D65-ös WP (picit lentebb, és balra található a 6500K-es pont, amire még szokás kalibrálni, a többi értéket már ritkábban célozzák, talán nyomdában az 5500-at, illetve régi CRT-knél néha 9300-at lőttek).
Lenovo L220x vs. Rec 709 = sRGB
A cél tehát a két háromszög közti átjárás biztosítása. Erre számos matematikai elmélet született már, a kalibráló program is menthet az ICC fileba chromatic adoptation (így hívják az eljárást) módszert, de a konvertálást mindig a forrásanyaggal dolgozó programnak (és nem a Windows-nak, vagy a VGA-nak) kell elvégeznie.
Akkor nézzük, milyen programok használnak CM-et:
Képkezelők: Windows Photo Viewer (Vista óta) ; PhotoShop ; és ennyit ismerek, de lehet még.
Böngészők: Firefox 3.0.17 (a 3.5-ösökkel és 3.6RC1-el valami nagyon nincs rendben e téren), és semmi több, a Safari sincs képben Windows alatt, csak MacOS-el.
A Firefox 3.0.x-ben ban is kézileg kell bekapcsolni a CM-et: írjuk be a böngészőbe, hogy
about:config
és a felső sávban megjelenő keresővel kutászkodjunk a "color" szóra, majd a
gfx.color_management.enabled
értéket dupla kattintással állítsuk "fals"-ról "true"-ra.
Filmlejátszók: Nincs ilyen.
Mielőtt valaki azt hinné eltévedt: Nem, nincs ilyen filmlejátszó, ami támogatja a CM-et WCS-en át (Windows Color System - Vista óta), de létezik megoldás a színtérkonvertálásra. (Elvégre ez lenne a cikk fajsúlyosabb része. :)
Még néhány szabványos színtér: DVD, SDTV, HDTV...
Mikor épp megjelenítő vásárlása előtt állunk, érdemes utánajárni, hogy a natív színterük lefedi-e az általunk preferált forrásanyagok színterének 100%-át, mert ekkor kapunk tökéletes eredményt.
Ha túlnyúlik azon, az még kisebb gond, mint ha kilóg, mert vágni lehet, tágítani nem igazán. Persze a vágás sem olyan egyszerű dolog, a folyamat során csökkenhet a színárnyalatok száma (ebbe most inkább nem mennék bele bővebben, de nem véletlen, mikor a profiknak, munkaeszköz gyanánt kínált méregdrága monitorok adatai közt látjuk, hogy akár 10 bit fölé is mennek a színcsatornánkénti vezérléssel, holott a forrásanyagok jobbára inkább 8 bitesek. Bár napjainkban bontakozik már azért a 10 bites átvitel alapja pl. DisplayPorton át, és a profi FireGL, Quadro kártyák frame-buffer-elni is tudnak 10 biten, valamint némely megfizethetőbb monitorok is jönnek már display porttal, és 10 bites vezérléssel...)
Chromatic Adaptation 3DLUT-al
Színtérkonvertálás filmekhez.
Kb 2007-be merült fel a téma HTPC-s (Home Theater Personal Computer - filmezésre szánt PC) körökben, hogy valahogy filmek esetében is meg kéne valósítani a color management-et. Ekkor már elég erős CPU-kat, de méginkább GPU-kat találhattunk a PC-kben ahhoz, hogy előálljanak a legelső megoldással:
A Medial Player Classic (ma már Media Player Classic - Home Cinema néven fut) támogatja a PixelShader-eket (DirectX-res VRM9 rendererrel). Ezt felhasználva született egy kód, mely elvégezte a konveziót. A forrásétól tágabb színterekre való konvertálást elég jól végezte, de közben nem alkalmazott gamma korrekciót, és gyakran generált hibákat ott, ahol a megjelenítő natív színtere nem fedte a forrásanyagnál használt színteret (az én példámnál belilultak a mélyebb kékek), viszont a túlszaturáltságot hatékonyan megszüntette. De ezt csak érdekességképp említettem meg, mert létezik már pontosabb módszer is.
Több doom9-org-os fórumozó együttes munkája révén született meg a 3 dimenziós look up tabe (röviden 3DLUT)-on alapuló eljárás, ezt fogom részleteiben is bemutatni.
Feltételezett állapot:
- Rendelkezünk coloriméterrel/spektrométerrel, vagy valami más forrásból hozzáférünk a monitorunk közelítő értékeihez (mások, azonos típusú megjelenítőn végzett műszeres mérései, vagy a gyártó által közölt adatok nyomán).
- Már elvégeztük a megjelenítőnk kalibrálását (a korábbiakban leírtaknak megfelelően, legalább szemre).
Programkörnyezet, melyre építkezünk:
- Media Player Classic - Home Cinema
Ajánlott a legújabb x86 verzió. Régen én is jobb kedveltem a BSPlayert, de pár nap alatt ehhez is hozzá lehet szokni. (Ez is tud sok mindent, csak rá kell lelni az opciókban.) Az x64 egyelőre nem mindig működik együtt a többi programmal, amiből még csak x86 verzió létezik.
Elvileg működhetne a dolog bármely lejátszóval, de nem fog minddel, a BSPlayer is gyakran megfagy.
A Video renderer lehet bármi, de ha szeretnél feliratozást, akkor VRM9-et kell használnod, mert EVR-rel sem tud kirakni feliratokat (ahogy madvr-rel sem, pedig az lenne a legjobb választás -> Ezt később még külön kivesézem.).
A beállításoknál tiltsunk le minden "internal filter"-t, hogy a kézileg beállított külső kodekeket használja dekódolásra (fontos, különben az alábbiak nem érnek semmit!): klikk
Másra nem kell ügyelni, elvileg teljesen lejátszófüggetlen lenne a dolog (csak gyakorlatilag nem az, mert nem minden lejátszó birkózik meg az általunk generált kimenettel).
- FFDShow
A ma elérhető legokosabb és legjobb audio-video kodek. Ajánlott a legfrissebb x86 verzió használata (azok közt, amit a newest files listán találsz a link alatti címen - az x64 még nem igazán ajánlott, mert nem dolgozik együtt x86 programokkal). Egyelőre csak törölj le minden más MPEG kodeket (csomagot), és telepítsd fel. A videó dekóder részletesebb konfigurálásával majd a későbbiekben foglalkozunk.
- Haali Media Splitter
Telepítéskor érdemes minden lehetséges formátumot engedélyezni (végigpipálni). x64 kérdésében a szokásos mondóka (egyelőre még inkább ne, bár lassan mindenből lesz x64 is). Lejátszás közben megtaláljuk majd a tálcaikont, amin jobb-klikkel válthatunk az audio/video sávok, és a feliratok közt (ha vannak ; később még hasznos lehet).
- AviSynth
Ajánlott a legújabb 2.6-os verzió, ami elérhető. Ezt csak telepítenünk kell az alapértelmezett mappába (de nézzük meg mi az, mert lesz még ott dolgunk).
- t3dlut
Ez egy plugin a fent említett AviSynth programhoz. Csak annyi a dolgunk vele, hogy az AviSynth telepítési mappáján belül fellelhető plugins mappába másoljuk a t3dlut.dll filet (a többire nincs szükség, de aki szeretné, olvashat readme-t, vagy akár még a forráskódba is belepillanthat).
- cr3dlut
Ezzel a programmal fogjuk létrehozni a 3dlut fileokat, melyek alapján a fenti plugin végzi majd a dolgát.
Először is tömörítsük ki egy könyvtárba az egész programot. (Bárhova, de olyan helyre, ahol később sem lesz útban, sőt, meg is találjuk még...)
A txt fileok előregyártott sablonok, melyek segítik majd a dolgunkat. Nem kell velük sokat bíbelődni, ha valakit érdekel, átolvashatja az advanced readme-t további konfigurációs parancsokért.
A programot parancssorból kell utasítani a művelet elvégzésére, pl:
cr3dlut.exe "HD_PC.txt" "HD - PC.3dlut"
Ez létrehozza a szükséges filet, amivel a plugint etetjük majd. Én nem szeretek parancssorban bekószálni a mappába, ezért létrehoztam a cr3dlut.exe mappájában egy run_HD.bat filet, amibe a fent látható sort írtam. (Jobbklikk, új szöveges txt, beírod, lemented, majd átnevezed .bat-ra).
Nyissuk meg az egyik sablon filet, és a legutolsó sorba írjuk be a következőt:
Output_Primaries 9 [rx] [ry] [gx] [gy] [bx] [by] [wx] [wy]
Itt az rx a red (piros), vízszintes koordinátája a CIE koordinátarendszerében, és így tovább a 3 alapszín, majd pedig a white point. A korábbi színes grafikonokon látott háromszög csúcspontjait, és a benne kitűzött fehér-pontot kell végigpötyögnünk. Nálam például így nézett ki:
Output_Primaries 9 0.656725 0.329082 0.228974 0.690610 0.140753 0.086776 0.313918 0.328022
Továbbá még két dolgot lehet érdemes állítgatni (csak írjuk be a következő sorba):
Out_Of_Gamut_Clipping 1
Ez a megjelenítőnk által meg nem jeleníthető színek kezelésére vonatkozik (hogy milyen megjeleníthető színnel helyettesítse azt). Nekem megfelelt az 1-es, de kipróbálhatjátok 0-án is (az egyszerűbb módon nyeseget -> egyeseknek talán az a megszokottabb).
Output_YCbCr_Full_Range 0
Ez arra vonatkozik, hogy a megjelenítőnk a TV-knél, és film-forrásoknál megszokott 16-235, vagy a PC monitoroknál szabványos 0-255 értékek közt skálázza-e az alapszínek arányait.
PC monitorhoz állítsunk be 1-et, PC-re kötött TV-hez, vagy proojektorhoz próbáljuk ki 0-án és 1-en. Egyszerű észrevenni, ha nem találtunk bele, mert ha indítunk egy széles vásznú filmet (célszerűen 16:9-től is keskenyebbet), aminek fekete az első képkockája, akkor látjuk, hogy a film képe egy szürke tégla az alsó és felső fekete sávok közt. (De menet közben is feltűnően világos lesz minden, csak azt talán túl sokan megszokták már az évek alatt, mikor nem foglalkoztak ezzel.)
Output_Gamma [i] [lv] [av] [pv] [tresh]
Ezzel korrigálhatnánk az eltérést, ha nem 2.22-es gammára kalibráltuk a megjelenítőt. Bár ezt nem javaslom (se az eltérő gammára történő kalibrációt, sem a paraméter használatát), mert próbaképp beállítottam a 0.45-ös értéket (1/2.22), mire fel kivilágosodott a kép -> pont úgy nézett ki, mint ha emiatt figyelmen kívül hagyta volna a TV és PC level közti váltást (a fentebbi parancsot).
HDTV-Blu-Ray és DVD forrásra is külön 3dlut filet kell generálnunk, de ugyan azokat a módosításokat kell elvégeznünk a megfelelő sablonokon (copy-paste-elhetjük a hozzáfűzendő egy-két sort).
Ha mindent beállítottunk, futtassuk le a programot, és generáljuk le a 3dlut filejainkat.
*** Megjegyzés: Ez nagy valószínűséggel valami egyedi bug is nálam, de ha az
Output_Bit_Depth [i]
értéket 16-on hagyom, akkor még a 3,6Ghz-en járó Q6600-at is felzabálja, és a 720p-s ripekkel még épp elvan, de az 1080p-s Blu-ray film már szaggat egy kicsit. Valószínűleg az alpha verziós AviSynth nem szeret nálam valamit, de ha szaggatna a film, próbáljátok ki 8-on (így már elbírja a gépem, nem is jár csúcsra minden igénybe vett mag).
Egyetlen tennivalónk maradt, méghozzá beüzemelni az AviSynth pluginunkat az FFDShow-ban. A dekóder konfigurációs panelje a start menüben található az ffdshow mappa alatt (Video Decoder Configuration).
A beállítás a képen látható módon történik.
Output: A video renderer felé továbbküldött jel típusánál csak az RGB32-t hagyjuk bepipálva, mert ez lesz az AviSynt plugin futása után eredményül kapott jelformátum.
RGB conversion: a kodek valójában nem fog RGB konverziót végezni, itt csak akkor érdemes módosítani a beállításokat, ha az Auto opció eltéveszti az Input vagy Output Level értékeket. Ha a kép túl világos, vagy túl sötét, próbáld kézileg beállítani az Input-ot Standard-re. Az Output értéket elvileg automatikusan kezeli majd az AviSynth is, de ugyan így érvényes, hogy próbáld ki mindkét állásban, ha nem tetszik a fényerő-szint.
AviSynth: Inputként csak YV12-t fogadunk, mivel a forrásanyagok 95%-át ebben mentik (Blu-Ray, DVD, és ezekről készült RIP-ek mind ebben vannak...).
Ezután van egy kis csavar a dologban, mivel SD és HD anyagoknál, sőt, a szabványosan Mod4-ben, és a vágott magasságban kódolt ripekre is eltérőek az optimális beállítások. De nem kell félni, össz-vissz 4 sort kell kezelnünk, jobb esetben ebből is csak kettőt kell babrálni aszerint, hogy SD, vagy HD anyagot nézünk épp.
Ez egyszerűen kivitelezhető oly módon, hogy a program figyelmen kívül hagyja a # jellel kezdődő sorokat, így itt hagyhatunk mindent, ami kellhet, és attól függően cserélgetjük fel a # jelet a t3dlut sor előtt, hogy HD, vagy SD anyagot nézünk-e épp. (Ehhez érdemes igénybe venni az FFDShow tálcaikonját, melyre kattintva a film lejátszása közben is elérhetjük ezt az ablakot, és a módosítások életbelépéséhez nincs szükség a film bezárására, csak az OK, vagy Apply gomb lenyomására.)
#ConvertToYUY2()
yv12toyuy2(itype=2, threads=4)
t3dlut("C:\Program Files (x86)\AviSynth 2.5\hd - pc.3dlut", threads=4)
#t3dlut("C:\Program Files (x86)\AviSynth 2.5\sd - pc.3dlut", threads=4)
A fent látható elrendezés a szabványos felbontásban kódolt HD videókra ad optimális eredményt 4 CPU mag esetén (threads=4, ezt veheted 2-re is dual-core CPU-n, viszont 4 thread-al is elboldogul,és tapasztalatom szerint amúgy sem nagyon generál 2-nél többet).
ConvertToYUY2()
#yv12toyuy2(itype=2, threads=4)
#t3dlut("C:\Program Files (x86)\AviSynth 2.5\hd - pc.3dlut", threads=2)
t3dlut("C:\Program Files (x86)\AviSynth 2.5\sd - pc.3dlut", threads=2)
Ez az elrendezés pedig bármely egyéni felbontásból képes dolgozni, és SD anyagokhoz ad optimális eredményt (a példa kedvéért a thread-ok számát itt 2-re állítottam).
Az első két sor közt tehát akkor érdemes cserélgetni a # jelet, ha olyan hibaüzenetet kapunk (a film lejátszása közben, a bal felső sarokban), hogy "resolution must be mod4". (Az első sorba írt parancs kompatibilisebb, bármely felbontással működik, a második sorba írt pedig pontosabb eredményt ad -> ha nem akarsz vele szórakozni, hagyd mindig az első sort # nélkül.)
A második két sor közt pedig asszerint kell léptetni a # jelet, hogy SD, vagy HD videót nézünk-e éppen. (Az működik, ami előtt nincs # jel.)
Amit még módosítani kell a fenti kódban, az a 3dlut fileok helye a merevlemezen. Mint látható, én áthelyeztem őket az AviSynth mappába, így ezt kellett ide beírnom elérési útnak, neked azt a mappát kell bepötyögni, ahol létrehoztad a 3dlut fileokat (ahova a sablon txt fileokat és a cr3dlut.exe-t kibontottad). Például:
t3dlut("C:\Program Files\cr3dlut\hd - pc.3dlut", threads=4)
És bármily hihetetlen, ezzel a végére is értünk a dolognak. Ha valami prblémánk akad, fussuk át elejétől végéig, mik lehettek a buktatók, vagy dőlj hátra, és nézd végig újra a kedvenc filmjeidet, immáron tökéletes színekkel. :)
Vagyis még csak majdnem, de erről még szót ejtek két oldallal később. :D
Kiegészítés: A HCFR használata
A 3dlut fileok előállításához szükségünk volt 3+1 pont x;y koordinátaértékre. Ezek kinyerése nem triviális, de nem is túl bonyolult.
Ha nincs kalibrátorunk, és nem tudunk senkit házhoz hívni, akinek van, akkor szerencsés esetben megtaláljuk ezeket a gyártói specifikációk közt. Ha nincs ilyen adatunk, keresgélhetünk neten, hátha valaki kimért már egy azonos típust (hatalmas eltérések nemigen lesznek a miénkhez képest). Esetleg megpróbálkozhatunk még netről letöltött ICC filekból történő adatkinyeréssel. Ezzel kapcsolatban viszont nem tudok segítséget nyújtani. (Mikor a témában keresgéltem, gyakran botlottam bele hasonló utalásokba, hogy léteznek ingyenes programok, melyekkel szerkeszthetjük is az ICC fileokat, de nem volt rájuk szükségem, keresgélj google-el, vagy talán valaki belinkeli majd a fórumba is...)
Amennyiben rendelkezünk műszerrel is, akkor használhatjuk a HCFR-t (letöltési link kicsit lentebb az oldalon).
Ez egy ingyenes program, mely számos műszert ismer, és egyszerűen kinyerhetjük a számunkra szükséges output primaries koordinátákat.
Telepítsük, indítsuk el, kérjünk új dokumentumot, méghozzá "View images"-t, válasszuk ki a szenzorunkat, majd rögtön az első munkalapon látjuk az üres táblázatot, amit a színes karikákra történő kattintással tölthetünk fel (természetesen a mérőműszer segítségével).
***Előfordulhat, hogy be kell tennünk a program mappájába néhány DLL filet a mérőműszer gyári programjának mappájából, de erre figyelmeztet is majd minket, ha szükséges (pl az EyeOne.dll is ilyen).
Válasszuk tehát ki a fejlécben, hogy "Primaries and Secundaries", majd a táblázat melletti sávban kérjünk xyY formátumot (fentről 4.), ezután nyomjuk meg az alatta található GO gombot.
A mérés után innen copy-pastelhetjük a táblázat adatait.
Oszloponként ajánlott megtenni, mert át kell formáznunk egy sorvektorrá (kitörölni a sortöréseket, és a 3. koordinátát), így nem keverjük össze. (Az első három, és a 7. oszlop kell nekünk, 4-6-ig a másodlagos színeket írja ki).
A White oszlopot kijelölve a bal alsó grafikon segítségével meggyőződhetünk arról, hogy beletaláltunk-e a kitűzött WP-be a kalibrálás során (ha csak 1-2% eltérés maradt, az még belefér). De ugyan így nyomon követhetjük a gamma görbéinket is, ahogy megannyi mást.
A korábban látott háromszöges grafikonokat is ezzel a programmal rajzoltattam ki, a fejlécben találhatjuk CIE diagramm néven. Ezen láthatjuk, mit sikerült lefedni, és mit nem (a referencia háromszög a program beállításai közt kérhető az Advanced opciókban, a preferences alatt).
Ezt a programot érdemes egyébként használni TV-khez és Projektorokhoz, ha nem PC-re kötve használjuk őket, vagy nincs RGB-gamma állítási lehetőség a menüben (Ez esetben színtér transzformációkra nem lesz lehetőségünk - bár ezeknél a megjelenítőknél többnyire nem is annyira durvák a lefedésbeli eltérések). -> Érdemes szétnézni a neten a szervízmenübe történő bejutás trükkjeiért, sok mindent oda rejtenek el, ami a kalibráláshoz kellhet.
További finomítások: MadVR
MadVR
Korábban említettem, hogy nem értünk még a finomhangolás végére, mert van még min csiszolni, és ez a kikódolt anyag útja a framebuffer felé.
Szép és jó dolog a DXVA. Mivel mindig elég erős volt a CPU-m, hogy megbírkózzon az aktuálisan legdurvább anyagok dekódolásával, így sohasem érdekelt igazán, hogy üzemel-e, de másodlagos szempontként azért igyekeztem olyan software-környezetet teremteni, ahol legalább némely funkciót elláthat a GPU.
Nos, én inkább azt mondom, ha tényleg a lehető legpontosabb eredményre törekszünk, sörpörjük is a szőnyeg alá az egészet. Van helyette jobb. :)
Szintén egy doom9.org-on fórumozó fejéből pattant ki az ötlet, hogy készít egy minőség maximálizálására törekvő video renderer-t, így született a madVR
Telepítés:
-Bontsuk ki bárhova a merevlemezen, de úgy, hogy később se legyen ott útba, és még rátaláljunk holnap is. Futtassuk le az install.bat-ot. A jelenlegi mappa egyben a telepítési mappa is lesz, nem másolja be magát máshova, itt marad. (ne töröljük úgy, mint egy telepítővel tennénk, a telepítés után).
- A lejátszó beállításainál válasszuk ki a video rendererek közt a madVR-t. MPC-HC-ben az external filters fülön is be kell tallóznunk (Add filert, majd a listában megkeresni), hogy hozzáférjünk a beállításaihoz (dupla klikk a madvr szövegre).
Szinte minden munkafázisra saját, minőségmaximalizáló eljárást használ, melyet a GPU-val végeztet (de nem DXVA-n, hanem DirectX9-en át), inkább eltúlzott, mintsem kerekítgető pontossággal.
Sőt, képes kezelni a 3dlut fileokat is, így szükségtelenné teszi az Avisynth plugint, és az egész mókát azzal, hogy nekünk kelljen a # jeleket pakolgatni a script-ben, mert ezt is automatikusan felismeri, és válogat az előre betárazott 3dlut fileok között. (Ráadásul az ehhez szükséges számításokat is a GPU-val végezteti, így nem akadály 16 bites 3dlut-okat generáltatni 1080p-hez sem.)
Persze oka van annak, hogy részletesen leírtam a másik módszert, amivel bármely más video renderer vagy lejátszó használható (amivel épp nem merülnek fel bugok). Van pár hátulütője is ennek a programnak (melyek a most legfrissebb 0.11-es verzióra vonatkoznak, későbbi buildok esetén ez változhat):
- Csak néhány ismertebb lejátszó támogatja (például a Media Player Classic - Home Cinema --- nem véletlenül ajánlottam ezt telepíteni korábban is).
Ami itt vicces, hogy a BSPlayer sem ismeri fel, holott a lejátszóprogram több fizetős kódrészletet is licenselt a madVR készítőjétől, ez a renderer pedig ingyenes, és kb. csak be kellene tenni a választható rendererek listájába. Talán majd egy napon...
- A spéci belső futószalag miatt a lejátszók nem tudnak vele a kép fölött feliratot renderelni.
- Még fejlesztés alatt áll, így akadhatnak benne hibák.
FFDShow konfigurálása madVR-hez:
Csak YV12-t küldhetünk neki, és ügyeljünk arra is, hogy ne legyen engedélyezve az "Allow output format changes during playback".
Mivel az MPC-HC nem képes feliratot renderelni vele, így használjuk az FFDShow beépített felirat renderelőjét. Ezzel is szépen belőhető a felirat tetszőleges méretre és pozícióba (és automatikusan rátalál a feliratokra a video file mappájában).
A madVR filter konfigurációs panale MPC-HC alatt.
Ha előre legeneráljuk a 3dlut fileokat, és áthelyezzük őket a cr3dlut mappából a madvr.ax mellé (a telepítési mappába), akkor a renderer automatikusan válogat majd közülük.
Itt már nyugodtabban használhatunk 16 bites RGB táblát, mert ezesetben is alacsony CPU terhelést von majd maga után a lejátszás. (Ellenben a VGA-nkat már-már olyan szinten tekeri majd, mint egy low details-re állított 3D-s DirectX játék.)
Ezzel elértük a leghatékonyabb működést, miközben maximalizáltuk a minőséget. Most már tényleg boldogan hátradőlhetünk, és élvezhetjük kedvenc filmjeinket.
Konklúziók
Most már azt hiszem kijelenthetem, hogy elértük, amit ma egy PC-n történő filmlejátszással kapcsolatban a képminőség terén pillanatnyilag el lehet.
A jövő zenéje még, hogy már a VGA framebufferébe is színcsatornánként 10 bites színeket küldjünk, amit DisplayPort-on át a monitorig juttatunk, és így nem vesztünk színárnyalatot a konvertálás során. (Jelenleg 16 bites 3dlut-al is ditherelt 8 bites RGB-t kapunk, mert csak a FireGL és Quadro kártyák engedélyezik a 10 bites framebufferelést - ha ezt megnyitnák a driverekben, valószínűleg a madVR lenne az első, ami használná :D)
Végezetül még beszúrnék pár képet, hogy kb. mekkora differenciára számíthatunk egy középkategóriás monitor esetén a color management-ből adódóan.
Nyilván csakis RELATÍV, azaz VISZONYLAGOS képet nyújt a dologról, főleg, ha kalibrálatlan monitoron nézed a képet, CM nélkül, de a telefonom kamerája eleve nem is rögzíthette a túlszaturált színeket a jpeg-ben, nem beszélve egy telefon kamerájának színhűségéről, szóval csak az arányokat lehet szemléltetni, a minőséget véletlen sem...)
Az emberi bőr színe vörösből természetesbe ment át.
A túlnyomórészt kék dominanciájú képről eltűnt a "zöld fátyol".
A cikk bevezetőjének alapkérdése volt, hogy: "Kalibrátort mindenkinek?" és ezt tulajdonképp már az első oldalon meg is válaszoltam:
Igen, amint legalább kétszer annyiba került a monitorod, mint egy kalibrátor ára, már megérheti beszerezni hozzá ezt is, amolyan upgrade-ként, mert elég látványos különbségek lehetnek kalibrált és color managelt, valamint a "szűz" állapot közt.
Kisebb költségvetés esetén pedig még mindig jó alternatíva lehet a "házhoz kiszállós kalibrátoros ürge", csak ne felejtsük el használni is a kapott ICC filet, illetve külön is kiméretni a natív színtér referenciapontjait, és betenni a koordinátákat a cr3dlut-ba.
Nos, remélem páraknak kedvet adtam ahhoz, hogy ők is megvalósítsák otthonukban a fent leírtakat.
Ha ezen túl vagytok, elkezdhettek aggódni a hangzás miatt, ugyan is az erősítőket sem árt kalibrálni, méghozzá mérőmikrofonnal, de ez már egy másik történet... :)