Rockford kirjoitti: Jäin kuitenkin miettimään että teetkö nyt siis tuon RAW - > harmaasävy -muunnoksen siis täysin ilman väri-interpolaatiota?
Kyllä - viereiset kennon solut ei vaikuta mitenkään muunnoksessa.
Rockford kirjoitti: Eli pyrit vain skaalaamaan R/G/B-Bayer-pikselit samalle tasolle mustan/valkoisen pisteen referensseillä? Siis käytännössä sitten annat jokaiselle harmaasävypikselille arvoksi kyseitä pikseliä vastaavan Bayer-pikselin arvon skaalattuna sen mukaan mikä osaväri on kyseessä?
Kyllä. näin on.
Rockford kirjoitti:Jos teet noin kuten yllä kuvittelen, luulisin ihan mutuna, että noi mainitsemasi sahalaidat (jotka ei ehkä ole ihan sitä mitä sahalaidasta tulee ekana mieleen jos ymmärsin mitä tarkoitat) johtuu eri osa-värien vaatimista erilaisista gamma-korjauksista (tai vastaaviksta korjauksista, miksi niitä nyt pitäisikään oikeasti kutsua).
Kun lineaariset operation on suoritettu kennon solujen valotusarvoille, tehdään gammakorjaus, joka on epälineerinen. Se on sama kaikille riippumatta solun tyypistä (R, G tai B), eikä siihenkään vaikuta viereiset solut.
Algoritmi
Algoritmi värikanavien muuntamiseksi samanarvoisiksi harmaasävyltään (tässä muunnetaan R solut vastaamaan G soluja):
1) Vaalealle ja tummalle referenssialueelle (3x3 solua) lasketaan keskiarvo R-soluille. Saadaan keskiarvot Rrw (= keskiarvo punaisista vaaleista soluista) ja Rrb (= keskiarvo punaisista tummista soluista).
2) Vaalealle ja tummalle referenssialueelle (3x3 solua) lasketaan keskiarvo G-soluille. Saadaan keskiarvot Grw (= keskiarvo vihreistä vaaleista soluista) ja Grb (= keskiarvo vihreistä tummista soluista).
3) Vaaidtaan että punaiset R-solut ovat saman arvoisia (yhtä herkkiä) G-solujen kanssa. Lasketaan muuntosuoran parametrit (y = ax + b):
a = (Grw - Grb) / (Rrw - Rrb)
b = Grb - a*Rrb
4) Muunnetaan kennon kaikkien punaisten solujen (Rs) arvot kaavalla:
Ruusi = a*Rs + b
Siniset korjataan vastaavasti vihreät referenssinä.
Lopuksi olen laajentanut lukualueen 16-bittiseksi, jotta tallennettavat tiedostot olisivat samassa skaalassa, vaikka A/D-muunnin antaisi 12 tai 14-bittistä dataa. Myös mustan taso on siirretty tässä yhteydessä nollaan.
Vasta näille arvoille on tehty gammakorjaus.
PS. Noi välitulokset tallennetaan 16-bittiseen sanaan, vaikka itse laskut tehdään liukuluvuilla. Jonkinlaista pyöristysvirhettä voi seurata.