Oppgave, Modul C, Digital Reproduction and Color Management, HiG 2005

Einar Jørgen Haraldseid, 020381, 03HBMETEA

Strategi

Aller først vil jeg få frem fargene i bildet, før jeg begynner med støyfjerning og andre justeringer. Deretter vil jeg fjerne støyen, fordi kontraststrekking og justering av hvitbalanse kan forsterke støyen. Til støyfjerning har jeg valgt median-filteret fra eksempelet, men denne funksjonen må skrives om før å gi farger. Til slutt vil jeg kjøre både «gray world assumption» og komponentstrekking for å justere hvitbalansen i hvert enkelt bilde.

Implementasjon

Dekomponeringen av bayer-mønsteret foregår ved at jeg for hvert punkt finner verdier for hver fargekanal. Hvert punkt inneholder kun én nøyaktig fargekanal, de to andre kanalene må jeg gjette verdien på ved å betrakte punktene rundt. Funksjonen velger riktig metode ut fra hvilke koordinater man befinner seg i. Denne løsningen gjetter seg altså fram til informasjon som ikke er der, men sikrer at bildet får like god oppløsning som CMOS-brikken. Innad i denne funksjonen gjør jeg også en innledende fargekorreksjon. Det ville vært ønskelig å justere hver fargekanal i hvert bilde, men jeg fant at faste verdier fungerte ganske bra i dette tilfellet.

Støyfjerningen er ganske enkelt en mild median-blur. For hver piksel i bildet betrakter man naboene, og velger den midterste verdien. Denne funksjonen fjerner støy og tar god vare på detaljene.

For å finne frem til den beste hvitbalansen bruker jeg både «Gray World Assumption» og komponentstrekking. «Gray World Assumption» er en funksjon som baserer seg på at gjennomsnittsfargen i et normalt bilde er grått, og setter sort- og hvitpunkt etter denne antagelsen. Den regner ut gjennomsnittsfargen i det aktuelle bildet, og gjør nødvendige justeringer for å oppnå et grått gjennomsnitt. Dette fører imidlertid ofte til at bildet faktisk blir svært grått, så til slutt tyr jeg til komponentstrekking.

Komponentstrekking baserer seg på at de lyseste verdiene i et bilde representerer fargen på lyset, og at de mørkeste verdiene faktisk er svarte. Dette er ikke nødvendigvis alltid sant, men i alle tilfelle fungerer komponentstrekking som en motvekt mot at «Gray World Assumption» genererer et bilde som er for grått.

Kildekode

cmos-fix.lua

Eksempler på resultat

003.png
006.png
007.png