Odstranění Bayerovy mřížky ze senzoru kamery nebo fotoaparátu

Před nedávnou dobou jsem psal o vyjmutí IR filtru z kamery pro Raspberry Pi. Nevratným odstraněním Bayerovy masky, tedy barevného filtru, získáme kameru snímající ve stupních šedé, tedy kameru černobílou. Je to další úroveň úprav, které můžeme se senzory/čipy provádět.

Konkrétně u kamery pro Raspberry Pi tato operace mnoho smyslu nedává, protože využití tohoto hardware patří zejména do oblasti vývoje a „bastlení“ všeho druhu, nicméně patří mezi oblíbené úpravy digitálních fotografických přístrojů. V dnešní době není problém zakoupit starší digitální zrcadlovku za „pár“ tisíc, a směle se oddat fotografování v černobílém režimu, případně infračerveném spektru. Pro obě tyto fotografické disciplíny je absence Bayerovy masky velmi vítané, protože můžeme využít plný potenciál senzoru (nebo chcete-li – čipu).

Kromě u „uměleckých“ fotografů se fotografické senzory bez barevné masky používají v různých technologických odvětvích a astronomii. Právě v astronomii se společně s monochromatickou kamerou používá sada výměnných filtrů. Po expozici několika filtrů po sobě se výsledná fotografie získá složením všech takto získaných snímků.

Bayerova maska

Bayerova maska, nebo také Bayerova mřížka, Bayerův filtr, mozaika či CFA, je pole barevných mikroskopických filtrů nad snímacím senzorem.

Světlo dopadající na plochu senzoru nejdříve prochází polem mikroskopických čoček. Ty jej dále usměrňují přes barevné filtry k jednotlivým polovodičovým fotosenzorům. Trojice čočka-filtr-senzor odpovídá jednomu konkrétnímu obrazovému pixelu. Aby to nebylo tak jednoduché, barevné filtry detekují tři barvy spektra viditelného záření – červenou, zelenou a modrou – systém RGB. Z těchto tří složek lze složit jakoukoli barvu.

Barevné filtry jsou důležité proto, protože fotosenzory jednotlivých pixelů „vidí“ pouze ve škále černá-bílá, tedy monochromaticky. Konkrétní úroveň osvětlení v jednom konkrétním bodu znamená určité množství (kvantum) dopadajícího světla, které je senzorem převedeno na binární číslo. Jeho maximální velikost určuje dynamiku obrazu a udává se v bitech. Setkat se tak můžeme nejčastěji s 8 b, 10 b, 12 b, 16 b a např. i s 24 b. Minimální úroveň – černá má hodnotu 0, maximální např. při rozlišení 10 b, tedy bílá nebo nejsytější červená, zelená nebo modrá (podle filtru, který je nad fotosenzorem) má hodnotu 1024.

My ale z digitálních formátů ukládaných ve výpočetní technice víme, že se jeden konkrétní pixel skládá v systému RGB ze třech složek, přičemž jsem uvedl, že každý fyzický obrazový pixel na obrazovém senzoru může být červený, zelený nebo modrý. Jaká je tedy souvislost? Je to ve skutečnosti tak, že se několik sousedních fyzických pixelů skládá algoritmem do jednoho, který se dále uloží do výsledného datového souboru, např. JPEG. Tyto fyzické pixely jsou čtyři, konkrétně BGGR. Na obrázku výše je to kupříkladu z prvního řádku BG a z druhého řádku GR. Dva zelené body jsou zde proto, protože naše lidské oko je nejcitlivější na zelenou barvu, a takto jej svým způsobem simulujeme. Proces, kterým se z těchto čtyřech fyzických pixelů dostane jeden „logický“ se nazývá demosaicing nebo také debayering. Výsledkem je, že se nám na datové úložiště zapíše obrazová informace ve stejném rozlišení, jako je rozlišení fyzického senzoru/čipu. Tedy z 5 Mpx senzoru dostaneme obrázek ve formátu JPEG v rozlišení 5 Mpx. Debayeringem ale přijdeme o některé informace, třeba ostrost obrazu.

RAW

Digitální fotoaparáty, a zejména digitální zrcadlovky, umožňují ukládat fotografie jak je formátech JPEG, tak také RAW (DNG). Formát RAW by měl obsahovat surová data, které jsou nasnímána příslušným obrazovým senzorem bez dalších algoritmických úprav, tedy bez vyvážení bílé barvy, debayeringu, atp. Na takovou fotografii by se nám moc dobře nekoukalo, protože by byla mdlá a hlavně černobílá. Barevnou z ní dělá právě proces debayeringu, kde speciální algoritmus ví, který fyzický obrazový pixel obsahuje kterou konkrétní barevnou informaci (i když v těchto datech je uložena jako intenzita světla) a tu společně s několika okolními „smísí.“

Fotografování bez Bayerovy masky

Co když ale na obrazovém senzoru/čipu nemáme vrstvu Bayerovy masky (a samozřejmě také nemáme vrstvu mikročoček)? V případě, že fotoaparát provede debayering automaticky a uloží fotografii do formátu JPEG, bude výsledkem ne úplně pěkný obrázek bez barevné informace (i když bude obsahovat tři barevné vrstvy – kanály obsahující namapované informace z procesu debayeringu). Automatika totiž Bayerovu masku předpokládá a použité algoritmy špatně vyhodnotí data přicházející z optického senzoru. Co bude „rozbité“ určitě, je vyvážení bílé barvy.

