Obligatorisk oppgave 2

Like dokumenter
Obligatorisk oppgave 2 INF2310 Våren 2018

Obligatorisk oppgave 1

MAT-INF 1100: Obligatorisk oppgave 1

MAT-INF 1100: Obligatorisk oppgave 1

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

3. obligatoriske innlevering, høsten 2014

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Midtveiseksamen. INF Digital Bildebehandling

Utkast med løsningshint inkludert UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

MEK1100, vår Obligatorisk oppgave 1 av 2. Torsdag 28. februar 2019, klokken 14:30 i Devilry (devilry.ifi.uio.no).

TMA Kræsjkurs i Matlab. Oppgavesett 3 Versjon 1.2

Midtveiseksamen Løsningsforslag

UNIVERSITETET I OSLO

Obligatorisk oppgave 1 i INF 4130, høsten 2008

Basisbilder - cosinus. Alternativ basis. Repetisjon Basis-bilder. INF april 2010 Fouriertransform del II. cos( )

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Obligatorisk oppgave 1 i INF 4130, høsten 2009

Eksempel: Ideelt lavpassfilter

Løsningsforslag, Ukeoppgaver 9 INF2310, våren kompresjon og koding del I

IN1000 Obligatorisk innlevering 7

MEK1100, vår Obligatorisk oppgave 1 av 2.

Hjemmeeksamen 2 i INF3110/4110

Løsningsforslag MAT102 Vår 2018

TMA Matlab Oppgavesett 2

MAT-INF 1100: Obligatorisk oppgave 2

Obligatorisk oppgave nr. 3 (av 4) i INF1000, våren 2006

( x+ π 2) Bakgrunn: Sinus og cosinus. Bakgrunn: Samplet sinus i 1D. Bakgrunn: Samplet sinus i 2D. Bakgrunn: Sinus i 2D. sin( x)=cos.

Løsning av øvingsoppgaver, INF2310, 2005, kompresjon og koding

UNIVERSITETET I OSLO

MAT 1120: Obligatorisk oppgave 2, H-09

Prosjektoppgave FYS2130. Vår Innleveringsfrist: 09/ , 20 CEST

MAT-INF 1100: Obligatorisk oppgave 1

UNIVERSITETET I OSLO

Noen presiseringer mhp Diskret Fourier Transform. Relevant for oblig 1.

Basisbilder - cosinus v Bildene

INF mars 2017 Diskret Fouriertransform del II

UNIVERSITETET I OSLO. Dette er et løsningsforslag

MAT-INF 1100: Obligatorisk oppgave 1

Filtrering i bildedomenet. Middelverdifilter (lavpass) Lavpassfiltre. INF2310 Digital bildebehandling FORELESNING 15 REPETISJON

Konvolusjon og filtrering og frevensanalyse av signaler

INF2310 Digital bildebehandling

STK1000 Obligatorisk oppgave 1 av 2

UNIVERSITETET I OSLO

Obligatorisk oppgave 2 i INF 4130, høsten 2009

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Oblig3 - obligatorisk oppgave nr. 3 (av 3) i INF3350/4350

UNIVERSITETET I OSLO

Eksamen Løsningsforslag

MIK 200 Anvendt signalbehandling, Prosjekt 3, Wavelet-transformasjon.

UNIVERSITETET I OSLO

Fig1. Den konvekse innhyllinga av 100 tilfeldige punkter i planet (de samme som nyttes i oppgaven.)

UNIVERSITETET I OSLO

IN1020. Obligatorisk oppgave 1. Formål

UNIVERSITETET I OSLO

Filtrering i bildedomenet. 2D-konvolusjons-eksempel. 2D-konvolusjons-eksempel. INF2310 Digital bildebehandling

INF2310 Digital bildebehandling

Prøve- EKSAMEN med løsningsforslag

Løsningsforslag for Obligatorisk Oppgave 2. Algoritmer og Datastrukturer ITF20006

INF mars 2017 Fourier I -- En litt annen vinkling på stoffet i kapittel 4

EKSAMEN. Bildebehandling og mønstergjenkjenning

Introduksjon. «Diskret» sinus/cosinus i 1D. Funksjonen sin(θ) INF april 2010 Fourier -- En annen vinkling på stoffet i kapittel 4

Algoritmer og Datastrukturer

UNIVERSITETET I OSLO

INF100 INNLEVERING 3 HØSTEN 2004

MAT1120. Obligatorisk oppgave 1 av 2. Torsdag 20. september 2018, klokken 14:30 i Devilry (devilry.ifi.uio.no).

Løsningsforslag, Ukeoppgaver 10 INF2310, våren 2011 kompresjon og koding del II

