IN2070 vår 2021 - UKEOPPGAVER 3

Disse oppgavene omhandler histogrammer og parametriske gråtonetransformasjoner.

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 en klar trend, slik at intensiteten øker trinnvis fra venstre til høyre kant i bildet, og slik at bakgrunnsintensiteten er 100 i hele venstre kant av bildet mens den er 163 i hele høyre kant av bildet.

  1. Forklar og skisser hvordan histogrammet og det normaliserte histogrammet for et slikt bilde ser ut.
  2. 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 bildet 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);). I Python kan man få bildets histogram ved f.eks bruke numpy.histogram fra modulen numpy. Programmer ved hjelp av for-løkker din egen versjon av histogramfunksjonen. Du kan anta at vi har heltallige pikselverdier mellom 0 og 255.

Oppgave 3 - Lineær gråtonetransform

Anta at et bilde har middelverdi lik 100 og varians lik 400, altså μ = 100 og σ^2 = 400.

  1. Hvis bildet var lagret som et 8-bits helltallsbilde, hva ville du kunne si om "lysheten/mørkheten" og kontrasten til bildet? Hint: Hva er bildets standardavvik, sigma? Anta at histogrammet likner en Gauss-funksjon (har klokkeform), og skisser histogrammet.
  2. 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?
  3. Hvis bildet blir sendt igjennom gråtonetransformen: g(x,y) = 2*f(x,y) + 10, hva blir det transformerte bildets middelverdi og varians?
  4. Hvis jeg ønsker at bildet skal ha μ = 128 og σ = 64, hvilken lineær transform ville jeg benyttet?
  5. 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 godtas bli klipt?

Oppgave 4 - Programmering av lineær gråtonetransform

Programmer et Matlab- eller Python-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

  1. Tegn og forklar hvordan de følgende gråtonetransformene endrer kontrasten i bildet: Logaritmisk, eksponentiell og kvadratrotskalering.
  2. 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?
  3. Hvis skjermen 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 (støtteoppgave) - Sanntidseksperimentering med gråtonetransformasjoner

Benytt den interaktive Java-appleten under http://www.imageprocessingbasics.com/image-graylevel-transforms/ til å eksperimentere med gråtonetransformer. Gjør deg kjent med effektene av parametervalgene i spesielt de lineære transformene.

 

** Merk: Se Ukeoppgaver 1 ang. disse Java-appletene.

Publisert 13. jan. 2021 07:55 - Sist endret 16. feb. 2021 10:52