2017/11/21

Demozaik házilag - Bayertelenítünk

Szia urak. Bayertelenítünk.
Nem az 5. párttagkönyvet tépjük szét mérgünkben. De nem is szenzort fogjuk lecsutakolni, bár az is egy izgalmas témakör és nem kizárt, hogy egyszer majd megcselekedjük. Igaz is, ha valaki ilyen célra feldobná a kameráját, (természetesen az eredmény abszolúte nem garantált), akkor szívesen legyaluljuk róla a bayer szűrőt. 
Szóval van a Nikon D5000 szenzora, ami névlegesen 4288*2848 pixeles, ami nagyjából 12 megapixel. Persze nem pont ennyi, inkább 4310*2868 pixel, de ehhez már DCRAW kell (mi a GUI-t használjuk), ugyanis még a CameraRaw is visszavágva mutatja meg. Amúgy bevett szokás visszavágni a szegélyeket (több gépemnél is ez van), mert azokat nincs miből interpolálni. Persze nem most szálltunk le a falvédőről, tehát tisztában vagyunk vele, hogy ez a szenzor nagyjából csak 4 megapixeles és az is jóindulattal, 6Mpx a zöld csatornán és 3-3Mpx a vörös-kék csatornákon. Ilyen rendszert főzött nekünk Bayer úr a Kodaknál. Ez persze nem ilyen egyszerű, mert a bayer pigmentek nem tökéletesen szűrnek komplementert, és ismerve a pontos karakterisztikát, okos algoritmusokba a szomszédos szűrők alá beszivárgott információt is be lehet építeni. Ezt találtam a bayer színáteresztésére, jobb nincs, ezt szeretjük:
Forrás
Piros felvételi szűrővel készült JPEG,
 illetve a demozaikolás előtti  NEF Bayer-képe.
Gyakorlatilag az látszik, hogy elég tökéletlenek a szűrők, főleg a vörös. Na mindegy is, az internet tele van Bayer-szűrők rajzaival, de mi konkrétan a saját gépünkét szeretnénk megismerni, tehát tesztképek következnek. A DCRAW tud nyers pixelkimenetet produkálni  (-D paraméter, *.pgm output, amit megnyit a PS - grayscale 8 bit), bár nem tudjuk, ezek az adatok mennyire nyersek konkrétan, hiszen a 12 bites adatból valahogyan 8 bites lesz. És az sem igaz, hogy a RAW valóban eredeti, módosítatlan nyers lenne, pl a Nikont érte olyan vád, hogy zajszűrést alkalmaz a NEF-ben, amitől az amatőr csillagászok kicsit idegesek lettek. Nem lep meg tehát, hogy több különböző RAW dekóderrel nem egyforma eredményt kapunk, tehát van ott valami titkos izé még. Na de, hogyha készítünk vörös, zöld és kék képeket, azt legalább ki lehet találni, melyik pixel pontosan milyen bayerszűrővel van megpatkolva. A kép közepéből vágunk ki 8*8 pixelt, mert a szélét bizony sújtja a peremsötétedés, a közepe sokkal homogénebb. A jobboldali ábrán jól látszik, hogy a piros pixelek a legvilágosabbak (0-2% között szór az érték).
A D5000 szenzorának kellős közepe
A 64 pixelből tehát 16 Red pixelt kapunk. Az is látszik, hogy a felvételi szűrőn (valami kínai Cokin utánzat), illetve a Bayer-szűrőn keresztül átszivárog a zöld és a kék csatornákba is némi fény.  A világosszürke pozíciók a Bayer zöld pixelei (32 pixel, értéke 61-64% között szór), a sötétebb szürkék pedig a Bayer kékjei (16 pixel, 79-82% között).
A megfelelő pixeleket a nekik megfelelő csatornára másolva, megkapjuk a bayerszűrő elrendezését ezen a területen. Hogy valójában ez a négy elrendezés közül melyik, nem tudjuk, mert ugye melyik 4 pixelt nevezzük ki kezdőpixelnek? A kép széle sem árul el erről sokat, amúgy sem megbízható, látjuk, hogy különféle szoftverek különböző számú pixelt csalnak el a szélekről. A kép legközepe tehát RGGB. Ennyi legyen elég egyelőre.
Ebben az esetben a demozaikolás egy sima kiátlagolás lesz, a vörös csatornán 1%, a zöldön 62%, a kéken 81%.
A kapott szín pedig: R254 G119 B67. Elég mosott, fakó, de ne felejtsük el, hogy nem tudjuk a DCRAW hogyan csinál a 12 bites RAW-ból (amin mellesleg nincs se profil, se görbék, se korrekció - vagy pont de) 8 bites szürkeskálást.


A fenti cuccot megismételtük a RawTherapy segítségével. Ez tud szenzor-mintázatot is mutatni, színesben. A kék pixeleket default még nem tudjuk mi okból feketének jeleníti meg, de hogyha a Therapee munka profilját kiütjük (none), vagy a kék csatorna blackpointját bizgetjük, akkor kikékíthetőek. A szürkeskálás 8 bites pixelértékek köszönő viszonyban sincsenek a DCRAW által generáltakkal. Itt valamilyen profilt használ, a DCRAW esetén meg a jóisten se tudja mi történik.

De ennyiért nem fogjuk megtanulni a RawTherapy használatát. Amúgy kismillió demozaikoló beállítás van benne, egyszer majd sort kerítünk arra is, mert jó mókának tűnik. Hátha addig sikerül választ találni arra a kérdésre is, hogyan lehet hozzáférni a tényleges, módosítatlan RAW adatokhoz.

A Sony F828 RGBE filtert használ. A színek visszaadását állítólag javítja, de ennek további felbontáscsökkenés az ára. Azért valamit elárul az is, hogy nem uralta el a piacot ez a szűrőfajta. A miénk ráadásul egy házilag infrásított szenzor. Meg sem kíséreljük szimulálni a mozaikolását. Mellesleg van már olyan technológia a piacon, hogy egyetlen exponálás hatására 4 kép készül 1 pixelnyi shiftelésekkel. Így gyakorlatilag a vörös-kék csatornák teljes felbontásúak lesznek, a zöld csatorna meg kétszeres felbontású. Még keressük a módszert, hogyan tudnánk ehhez kapcsolódni házi módszerrel. Update: módszer 1, módszer2.
Persze egy igazi képnél a demozaikolás, nem sima átlagolás, egy bonyolult algoritmust igényel, de még így is keletkezhet hiba, például akkor, hogyha a finom részletek méretei egy nagyságrendbe esnek a pixelméretekkel. Így fest demozaik előtt, jól látható, hogy a fölső vonalak közötti rések 3-4 pixelesek.
És ilyen lesz a demozaik után. Az alsó vonalak rései (6-7pixel) már elegendőek a helyesen interpolációhoz.
D5000 demosaic chroma error.
A színeket eltúloztuk (vibrance+saturation), a felső rácson jól látszik, miről van szó. Ez bár sok esetben összetéveszthető az objektívek kroma-hibáival, abszolúte nem lencsehiba, kifejezetten a demozaikolás az oka. 

DCRAW linkek: 1, 2, 3

Nincsenek megjegyzések:

Megjegyzés küldése