UNIVERSITETET I OSLO Det matematisk-naturvitskaplege fakultet Eksamen i IN 106 Introduksjon til signal- og bilethandsaming Eksamensdag: Onsdag 30. mai - fredag 1. juni 2001 Tid for eksamen: 30. mai 2001 kl 09:00 1. juni 2001 kl 16.00 Oppgåvesettet er på 7 sider. Vedlegg: Ingen Tillatne hjelpemiddel: Kontroller at oppgåvesettet er komplett før du tek til å svare på spørsmåla. Deler av denne eksamensoppgåva skal gjerast ved å nytte program i XITE, spesielt xshow, og ved å nytte MATLAB sine program. Det vert tilrådd at arbeidet med å svare på oppgåva vert gjort ved Institutt for informatikk (I), der både maskin- og programvare er lagt til rette for å løyse dei oppgåvene som er gitt. I eksamensperioden vil ekspedisjonen ved I kunne formidle kontakt til dei kursansvarlege. Send ikkje mail til ein lærar. Bakerst i oppgåvesettet nn du eit lite bibliotek med nyttige MATLABfunksjonar. Når du arbeider med lydsignal, skal du bruke høyretelefon. Resultata skal presenterast i ein skriftleg rapport der teori, utskrifter og gurar laga i MATLAB og bilder frå xshow vert vist. Det er ein fordel om rapporten er laga med ein eigna tekstbehandlar, men delar som er teknisk vanskelege å produsere kan vere handtegna. Svaret på oppgåva skal leverast i form av ei utskrift på papir, om ikkje anna er spesikt avtalt på førehand. Det er berre den innleverte rapporten som vert bedømt, ikkje heimesider, programmer, resultat-ler eller anna som det måtte visast til i rapporten. Svaret på eksamensoppgåva skal leverast i 2 like eksemplar til ekspedisjonen til I innan den gitte fristen, om ikkje utsetjing er gitt av studieadministrasjonen på førehand. Eit tilfeldig utval av studentane vil i tillegg kome opp til muntleg eksamen, som vert halden fredag 22. juni 2001. Om sensor og faglærarar ut frå ein førebels gjennomgang av dei skriftlege svara nn det naudsynt å klare opp nokre tvilstilfelle, vil desse og bli kalla inn til muntleg eksamen 22. juni. Varsel om muntleg eksamen vert gitt fredag 15. juni 2001. Den muntlege eksaminasjonen vil fyrst og framst dreie seg om punkter i det innleverte skriftlege arbeidet. Svaret på oppgåva skal difor vera eit sjølvstendig arbeid! (Framhald på side 2.) Eksamen i IN 106, Onsdag 30. mai - fredag 1. juni 2001 Oppgåve 1 Side 2 Filtrering Vi skal sjå på biletet /hom/in106/img/blod.ti (og blod.img på XITE-format), som er eit elektronmikroskopbilete. Du skal jobbe på ei rad i biletet. Dataene frå den utvalte raden skal du sjå på som eit ein-dimensjonalt signal. Kva for ein rad du skal jobbe med, avheng av din fødselsdato. Skriv vi fødselsdatoen din på forma dd.mm.åå, skal du sjå på to rader gitt ved x=40+dd og x=50+dd. (Vi ser på to rader fordi det kan vere tilfeldige utslag i enkeltrader. Du lyt sjå på begge radene, men i svaret du leverer inn treng du berre vise plott for ei av de to radene.) a) Lag eit plott av dataene i den utvalte raden. Forklar kva du ser i 1D samanlikna med biletet i 2D. b) Gitt eit lter med impulsrespons h = [0.0156 0.0938 0.2344 0.3125 0.234 0.0938 0.0156] Plott absoluttverdien til frekvensresponsen til lteret og forklar kva slags lter dette er. c) Filtrer signalet vha. funksjonen rlt i MATLAB (tilgjengeleg i dsprst toolbox) og vis eit plott av originalen og det ltrerte signalet i same plott. Du skal velje ein del av signalet av lengde t.d. 200 som du plotter. Du vel sjøl startpunktet for delsegmentet. Korleis er det ltrerte signalet samanligna med originalen? d) Korleis kan du lage ei ikkje-kausal utgåve av det ltrerte signalet vha. rlt- funksjonen? Lag ein ikke-kausal versjon av det ltrerte signalet og plott resultatet saman med originalen for same delsegment som over. e) Tenk deg at du har ein hardware-implementasjon av eit FIR-lter med lterlengde 3, FILT3(x,h3) der h3 = [a b c], dvs. du har berre eit lter av lengde 3. Korleis kan du bruke dette til å implementere lteret med impulsrespons gitt i 1a)? f ) Segmentering av signalet. Biletet blod.ti er eit elektronmikroskopbilete av blod. Dei lyse objekta er blodplater og raude blodlekamar. Ei rad i biletet kan sjåast på som eit signal med nokre interessante objekt (dei høge pikselverdiene). Tenk deg at vi er interessert i å nne kantene eller overgangane mellom objekta (høge verdier) og bakgrunnen. Du skal prøve å nne dei sterkaste kontrastane i signalet, dvs. overgangane frå objekt til bakgrunn. Legg fram ein framgangsmåte for å gjere dette. Kombiner gjerne eire enkle operasjonar i ein liten algoritme og test denne i MATLAB. Plott originalen og resultatet ditt. (Framhald på side 3.) Eksamen i IN 106, Onsdag 30. mai - fredag 1. juni 2001 Oppgåve 2 Analyse av eit talesignal Du skal i denne oppgåva arbeide med lydlen a) Side 3 Les inn lydlen female.wav /hom/in106/img/female.wav. vha. funksjonen wavread. Bruk funksjonen soundsc til å høyre på signalet (Husk høyretelefonar!) Sjå MATLAB-verktøykassa for anbefaling om korleis du speler lyd. b) Lag eit plott av spektrogrammet til signalet. Forklar kva spektrogrammet viser samanlikna med lyden du høyrer. c) Eekten av samplingsfrekvens. Så lenge vi jobber i MATLAB kan vi berre studere diskrete signal. Vi kan ikkje studere overgangen fra kontinuerleg til diskret signal (og tilbake til kontinuerleg att), men du skal no studere eekten av å resample eit diskret signal ned til lågare samplingsrate. Lag ein MATLAB-funksjon signal2 = downsamp(signal1,n) signal1. Dersom signal2 innehalde N/n sampler (i heiltalsverdi). som plukkar ut berre kvart n-te sampel frå det originale signalet signal1 inneheld N sampler, skal Bruk funksjonen til å resample lydsignalet slik at samplingsraten halveres fyrst ein gong og så ytterlegare ein gong. Bruk til dømes funksjonen subplot til å vise det originale lydsignalet og dei resampla signala i same plott. Det er mogeleg å høyre på det resampla signalet, med det krevs ikkje at du skal gjere det no. Dersom du vil høyre på det resampla signalet, skal du IKKJE bruke MATLABs funksjonar sound eller soundsc, dei handterer ikkje ulik samplingsfrekvens slik som manualen seier. Du må istaden lagre signalet som ein .wav-l og spele det av frå andre program (enten frå PC eller ved å leggje det på WEB slik som du gjorde i Obligatorisk oppgåve 2). d) Plott spektrogrammet for dei resampla signala og drøft kva dei viser samanlikna med originalsignalet. e) Rekonstruksjon av det resampla signalet. I MATLAB lar det seg ikkje gjere å konvertere det diskrete signalet til eit kontinuerleg signal, men du skal nå prøve å rekonstruere eit signal med same samplingsrate som originalen frå dei resampla signala. Prøv å rekonstruere dei resampla signala med ulike val av interpolasjonsfunksjon med hjelp av tilgjengelege MATLAB-funksjonar. Plott dei rekonstruerte signala saman med originalen. Når du har rekonstruert det resampla signalet til same samplingsrate som originalen, kan du høyre på signalet vha. soundsc i MATLAB. Korleis har resamplinga og ulike val av interpolasjonsfunksjonar påverka korleis lydsignalet høyrast ut? (Framhald på side 4.) Eksamen i IN 106, Onsdag 30. mai - fredag 1. juni 2001 Oppgåve 3 Anta at vi har eit Side 4 Bilete og histogram 512 × 512 bilete med 256 steg i gråtoneskalaen. Biletet inneheld i utgangspunktet berre ein bakgrunn med ein klar trend, slik at intensiteten er jamnt aukande frå venstre til høgre kant av biletet. Anta at vi skriv din fødselsdato som ddmmyyyy, og lar bakgrunnsintensiteten auke frå 100+dd ved venstre kant til 100+dd+63 ved høgre kant av biletet. a) Forklar og skissér korleis histogrammet og det normaliserte histogrammet for eit slikt bilete ser ut. b) Anta no at ein mørk tekst vert lagt oppå denne bakgrunnen. Tekst-pikslane dekkjer 1/4 av biletet, og kvart tekst-piksel har ein gråtone som er L gråtonetrinn lågare enn den lokale bakgrunnen. Kva for ein verdi L0 må vi ha for L for at det skal vere mogeleg å terskle resultat- biletet heilt feilfritt med ein global terskel? c) Skissér det normaliserte histogrammet for L ≤ L0 , og for L > L0 . Regn ut og indikér på den siste skissa kor terskelen må plasserast for at færrast mogeleg pikslar skal bli feil-klassiserte ved tersklinga. d) Korleis ser histogrammet ut om vi adderer gaussisk støy med middelverdi = 0 og en gitt varians til både tekst og bakgrunn? e) Vi har bestemt oss for å terskle biletet og deretter medianltrere resultatet. Men vi er usikre på kva for ein terskel som er best. Difor terskler vi biletet med alle mogelege tersklar, median-ltrerer kvart av dei binære bileta og summerer resultata. Diskuter om dette er lurt. (Framhald på side 5.) Eksamen i IN 106, Onsdag 30. mai - fredag 1. juni 2001 Oppgåve 4 Entropi-terskling Anta at vi har gitt eit bilete med histogram Side 5 p(i), i ∈ [0, G − 1]. G steg i gråtoneskalaen, og med eit normalisert Vi har sett at 1. ordens entropi H=− X pi log(pi ) i er eit uttrykk for informasjonsinnhald i enkelt-piksel. Anta at vi regner ut entropien separat for dei delane av histogrammet som er under og over terskelverdien " t X p(i) p(i) log H1 (t) = − P1 (t) i=0 P1 (t) " G−1 X p(i) p(i) log H2 (t) = − P2 (t) i=t+1 P2 (t) a) # , P1 (t) = t X t p(i) i=0 # , P2 (t) = G−1 X p(i) i=t+1 Regn ut og plott funksjonen A(t) = H1 (t) + H2 (t) for biletet /hom/in106/img/lite-blod.ti (eller lite-blod.img i XITE sitt format), og terskle biletet med den gråtoneverdien der A(t) har sitt maksimum. Gjer greie for eventuelle atterhald du må ta. Vil histogramutjamning påverke plasseringa av terskelen eller korleis det binære biletet ser ut? b) Regn ut og plott funksjonen B(t) = min{H1 (t), H2 (t)} Gjev maksimal-verdien av c) Vis korleis utrekninga av Oppgåve 5 a) B(t) H1 (t) ein betre terskel? og H2 (t) kan eektiviserast. Kompresjon og koding Implementer ein algoritme i MATLAB som gjer run-length transformen radvis eller kolonne-vis i resultat-biletet frå ein av tersklingane frå oppgåva ovanfor. Anta at du tek til i øvre venstre hjørne, og at fyrste piksel på toppen av ei ny kolonne fylgjer direkte etter siste piksel i førre kolonne (fyrste piksel i ei ny rad fylgjer rett etter siste piksel i førre rad). b) Regn ut det gjennomsnittlege talet på bytes per piksel etter radvis eller kolonnevis transform. c) Forklar kort korleis du ville implementere Humann-koding av sekvensen av laupelengder frå det binære biletet. d) Korleis vil du regne ut talet på bits per piksel etter Humann-koding av laupelengdene? (Framhald på side 6.) Eksamen i IN 106, Onsdag 30. mai - fredag 1. juni 2001 Oppgåve 6 a) Side 6 Konvolusjon Lag ein gradient-operator som kan estimere gradient-komponenten i eit digitalt bilete med konvolusjonen (symbolet ∗ gx , i x-retning tyder her konvolusjon) [1 1]T ∗ [1 1] ∗ [1 1]T ∗ [1 − 1] og ein tilsvarande operator for å nne gradient-komponenten i y-retning, gy . Gradientkomponentane skal vera positive for kantar der intensiteten aukar frå venstre mot høgre og nedanfrå og oppover i biletet. Vis korleis ltermaskene vert for de to operatorane. b) Spelar det nokon rolle kva for rekkefylgje konvolusjonane i utrykket ovanfor vert utført i? Forklar kort. c) Korleis kan du enkelt utvide operatorane ovanfor til å bli d) Gitt to sammansette konvolusjons-operatorar: 1: q gx2 + gy2, der gx 5×5 eller 7 × 7? vert funnen med operatoren [1 1]T ∗ [1 1] ∗ [1 1]T ∗ [1 1] ∗ [1 1]T ∗ [1 1] ∗ [1 1]T ∗ [1 − 1] og gy vert funnen med operatoren [1 1]T ∗ [1 1] ∗ [1 1]T ∗ [1 1] ∗ [1 1]T ∗ [1 1] ∗ [1 1] ∗ [−1 1]T 2: hx + hy , der hx vert funnen med operatoren [1 1]T ∗ [1 1] ∗ [1 1]T ∗ [1 − 1] ∗ [1 1]T ∗ [1 1] ∗ [1 1]T ∗ [1 − 1] og hy vert funnen med operatoren [1 1]T ∗ [1 1] ∗ [1 1] ∗ [−1 1]T ∗ [1 1]T ∗ [1 1] ∗ [1 1] ∗ [−1 1]T Kva for to vanlege bilethandsamingsoperatorar svarer dette til? Diskuter generelle føremuner og ulemper ved den praktiske bruken av dei to operatorane. e) Vis korleis du kan sette sammen element frå operatorane ovanfor til ein 7×7 LoG-operator, og at denne ltreringa kan sjåast på som dieransen mellom to lavpass-ltreringar. Lukke til! (Framhald på side 7.) Eksamen i IN 106, Onsdag 30. mai - fredag 1. juni 2001 Side 7 MATLAB toolbox Here is a small set of useful hints and functions in MATLAB. Printing a gure: choose 'Print' on the gure menue. Choose 'Print to le' and print it using the IFI print programme if direct printing does not work. If the gure is in color and you do not have access to a color printer, you can print in greylevels on a regular printer. You can then describe what you saw on the screen compared to the paper print of the gure. Several curves on the same plot: plot(x1); hold; plot(x2); % x1 and x2 will now appear in the same plot Use hold one more time to release the plot such that your next plot is on a new gure. plot(x1(201:400)); Plot only parts of a signal Read and display a ti image: r=imread('bilde.ti'); imshow(r); bi2ti and ti2bi. rlt (available from the Conversion between TIFF and XITE image format: use Filtering: you are recommended to use the function dsprst toolbox). Local operations in 1D in MATLAB can be performed by: x2 = nllter(x,[3 1], 'max'); See MATLAB documentation or help for the function nllter. Frequency response: use the function freqz(h,1,zz); Given two set of index values t1=[1:1:100] and t2=[1:5:100] If signalinn is dened for indexes t2, you can interpolate by nyttsignal = interp1(t2,signalinn,t1,method); Try help interp1 to see dierent options for method. Plot of two signals dened for dierent indexes t1 and t2: plot(t1,signal1); plot(t2,signal2); Reading sound les on .wav format: [mysound,fs,nbits] =wavread('/hom/in106/myle.wav'); To play sound from MATLAB, we recommend that you use a SOLARIS workstation at IFI. If you use a dierent type of computer, you must make sure that you know how to play the sound. On a SOLARIS workstation, start the program gaintool from the unix prompt. Choose the option jack and plug in your headphones in the correct plug at the back of the computer. are correctly attached. soundsc(mysound); should now work if the earphones