Nezařazené

Ještě o interpolaci

O interpolaci jsem psal zde na Digineffu poprvé před sedmi lety. Tento pojem začal být aktuální o rok později, když se začalo diskutovat o snímačích firmy Foveon. Nicméně pojem je aktuální dodnes a myslím, že je třeba se k němu vrátit.

Jde o to, že firma DxO Optic přichází s verzí Pro v5 svého softwaru pro úpravu fotografie, mimo jiné obsahující RAW konvertor. Nový software specifickým způsobem řeší generování barevného obrazu. V této souvislosti se hovoří o demosaikování, tedy o generování obrazu z „mozaiky“ tvořené barevnými filtry na snímači. Čímž jsem si vzpomněl na polemiku, která se kolem pojmu interpolace vedla – a shrnutí si můžete přečíst v článku Radky na Paladixu.
Jádro sporu je v interpretaci způsobu, jak se barevný obraz získává. Pro názornost si ukažme schéma, jak jsou rozloženy v tzv. Bayerově matici barevné filtry na světlocitlivých buňkách snímače:

Když se na obrázek podíváte, uvidíte, že zelených filtrů je dvakrát tolik než modrých a než červených. Vypadá to asi takto:

Rozložení červených, zelených a modrých filtrů v matici.

Podobný nákres má Radka na Paladixu – ono to tak skutečně je. Z toho tedy vyplývá, že barevné kanály RGB (červený, zelený a modrý) jsou neúplné, děravé, a to tak, že červený s modrým jsou dvojnásob děravé, než zelený. O tom nemá smysl se přít, tak to prostě je.
To, co je předmětem sporu je to, zdali se barevná informace pro jednotlivé kanály vytvoří prostou interpolací, tedy dopočtem hodnot sousedních buněk. Asi tak, jak je na tomto schématu, kde dopočítané buňky jsou slabší, původní syté:

Schéma interpolace barevných kanálů. Původní hodnoty jsou syté, interpolované jsou světlé.

I Radka má něco podobného na Paladixu. Z této představy, že se barevné kanály vytvářejí dopočtem sousedních hodnot z množiny buněk se červenými, zelenými a modrými filtry, se odvozuje debata o úplnosti barevného obrazu, o rozlišení – a na tom staví svoji reklamu i Foveon, který má podobné obrázky jako jsou zde nahoře ve svých materiálech.

Moje stanovisko bylo a zůstává takové, že takto se barevný obraz nevytváří, že nejde o jednoduchou interpolaci ve smyslu, jak ji definuje slovník cizích slov přibližný výpočet hodnot funkce v bodě ležícím uvnitř intervalu z hodnot funkce v krajních, příp. i některých vnitřních bodech intervalu. Dále tvrdím, že „děravost“ znázorněná na schématu nesouvisí s rozlišením, jelikož jasová informace je kompletní, informace se sbírá ve všech buňkách snímače. Stačí si prohlédnout kanály v režimu LAB, který zobrazuje zvlášť jasovou složku (ta drží kresbu) a zvlášť dvě barevné složky (ty nesou část informace o barvách – část proto, že celá informace obsahuje jasovou složku také). Nahoře je barevný obrázek a jasová složka, dole dvě barevné:

Z toho důvodu pokládám za zavádějící Radčinu formulaci, cituji:
Abychom obdrželi normální obrázek, kde hodnoty intenzit barevných kanálů známe v týchž bodech, je potřeba kanály převzorkovat. Jinými slovy, je potřeba odhadnout hodnoty kanálů ve zvolených bodech na základě známých hodnot, čili je nutné data interpolovat . Tím spíš, že tato formulace je názorně prezentována tak, jak bylo předvedeno na schématech nahoře. Dále v této souvislosti pokládám za zavádějící, když autorka napíše, že v praxi se proto používají složitější metody interpolace, založené na modelech, které lépe vystihují realitu. To samozřejmě tvrdím od samého začátku. Pak je ale slovíčkaření, jestli tyhle „složitější metody“ nazveme interpolací anebo komparací, jak jsem to dělal já, tedy porovnáním. Já se klidně tohoto pojmu „komparace“ vzdám a bez problému přistoupím na pojem „interpolace“ – jen to tvrdím, že nejde o dopočítávání sousedních hodnot v rámci hodnot jednoho barevného filtru.

