Eksamen i UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet INF 2310 Digital bildebehandling Eksamensdag: Tirsdag 18. mai - tirsdag 1. juni 2004 Tid for eksamen: 18. mai 2004 kl 09:00 1. juni 2004 kl 14.00 Oppgavesettet er på 6 sider. Vedlegg: Tillatte hjelpemidler: Ingen Kontroller at oppgavesettet er komplett før du begynner å besvare spørsmålene. (Fortsettes på side 2.)
Eksamen i INF 2310, Tirsdag 18. mai - tirsdag 1. juni 2004 Side 2 Prosjektoppgaven er et individuelt arbeid, slik at hver student skal levere egen besvarelse. Det anbefales at arbeidet med besvarelsen utføres ved Institutt for informatikk (Ifi), hvor både maskin- og programvare er tilrettelagt for å løse de oppgavene som er gitt. I eksamensperioden vil ekspedisjonen ved Ifi kunne formidle kontakt til kursansvarlige. Send ikke mail til en lærer. Hvis det skulle være nødvendig med presiseringer til oppgaven vil det bli publisert på kursets hjemmeside. Resultatene skal presenteres i en skriftlig rapport der teori, utskrifter av program-kode, og figurer og bilder vises. Det er en fordel om rapporten er laget med en egnet tekstbehandler, men deler som er teknisk vanskelige å produsere kan være håndtegnet. Ønsker du å konvertere et PNG-bilde til postscript for utskrift, kan du f.eks. bruke programmet display eller convert. Frist for innlevering er tirsdag 1. juni 2004 kl 14:00. Besvarelsen leveres i Ifi s ekspedisjon i form av en utskrift på papir i tre - 3 - eksemplarer. Sett ikke navn på besvarelsen. Besvarelsen skal påføres et kandidatnummer før innlevering, slik at kandidatnavn skal være ukjent for sensorene. Kandidatnummer finnes på Studentweb ca en uke før innleveringsfristen. Hvis ikke annet er spesifikt avtalt på forhånd, er det bare den innleverte besvarelsen - i den form det er bedt om - som blir bedømt. Merk at den skriftlige besvarelsen skal leveres i tre identiske eksemplarer! Ettersom arbeidet med oppgaven er fordelt over to uker, vil det ikke bli gitt utsettelse med innlevering pga kollisjoner med andre eksamener i denne perioden. Eventuell sykdom under eksamen behandles etter gjeldende regler. Et tilfeldig utvalg av studentene vil i tillegg komme opp til muntlig eksamen, som avholdes i uke 25 (14.-18. juni). Dersom sensor og faglærere ut fra en foreløpig gjennomgang av de skriftlige besvarelsene føler behov for å avklare noen tvilstilfeller, vil disse også bli innkalt til muntlig eksamen. De som skal opp til muntlig eksamen vil få beskjed om dette en uke før muntlig eksamen, dvs i uke 24 (7.-11. juni). Beskjed om dette vil bli gitt på kursets nettside, og ved oppslag på www.ifi.uio.no/studinf/sistenytt. Studentene må selv sørge for å skaffe seg denne informasjon ved å sjekke kursets hjemmeside, eller lese oppslag på Ifi. Den muntlige eksaminasjonen vil først og fremst dreie seg om punkter i det innleverte skriftlige arbeidet. Besvarelsen på oppgaven skal derfor være et selvstendig arbeid! (Fortsettes på side 3.)
Eksamen i INF 2310, Tirsdag 18. mai - tirsdag 1. juni 2004 Side 3 Oppgave 1 Histogram og terskling Anta at vi har et digitalt bilde med gråtoner z [0, 255], der det ikke-normaliserte histogrammet til bakgrunnspikslene, h b (z), er gitt ved 0 for z [0, 95] 1 h b (z) = 2 sin ( ( ) πy 128) 1 + sin( 2.5πy 128, y = z 96 for z [96, 223] 0 for z [224, 255] og det tilsvarende ikke-normaliserte histogrammet til forgrunnspikslene, h f (z), er gitt ved 0 ( ) for z [0, 47] h f (z) = sin 2πx 128, x = z 48 for z [48, 111] 0 for z [112, 255] La a priori sannsynlighetene være gitt ved 1a P b /P f = 3 Vis steg for steg hvordan du kan normalisere histogrammene ovenfor og skalere dem med a priori sannsynlighet, slik at du kommer fram til en figur der du kan finne den terskelverdi T 0 som gir minst mulig feil ved terskling av det bildet vi her snakker om. Angi omtrentlig verdi for T 0 og marker den i figuren. 1b Lag og plott det totale, normaliserte histogrammet. Finn middelverdien µ 0 av gråtoneverdiene i bildet, og bruk denne som start-verdi i Ridler og Calvards iterative tersklingsalgoritme. Hvilken terskleverdi T RC konvergerer dette mot? Vil den totale feilen minske eller øke etter hvert som du itererer? Forklar hvorfor. 1c Implementer Otsu s tersklingsmetode fra forelesningsnotatene, og anvend den på det totale histogrammet fra punkt b. Angi de forbehold du har tatt i koden. Gi en kort begrunnelse for at T Otsu T 0 for dette histogrammet. 1d Ingen av tersklingsmetodene gir et resultat i nærheten av T 0 fra punkt a. Ville en histogramutjevning eller et lurt valg av en histogramtransform kunne gitt terskelverdier T RC og T Otsu nærmere T 0 for dette bildet? Gi en kort begrunnelse for svaret. (Fortsettes på side 4.)
Eksamen i INF 2310, Tirsdag 18. mai - tirsdag 1. juni 2004 Side 4 Oppgave 2 Operasjoner i Fourier-domenet I denne oppgaven skal vi se på manipulering av Fourier-transformen til et bilde. Til å løse oppgaven bør du benytte ImageFFT-klassen fra Efford-biblioteket. Til mange av deloppgavene skal du implementere metoder. Da skal kildekoden til metoden inkluderes under dette delpunktet i besvarelsen. 2a Skriv en metode med signatur public void fourierspectrum(bufferedimage inimage, BufferedImage fourspecimage) som finner Fourier-transformen til bildet inimage og returnerer magnituden til Fourierspekteret i fourspecimage. Programmet skal bruke ImageFFT-klassen fra Efford-biblioteket. Bruk metoden til å finne spekteret til bildet inf2310/bilder/lena1.png. Kildekoden til metoden vedlegges, samt en utskrift av resultatbildet (spekteret). 2b De fleste bilder vil ha et Fourier-spektrum der det meste av energien er konsentrert rundt lave frekvenser. Du skal nå lage en metode med signatur public void keepsomefrequencies(bufferedimage inimage, BufferedImage outimage, int u0, int v0) som fjerner frekvenser u, v som ikke tilfredsstiller 0 u u 0 og 0 v v 0. Du skal fjerne frekvenser i Fourier-domenet ved å sette både magnitude og fase til 0. Hva slags operasjon på bildet tilsvarer et slikt filter? Videre skal du lage en ny utvidet metode til å filtere bildet slik at vi etter filtrering sitter igjen med kun N koeffisienter. Hvis vi antar at u 0 = v 0 skal metoden finne den u 0 som gir oss tilnærmet N koeffisienter u, v totalt. Anvend metoden på bildet inf2310/bilder/lena1.png. Vis det filtrerte bildet for N=400, samt det tilhørende Fourier-spekteret. Drøft hva slags effekter du ser i det filtrerte bildet og evt. hva disse kan skyldes. Inkluder koden til de to metodene. 2c Prøv så ulike verdier av N og vurder/drøft når du mener at det filtrerte bildet visuelt har omtrent samme kvalitet som originalbildet. Hvilken verdi av N vurderer du som tilstrekkelig? Vis bildet for den verdien av N du mener er tilstrekkelig. 2d Når vi filtrerer bildet introduserer vi feilen e(x, y) = g(x, y) f(x, y), der f(x, y) er originalbildet og g(x, y) er det filtrerte bildet. Implementer en metode med signatur public void imagediff(bufferedimage original, BufferedImage filteredimage) som finner differansen mellom de to bildene, og skalerer denne på en fornuftig måte slik at feilen synes godt i differansebildet. Bruk metoden til å lage differensebildet for den N du valgte (Fortsettes på side 5.)
Eksamen i INF 2310, Tirsdag 18. mai - tirsdag 1. juni 2004 Side 5 over, samt for N=400, og drøft hva slags informasjon/strukturer som fjernes. Inkluder utskrift av disse to differansebildene. 2e Gitt den verdien av N som du mener er tilstrekkelig, vurder hvordan keepsomefrequencisesmetoden kan brukes til å komprimere bilder. Beregn antall koeffisienter du trenger å lagre for bildet lena1.png, og også totalt lagringsbehov i byte for det filtrerte bildet. Du kan se bort fra header-informasjon. Hvor stor kompresjonsrate gir dette sammenlignet med originalbildet? 2f En alternativ måte å filtrere bildet på er å kun beholde de N frekvensene som har størst magnitude, og så sette magnitude og fase til 0 for de resterende frekvensene. Implementer metoden public void keeplargest(bufferedimage inimage, BufferedImage outimage, int N) som gjør dette. inimage og outimage skal være i bildedomenet. For å sortere et array skal du bruke funksjonen Sort, som ligger på inf2310/www_docs/eksamen/sort.jar. For å få tilgang til denne må du utvide din classpath-variabel ved å skrive bash-kommandoen export CLASSPATH=$CLASSPATH: inf2310/www_docs/eksamen/sort.jar i det terminalvinduet som programmet kompileres og kjøres i. Bruk keeplargest med ulike verdier av N. Finn den N som du mener er tilstrekkelig for at det filtrerte bildet visuelt sett har omtrent samme kvalitet som originalbildet. Vis det filtrerte bildet med denne verdien av N. Hint: du sorterer en 2D-array ved å ta en og en linje og legge disse etter hverandre i en lang 1D-array. Bruk det sorterte arrayet til å finne magnitudeterskelverdien. 2g Resonner rundt lagringsbehovet for framgangsmåten i punkt f for å komprimere bildet. Hvor mange byte trenger du for å lagre det filtrerte bildet? (Fortsettes på side 6.)
Eksamen i INF 2310, Tirsdag 18. mai - tirsdag 1. juni 2004 Side 6 Oppgave 3 Konvolusjon og rotasjon Anta at vi trenger et 2D lavpassfilter som er en tilnærmet Gauss-profil både i x- og y-retning, men der profilene i de to retningene er ulike. Filtret er 5 piksler langt i x-retning, og 11 piksler høyt i y-retning. Vi skal produsere dette filtret ved gjentatte konvolusjoner med to enkle 1D filtre, nemlig [1 1] og [1 1] T. 3a Vis i noen detalj hvilken implementasjon av gjentatte konvolusjoner med [1 1] og [1 1] T som gir det minste antall multiplikasjoner og addisjoner ved produksjon av dette 2D filteret. Mange elementer i filteret vil få store verdier. Det endelige filteret skal derfor skaleres slik at maksimumsverdien i filteret blir 255. Det endelige 2D filteret skal skrives ut i form av en tabell med filterkoeffisienter (heltall mellom 0 og 255). Du skal også skrive ut en skaleringsfaktor som er slik at filteret ikke forårsaker noen endring dersom det anvendes på et homogent område i et bilde. Filteret skal også vises som et gråtonebilde som er forstørret slik at vi ser pikslene godt. 3b Finn det filteret vi får ved å rotere filteret ovenfor med π/4 med urviseren. Pass på at filteret bare gir en lavpassfiltrering, og ikke en translasjon når det anvendes på et bilde. Drøft og begrunn valg av metode for geometrisk transform, og forklar fremgangsmåte eller vis den koden du bruker. Også her skal resultatet skaleres slik at maksimumsverdien er 255. Resultatet skal skrives ut på samme måte som ovenfor. 3c Du har nå tilgang til tre forskjellige filtre som i punkt b ovenfor, for vinklene 0, π/4 og π/2, uten ytterligere bruk av rotasjon. Konvolver bildet inf2310/bilder/lena2.png med de tre filtrene, med passende skaleringsfaktorer, slik at filtrene ikke forårsaker noen endring dersom de anvendes på et homogent område i bildet. Lag tre gråtonebilder som inneholder absolutt differanse mellom originalbildet lena2.png og de tre resultatbildene fra filtreringen av lena2.png med de tre filtrene. Pikselverdiene må skaleres slik at differansene kommer tydelig fram. Forklar kort hvordan vi fra disse differansebildene kan se hva de tre filtrene gjør med bildet. Lykke til!