EKSAMENSOPPGAVE. INF-1100 Innføring i programmering og datamaskiners virkemåte. Ingen. Elektronisk (WiseFlow) Robert Pettersen

Repetisjon: Eksempel. Repetisjon: Aliasing. Oversikt, 26.februar Gitt. Alle signaler. Ettersom. vil alle kontinuerlig-tid signaler.

Repetisjon: Kompresjon

INF2310 Digital bildebehandling

EKSAMENSOPPGAVE / EKSAMENSOPPGÅVE

Temaer i dag. Repetisjon av histogrammer II. Repetisjon av histogrammer I. INF 2310 Digital bildebehandling FORELESNING 5.

MAT-INF 2360: Obligatorisk oppgave 2

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

Repetisjon: Kompresjon

INF 1040 Digital representasjon 2007 Utkast til - Obligatorisk oppgave nr 2

Lempel-Ziv-koding. Lempel-Ziv-koding. Eksempel på Lempel-Ziv. INF 2310 Digital bildebehandling. Kompresjon og koding Del II

INF Innleveringsoppgave 6

Obligatorisk oppgavesett 2 MAT1120 H16

EKSAMENSOPPGAVE I INF-1100

MAT-INF 2360: Obligatorisk oppgave 3

UNIVERSITETET I OSLO

sin(2 ui/n) starter på 0 og repeteres u ganger per N samples. cos(2 ui/n) starter på 1 og repeteres u ganger per N samples

INF2310 Digital bildebehandling

Repetisjon: Kompresjon

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Transkript:

INSTITUTT FOR INFORMATIKK, UNIVERSITETET I OSLO Obligatorisk oppgave 2 INF2310, vår 2017 Dette oppgavesettet er på 9 sider, og består av 2 bildebehandlingsoppgaver. Besvarelsen av denne og forrige obligatoriske oppgave må være godkjent for at du skal få anledning til å gå opp til endelig skriftlig eksamen i kurset. Besvarelsene kan utarbeides i smågrupper på opptil to studenter, men det er ikke noe i veien for å arbeide alene. Studenter i samme smågruppe kan levere identisk besvarelse, men samarbeidet må framgå av navnene på forsiden av besvarelsen. Av side 1 skal det fremgå hvem som har utarbeidet besvarelsen. Det forventes at arbeidet er et resultat av egen innsats. Å utgi andres arbeid for sitt eget er uetisk og kan medføre sterke reaksjoner fra IFIs side. Se http://www. uio.no/studier/admin/obligatoriske-aktiviteter/mn-ifi-oblig.html. Den skriftlige rapporten leveres primært som en PDF-fil som inneholder hele besvarelsen, med figurer og bilder. Kode skal leveres i tillegg til PDF-en. Besvarelsen skal leveres via https://devilry.ifi.uio.no. Legg merke til følgende: Alle filene må lastes opp hver gang man skal levere. PDF-en skal ha følgende navn: inf2310-oblig2-brukernavn.pdf, der brukernavn byttes ut med ditt eget sådan. Oppgaven skal kunne kjøres fra Matlab- eller Python- skript med navn: oppgave1.m eller oppgave1.py (evt. oppgave1a.m osv.). Spørsmål angående innlevering: krisbhei@student.matnat.uio.no. Bildene det refereres til vil være å finne under: http://www.uio.no/studier/ emner/matnat/ifi/inf2310/v17/undervisningsmateriale/bilder/. Oppgaven utleveres onsdag 3. mai 2017. Innleveringsfrist er torsdag 18. mai 2017. 1

Oppgave 1. Implementasjon av konvolusjonsfiltre i frekvensdomenet I implementeringsdelen av denne oppgaven kan du benytte deg av eksisterende funksjoner som er implementert i det språket du velger. Se Appendiks A for hvordan noen funksjoner brukes i hhv. Matlab og Python. Når funksjonene blir referert under benyttes navngivingen fra Matlab. Oppgave 1.1 Last inn bildet cow.png (vist i fig. 1). Gjør en 5 5 middelverdifiltrering, implementert både som en romlig konvolusjon (benytt conv2-funksjonen) og ved å gå til frekvensdomenet og gjøre filtreringen der (benytt fft2-funksjonen). Figur 1: Bilde cow.png 2