Aby bylo jasno, tak tedy ještě jednou a trochu jinak. Barevná informace nevzniká výpočtem na základě hodnot jenom z červených a jenom zelených a jenom modrých buněk. Barevná informace vzniká výpočtem, zpracováním dat získaných z červeních a také zelených a také modrých buněk. Tomu výpočtu můžeme říkat jakkoli, třeba interpolace (i když mi to nepřipadá správné) nebo komparace (i když je to „nevědecké“). Jde jen o to, že ucelená barevná informace nevzniká z „děravého“ červeného a zeleného a modrého obrazu.

Ještě úplně nakonec: myslím si, že mnohá nedorozumění plynou z falešné představy, že RGB je něco konkrétního, jako barevné vrstvy ve filmové emulzi. Bayerova maska má RGB filtry, to je pravda. Vše další je ale matematika a interpretace. My nejčastěji pracujeme v režimu RGB. Zrovna tak se ale dá pracovat v režimu LAB a určité úkony děláme v režimu HSL. No a do čtvrtice máme interpretaci CMYK. Není nejmenší důvod k tomu si myslet, že interpretace RGB je cosi jediné možné, už proto, že i samotný JPEG záznam není v RGB (nemá žádné tři „oddíly“, kde by byly separátně zapsané hodnoty červené, zelené a modré, ale je zapsán v interpretaci YCbCr, tedy jasová složka plus dvě barevné). Tím méně pak existuje nějaké „Bayerova interpolace“, to je čirý výmysl, který vznikl v žáru internetových diskusí.

Pokračování článku zde.

O interpolaci jsem psal zde na Digineffu poprvé před sedmi lety. Tento pojem začal být aktuální o rok později, když se začalo diskutovat o snímačích firmy Foveon. Nicméně pojem je aktuální dodnes a myslím, že je třeba se k němu vrátit.

Jde o to, že firma DxO Optic přichází s verzí Pro v5 svého softwaru pro úpravu fotografie, mimo jiné obsahující RAW konvertor. Nový software specifickým způsobem řeší generování barevného obrazu. V této souvislosti se hovoří o demosaikování, tedy o generování obrazu z „mozaiky“ tvořené barevnými filtry na snímači. Čímž jsem si vzpomněl na polemiku, která se kolem pojmu interpolace vedla – a shrnutí si můžete přečíst v článku Radky na Paladixu.
Jádro sporu je v interpretaci způsobu, jak se barevný obraz získává. Pro názornost si ukažme schéma, jak jsou rozloženy v tzv. Bayerově matici barevné filtry na světlocitlivých buňkách snímače:

Když se na obrázek podíváte, uvidíte, že zelených filtrů je dvakrát tolik než modrých a než červených. Vypadá to asi takto:

Rozložení červených, zelených a modrých filtrů v matici.

Podobný nákres má Radka na Paladixu – ono to tak skutečně je. Z toho tedy vyplývá, že barevné kanály RGB (červený, zelený a modrý) jsou neúplné, děravé, a to tak, že červený s modrým jsou dvojnásob děravé, než zelený. O tom nemá smysl se přít, tak to prostě je.
To, co je předmětem sporu je to, zdali se barevná informace pro jednotlivé kanály vytvoří prostou interpolací, tedy dopočtem hodnot sousedních buněk. Asi tak, jak je na tomto schématu, kde dopočítané buňky jsou slabší, původní syté:

Schéma interpolace barevných kanálů. Původní hodnoty jsou syté, interpolované jsou světlé.