Pokud vezmeme RAW data a převedeme je v nějakém konverzním programu bez výběru možnosti nepoužívat debayering (programy většinou ale tuto možnost nenabízí), dopadneme podobně. Opět bude výsledný obrázek obsahovat tři barevné vrstvy (červenou, zelenou a modrou) s patřičně namapovanými daty. To proto, že v hlavičce datového souboru program zjistí, že data jsou uložena jako např. BGGR, tedy pro systém RGB.

V tuto chvíli potřebujeme konverzní program přesvědčit, že zpracovávaný soubor RAW neobsahuje barevná obrazová data, ale data monochromatická. Výsledkem bude poměrně ostrá monochromatická fotografie s pouze jedním kanálem, místo třech – R-G-B.

Na následujícím obrázku je porovnání zpracování RAW dat programem dcraw z fotoaparátu Canon PowerShot A710 IS (podpora RAW díky CHDK) a kamery k Raspberry Pi (ov5647). Fotoaparát Canon PowerShot A710 IS má stále Bayerovu masku (černé body jsou vadné fyzické pixely). Kamera k Raspberry Pi je bez Bayerovy masky (nicméně elektronika ani firmware o tom nevědí).


Obrázek doporučuji rozkliknout a ještě zvětšit, aby byly patrné rozdíly.

První obrázek vlevo nahoře je výřez z JPEG obrázku pořízeným z fotoaparátu (Canon) přepnutém do režimu Black&White (režim vylepšení barev) – bohužel obsahuje tři kanály R-G-B a tedy není „správně“ monochromatický. Obrázek pod ním je JPEG z kamery RaspberryPi, přičemž si lze všimnout, že si elektronika a firmware s absencí Bayerovy masky neporadily – špatné vyvážení bílé, fotografie se tváří barevně.

Druhá sada obrázků obsahuje výřezy z TIFF získaných pomocí programu dcraw s parametry -D (přímý RAW bez škálování a dalších algoritmů) a -6 (16-bit hloubka – dynamický rozsah). Tento režim nechává data jak jsou a výsledný obrázek proto obsahuje pouze jeden monochromatický kanál.  U fotoaparátu (Canon) vidíme výraznou mřížku danou filtry Bayerovy masky. U výstupu z dat kamery pro RPI vidíme čisté přechody a hrany – v porovnání s obrázkem vlevo nahoře (B&W režim Canonu), ten z RPi není dále nikterak upravovaný.

Třetí sada obsahuje výřezy z TIFF získaných pomocí programu dcraw s parametry -d (RAW s aplikováním škálovacích a jiných algoritmů, ale stále poměrně čistý RAW) a -6 (16-bit hloubka – dynamický rozsah). Výřez z dat z fotoaparátu obsahuje výraznou mřížku danou filtry Bayerovy masky. Data z kamery RPi obsahují drobnou mřížku a je znát, že některý z použitých algoritmů očekává Bayerovu masku.

Čtvrtá sada obsahuje výřezy z TIFF získaných pomocí programu dcraw s parametry -f (interpolace RGGB) a -6 (16-bit hloubka – dynamický rozsah). Prakticky se jedná o RAW data s aplikovaným algoritmem debayeringu. Výstup obsahuje tři barevné kanály – R-G-B. U fotoaparátu (Canon) je to to, co očekáváme – barevný ošklivý obrázek bez vyvážení bílé a dalších algoritmů. V případě kamery k RPi nejsme také zaskočeni. Program dcraw očekává data pořízená průchodem Bayerovy masky, ale místo toho má pole jasu fyzických pixelů – výsledek je podobný jako ten v první sadě, tam je ale ještě aplikován algoritmus formátu JPEG firmwarem RPi.

Nejlépe nám tedy vychází výstup z fotoaparátu (Canon) v režimu B&W, a výstup z programu dcraw s parametry -D -6, přičemž musíme výsledek ještě upravit v nějakém dalším grafickém rastrovém editoru, jako Gimp či Adobe Photoshop.

Závěr

Fotografování senzorem bez Bayerovy masky není pro každého, jelikož musíme každou takto pořízenou fotografii v RAW ještě dále převádět a upravovat. Takto upravený fotoaparát má také značně degradovanou funkčnost, protože použití „inteligentních“ algoritmů a režimů nemůžeme použít vůbec nebo pracují špatně. Z našeho fotoaparátu se tak může stát nepotřebný kus plastu a kovu.

Pokud se ale věnujeme fotografování astronomických objektů, upravený fotoaparát nám přinese kvalitnější záběry. A to hlavně při použití speciálních úzkopásmových spektrálních filtrů.

Pokud nás ale ani to nedokáže zastavit, výsledek rozhodně stojí za to.

1 komentář u „Odstranění Bayerovy mřížky ze senzoru kamery nebo fotoaparátu

  1. Pingback: Odstranění Bayerovy mřížky ze senzoru kamery pro Raspberry Pi (a případně i jiných čipů) | brichacek.net

Leave a Reply