IN3370 h?st 2024 - UKEOPPGAVER 3

Disse oppgavene omhandler gr?tonetransformasjoner.

Oppgave 1 - Programmering av histogramfunksjon

F?RST: S?rg for at du er i stand til ? forklare hvordan et histogram reflekterer forskjellige egenskaper ved et bilde!

I Python kan man f? tilgang til et bildes histogram ved bruk av f.eks. funksjonene plt.hist og np.histogram (h = np.histogram(bilde, bins=256, range=[0, 255])). Her skal du programmere ved hjelp av for-l?kker din egen versjon av histogramfunksjonen. Du kan anta at vi har heltallige pikselverdier mellom 0 og 255.

Oppgave 2 - 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 3 - Programmering av line?r gr?tonetransform

Programmer et 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 4 - Ikke-line?re, parametriske 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 5 (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.

Oppgave 6 - Oppgave 3.6 i DIP

Forklar hvorfor man ved bruk av diskret histogramugjevning generelt ikke f?r et helt flatt histogram.

Oppgave 7 - Programmering av histogramutjenving

Programmer et Python-program som leser inn et 8 bits png-bilde [se ukeoppgaver 1] og utf?rer histogramutjevning. Kj?r programmet med car.png som inputbilde og se om resultatet blir likt eksemplet fra forelesningen.

Oppgave 8 - Programmering av histogramtilpasning

Lag en Python-implementasjon av histogramtilpasning til et vilk?rlig histogram basert p? fremgangsm?ten forklart p? lysark s. 46 ("fremgangsm?te 2").

Oppgave 9 - Oppgave 3.12 i DIP

Forklar hvordan man kan oppdatere histogrammene ved lokale gr?tonetransformer (i steden for ? regne ut helt nytt histogram for hvert vindu).

Oppgave 10 - Eksperimentering med lokale gr?tonetransformer (**)

Om du har tid og t?lmodighet, benytt Java-appleten under http://www.imageprocessingbasics.com/local-graylevel-mapping/ til ? gj?re deg kjent med parametrene i de lokale gr?tonetransformene vi har snakket om p? forelesningen.

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

Publisert 2. sep. 2024 09:00 - Sist endret 2. sep. 2024 09:01