Oppgave 1.2 En mulighet her er å benytte same som tredjeparameter i conv2-funksjonskallet, samt implisitt å nullutvide filterkjernen til samme størrelse som bildet ved å benytte antall rader og kolonner i bildet som andre og tredje parameter i fft2-kallet. Ved å benytte en slik, ovennevnt variant får vi to tydelige forskjeller på resultatbildene: 1. en forflytning (translasjon) av det frekvensdomenefiltrerte bildet, 2. samt forskjeller i kantene (randen) i de to filtrerte bildene. Forklar hvorfor disse to fenomenene oppstår. Oppgave 1.3 Vi skal nå utforske hva som er raskest; å implementere middelverdifilteret som en konvolusjon (ikke tenk på å separere filteret eller bruken av overlapp, kun ren 2Dkonvolusjon) eller ved å gå til frekvensdomenet, filtrere, for så å gå tilbake. Lag et program som filtrerer bildet med et sett av middelverdifiltre med forskjellig størrelse, både i det romlige domenet (konvolusjon) og ved å gå til frekvensdomenet. Lag én kurve over kjøretiden ved å konvolvere direkte, og én kurve over kjøretiden ved å bruke frekvensdomenet, begge i samme figur. Diskuter de to kurvene, samt forklar for hvilke filterstørrelser det vil lønne seg å utføre filtreringen i frekvensdomenet (med akkurat denne spesifikke implementasjonen på akkurat din datamaskin). 3

Oppgave 2. Ikke-tapsfri JPEG-kompresjon I denne oppgaven skal du implementere de viktigste delene av ikke-tapsfri JPEGkompresjon. Du skal lage en funksjon (eller et program) som har to parametre: 1. et filnavn som spesifiserer plasseringen til bildefilen som skal benyttes, og 2. ett tall, q, som indirekte vil bestemme kompresjonsraten. Funksjonen skal beregne omtrentlig hvor stor lagringsplass det angitte bildet vil bruke etter JPEG-komprimering, og finne hvilken kompresjonsrate dette tilsvarer. Vi vil anta at inputbildet er et gråtonebilde med heltallsintensiteter i intervallet [0, 255] og har både en bredde og en høyde som er multipler av 8. Bruk gjerne bildet uio.png (vist i fig. 2) for å teste implementasjonen din underveis. Fremgangsmåten du skal følge for å lage programmet følger i stegene under. Figur 2: Bilde uio.png Steg 1 Last inn bildet som den første parameteren spesifiserer. Steg 2 Trekk 128 fra alle pikselintensiteter (dette gjør at den forventede gjennomsnittlige intensitetsverdien er omtrent 0). Pass på at bildet ditt er på et format med fortegn før du trekker fra 128 (mange innlesningsfunksjoner leser bilder til uint8, som kun tar verdier i [0,255]). 4