I Radka má něco podobného na Paladixu. Z této představy, že se barevné kanály vytvářejí dopočtem sousedních hodnot z množiny buněk se červenými, zelenými a modrými filtry, se odvozuje debata o úplnosti barevného obrazu, o rozlišení – a na tom staví svoji reklamu i Foveon, který má podobné obrázky jako jsou zde nahoře ve svých materiálech.

Moje stanovisko bylo a zůstává takové, že takto se barevný obraz nevytváří, že nejde o jednoduchou interpolaci ve smyslu, jak ji definuje slovník cizích slov přibližný výpočet hodnot funkce v bodě ležícím uvnitř intervalu z hodnot funkce v krajních, příp. i některých vnitřních bodech intervalu. Dále tvrdím, že „děravost“ znázorněná na schématu nesouvisí s rozlišením, jelikož jasová informace je kompletní, informace se sbírá ve všech buňkách snímače. Stačí si prohlédnout kanály v režimu LAB, který zobrazuje zvlášť jasovou složku (ta drží kresbu) a zvlášť dvě barevné složky (ty nesou část informace o barvách – část proto, že celá informace obsahuje jasovou složku také). Nahoře je barevný obrázek a jasová složka, dole dvě barevné:

Z toho důvodu pokládám za zavádějící Radčinu formulaci, cituji:
Abychom obdrželi normální obrázek, kde hodnoty intenzit barevných kanálů známe v týchž bodech, je potřeba kanály převzorkovat. Jinými slovy, je potřeba odhadnout hodnoty kanálů ve zvolených bodech na základě známých hodnot, čili je nutné data interpolovat . Tím spíš, že tato formulace je názorně prezentována tak, jak bylo předvedeno na schématech nahoře. Dále v této souvislosti pokládám za zavádějící, když autorka napíše, že v praxi se proto používají složitější metody interpolace, založené na modelech, které lépe vystihují realitu. To samozřejmě tvrdím od samého začátku. Pak je ale slovíčkaření, jestli tyhle „složitější metody“ nazveme interpolací anebo komparací, jak jsem to dělal já, tedy porovnáním. Já se klidně tohoto pojmu „komparace“ vzdám a bez problému přistoupím na pojem „interpolace“ – jen to tvrdím, že nejde o dopočítávání sousedních hodnot v rámci hodnot jednoho barevného filtru.

Aby bylo jasno, tak tedy ještě jednou a trochu jinak. Barevná informace nevzniká výpočtem na základě hodnot jenom z červených a jenom zelených a jenom modrých buněk. Barevná informace vzniká výpočtem, zpracováním dat získaných z červeních a také zelených a také modrých buněk. Tomu výpočtu můžeme říkat jakkoli, třeba interpolace (i když mi to nepřipadá správné) nebo komparace (i když je to „nevědecké“). Jde jen o to, že ucelená barevná informace nevzniká z „děravého“ červeného a zeleného a modrého obrazu.

Ještě úplně nakonec: myslím si, že mnohá nedorozumění plynou z falešné představy, že RGB je něco konkrétního, jako barevné vrstvy ve filmové emulzi. Bayerova maska má RGB filtry, to je pravda. Vše další je ale matematika a interpretace. My nejčastěji pracujeme v režimu RGB. Zrovna tak se ale dá pracovat v režimu LAB a určité úkony děláme v režimu HSL. No a do čtvrtice máme interpretaci CMYK. Není nejmenší důvod k tomu si myslet, že interpretace RGB je cosi jediné možné, už proto, že i samotný JPEG záznam není v RGB (nemá žádné tři „oddíly“, kde by byly separátně zapsané hodnoty červené, zelené a modré, ale je zapsán v interpretaci YCbCr, tedy jasová složka plus dvě barevné). Tím méně pak existuje nějaké „Bayerova interpolace“, to je čirý výmysl, který vznikl v žáru internetových diskusí.

Pokračování článku zde.