Oppgave 1 - Histogrammer
Anta at vi har et 512 x 512 bilde med 256 trinn i gråtoneskalaen. Bildet inneholder i utgangspunktet bare en "bakgrunn" med klar trend, slik at intensiteten er jevnt økende fra venstre til høyre kant i bildet, og slik at bakgrunnsintensiteten er 100 i hele venstre kant av bildet og at den øker jevnt horisontalt til 163 i hele høyre kant av bildet.
- Forklar og skisser på papiret hvordan histogrammet og det normaliserte histogrammet for et slikt bilde ser ut.
- Anta nå at en mørk tekst legges oppå denne bakgrunnen. Tekst-pikslene dekker 1/4 av bildet, og hvert tekst piksel har en gråtone som er 25 gråtonetrinn lavere enn den lokale bakgrunnen. Forklar og skisser hvordan histogrammet ser ut for bilde med bakgrunn pluss tekst.
Oppgave 2 - Programmering av histogramfunksjon
I Matlab kan man få tilgang til et bildes histogram ved bruk av f.eks. funksjonene imhist og hist (h = hist(bilde(:), 0:255);). Programmer ved hjelp av for-løkker din egen versjon av histogramfunksjonen. Du kan anta at input-bildet inneholder positive heltall.
Oppgave 3 - Lineær gråtonetransform
Anta at et bilde har middelverdi lik 100 og varians lik 400, altså m=100 og sigma^2=400.
- Hvis bildet var lagret som et 8-bits helltallsbilde, hva ville du kunne si om "lysheten/mørkheten" og kontrasten til bildet? Hint/fremgangsforslag: Hva er bildets standardavvik, sigma? Anta at histogrammet likner en Gauss-funksjon (har klokkeform), og skisser histogrammet.
- Hvis hovedvekten av pikselene lå i intervallet [50,150] og du ville benytte en lineær transform for å maksimere kontrasten i dette intervallet, og bildet skulle lagres som 8-bit, hva ville koeffisientene i transformen være?
- Hvis bildet blir sendt igjennom gråtonetransformen: g(x,y) = 2*f(x,y) + 10, hva blir det transformerte bildets middelverdi og varians?
- Hvis jeg ønsker at bildet skal ha m=128 og sigma=64, hvilken lineær transform ville jeg benyttet?
- Hvis bildet hadde et tilnærmet Gaussisk (normalfordelt) histogram, og jeg skulle lagre bildet som 10-bits heltallsverdier, hvilken lineær transform ville du valgt om kun ca 5% av pikslene kunne bli klipt?
Oppgave 4 - Programmering av lineær gråtonetransform
Programmer et Matlab-program som utfører en lineær gråtonetransform slik at bildets middelverdi og standardavvik blir endret til satte parametre, henholdsvis m_t og sigma_t. Prøv programmet med flere forskjellige input-parametre. Studer resultatbildenes histogrammer.
Oppgave 5 - Ikke-lineære transformer
- Tegn og forklar hvordan de følgende gråtonetransformene endrer kontrasten i bildet: Logaritmisk, eksponentiell og kvadratrotskalering.
- Anta at et bildes piksler hovedsakelig består av lavintensitets-piksler, og spredningen mellom histogramsøylene økte med økt intensitet. Hvilken av de nevnte transformene ville du benyttet for å gjøre kontrasten i bildet bedre om vi visuelt skulle tolke bildet?
- Hvis monitoren din har en sammenheng mellom pikselverdier og visningsintensitet som beskrevet i ligning (3.2-3) med gamma=5, hvilken gråtonetransform ville kunne kompensert for denne avbildningsfeilen?
Oppgave 6 - Sanntidseksperimentering med gråtonetransformer
Benytt den interaktive Java-appleten under http://www.imageprocessingbasics.com/image-graylevel-transforms/ til å gjøre deg kjent med effektene av parametrene i den linære gråtonetransformen, og hvilken effekt den logaritmiske og exponentielle transformen har på både selve bildet og histogrammet.