Steg 3 Begynn i øverste, venstre hjørnet og del opp bildet i 8 8-blokker. Transformér hver blokk med den todimensjonale diskrete cosinus-transformen (2D DCT). Hint 1: Siden hver blokk har størrelse 8 8, kan vi forenkle den generelle formelen for 2D DCT i forelesningsnotatene til: der F (u, v) = 1 4 c(u)c(v) 7 x=0 y=0 ( 7 (2x + 1)uπ f (x, y)cos 16 c(a) = { 1 2 hvis a = 0, 1 ellers. ) cos ( (2y + 1)vπ 16 ), (1) Hint 2: De transformerte 8 8-blokkene kan lagres som en matrise der hver 8 8- transformblokk er plassert på samme sted som den 8 8-bildeblokken den er beregnet fra. Steg 4 Rekonstruér det opprinnelige bildet ved å invertere transformen du utførte i forrige steg og addere 128 til alle pikselintensiteter. Programmatisk verifiser at det rekonstruerte bildet er identisk som originalen. Hint: Den forenklede formelen for den inverse todimensjonale diskrete cosinustransformen (2D IDCT) er: f (x, y) = 1 4 7 u=0 v=0 ( 7 (2x + 1)uπ c(u)c(v)f (u, v) cos 16 ) cos ( (2y + 1)vπ 16 (2) ), (3) der funksjonen c er definert som over i ligning (2). Pga. upresis flyttallsaritmetikk vil det generelt være behov for å avrunde de resulterende verdiene til nærmeste heltall. Steg 5 La Q være følgende kvantifiseringsmatrise: 16 11 10 16 24 40 51 61 12 12 14 19 26 58 60 55 14 13 16 24 40 57 69 56 14 17 22 29 51 87 80 62 Q = 18 22 37 56 68 109 103 77 24 35 55 64 81 104 113 92 49 64 78 87 103 121 120 101 72 92 95 98 112 100 103 99 Punktvis divider hver av de transformerte 8 8-blokkene fra steg 3 med qq, dvs. produktet av tallparameteren q og kvantifiseringsmatrisen over. Avrund de resulterende verdiene til nærmeste heltall. 5

Steg 6 Dersom vi skulle fulgt (den sekvensielle modusen i) JPEG-algoritmen videre så skulle vi nå separert det øverste, venstre elementet av hver transformert og kvantifisert 8 8-blokk, kalt et kvantifisert DC-element, fra de resterende 63 elementene i hver blokk. DC-elementene skulle blitt differansetransformert (på tvers av blokkene), og de 63 elementene skulle blokk for blokk blitt sikk-sakk- skannet og deretter (0- basert) løpelengdetransformert. Til slutt skulle (antall biter i) differansene og løpelengdeparene blitt entropikodet. I stedet for å følge denne prosedyren vil vi påstå at den vil grovt sett resultere i en dataforbruk som tilsvarer entropien til alle elementene i alle de transformerte og kvantifiserte 8 8-blokkene. Beregn denne entropien og bruk den til å estimere hvor stor lagringsplass det spesifiserte bildet vil bruke etter JPEG-komprimeringen og hvilken kompresjonsrate dette tilsvarer. Steg 7 Bruk de transformerte og kvantifiserte 8 8-blokkene fra steg 5 til å rekonstruere en tilnærming av det opprinnelige bildet. Skriv dette bildet til fil. Du skal teste funksjonen din ved å anvende den på bildet uio.png når du benytter hver av følgende verdier av tallparameteren q {0.1,0.2,0.5,1,2,4,8,16,32}. Studer rekonstruksjonene, og bemerk når og hvor i bildet du først oppdager rekonstruksjonsfeilene blokk-artefakter, glatting og ringing. Vurder også for hvilke(n) verdi(er) av tallparameteren q som du synes rekonstruksjonen er god nok for fremvisning av hele bildet på en vanlig dataskjerm. NB! Dere kan benytte ferdige Matlab/Python-funksjoner til å lese/skrive fra/til fil. Blokkoppdelingen, transformasjonene, og entropiberegningen må dere implementere selv. 6

Hva skal leveres Oppgave 1 Oppgave 2 1. Besvarelse (inkludert figur med kjøretidskurver). 2. Programkode fra deloppgave 1.1 og 1.3. 1. De rekonstruerte bildene av uio.png med de ni forskjellige verdiene av tallparameteren q. 2. Drøfting av komprimeringen av uio.png, inkludert (a) dine oppdagelser om rekonstruksjonsfeilene, (b) din vurdering av når rekonstruksjonsfeilen er "god nok", og (c) forklaring av hvorfor den estimerte kompresjonsraten øker med verdien av tallparameteren q. 3. Kommentert programkode. Lykke til. 7

Appendiks A Eksempler i Matlab og Python som utfører samme oppgave med noen nyttige funksjoner. Altså vil variablene a, b, c, d, og e inneholder de samme verdiene i begge implementasjonene. 1 % Matlab 2 3 tic ; % Starter klokken 4 5 a = [1, 2, 3; 4, 5, 6; 7, 8, 9;]; 6 b = [1, 1, 1; 2, 2, 2; 3, 4, 5]; 7 10 8 % 2D konvolusjon 9 % Dokumentasjon : https :// se. mathworks. com / help / matlab / ref / conv2. html 11 c = conv2 (a, b); 12 %c = 13 % 1 3 6 5 3 14 % 6 15 27 21 12 15 % 18 43 76 61 36 16 % 26 61 106 83 48 17 % 21 52 94 76 45 18 19 d = conv2 (a, b, same ); 20 %d = 21 % 15 27 21 22 % 43 76 61 23 % 61 106 83 24 25 % 2D Fourier - transform 26 % Dokumentasjon : https :// se. mathworks. com / help / matlab / ref / fft2. html 27 28 e = fft2 (a); 29 %d = 30 % 45.00000 + 0.00000 i -4.50000 + 2.59808 i -4.50000-2.59808 i 31 % -13.50000 + 7.79423 i 0.00000 + 0.00000 i 0.00000 + 0.00000 i 32 % -13.50000-7.79423 i 0.00000-0.00000 i 0.00000-0.00000 i 33 34 tid = toc ; % tid er nå antall sekunder siden tic 8

1 # Python 2 3 import time 4 from scipy import signal 5 import numpy as np 6 7 start_tid = time. time () 8 9 a = np. array ([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) 10 b = np. array ([[1, 1, 1], [2, 2, 2], [3, 4, 5]]) 11 12 # 2D konvolusjon 13 # Dokumentasjon : https :// docs. scipy. org / doc / scipy / reference / generated / scipy. signal. convolve2d. html 14 15 c = signal. convolve2d (a, b) 16 d = signal. convolve2d (a, b, same ) 17 18 # 2D Fourier - transform 19 # Dokumentasjon : https :// docs. scipy. org / doc / numpy / reference / generated / numpy. fft. fft2. html 20 e = np.fft. fft2 (a) 21 22 stopp_tid = start_tid - time. time () 9