3. obligatoriske innlevering, høsten 2014

Like dokumenter
Presentasjon av oblig 2

1. obligatoriske innlevering, høsten 2014

2. obligatoriske innlevering, høsten 2014

Repetisjon av histogrammer

Hovedsakelig fra kap. 3.3 i DIP

Obligatorisk oppgave 2

Kantdeteksjon og Fargebilder

Obligatorisk oppgave MAT-INF1100. Lars Kristian Henriksen UiO

MAT-INF 1100: Obligatorisk oppgave 1

MAT-INF 1100: Obligatorisk oppgave 1

Gråtonehistogrammer. Histogrammer. Hvordan endre kontrasten i et bilde? INF Hovedsakelig fra kap. 6.3 til 6.6

Obligatorisk oppgave 2 INF2310 Våren 2018

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

Excited. Hvordan komme i gang med tekstbasert programmering? Centre for Excellent IT Education. Guttorm Sindre

Ma-1410: Analyse, Obligatorisk øvelse 2, høsten løsningsforslag

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

Fargebilder. Lars Vidar Magnusson. March 12, 2018

Obligatorisk oppgave 1 i INF 4130, høsten 2008

IN2110 Obligatorisk innlevering 1a

I dag skal vi ved hjelp av ganske enkel Python-kode finne ut om det er mulig å tjene penger på å selge og kjøpe en aksje.

Obligatorisk oppgave 1 i INF 4130, høsten 2009

IN1000 Obligatorisk innlevering 7

INF 2310 Digital bildebehandling FORELESNING 5. Fritz Albregtsen. Pensum: Hovedsakelig 3.3 i DIP HISTOGRAM-TRANSFORMASJONER

UNIVERSITETET I OSLO

Steg 1: Rest etter divisjon

INF120: Oblig 3. Yngve Mardal Moe

MAT Oblig 1. Halvard Sutterud. 22. september 2016

Temaer i dag. Repetisjon av histogrammer I. Gjennomgang av eksempler. INF2310 Digital bildebehandling. Forelesning 5. Pensum: Hovedsakelig 3.

Hangman. Steg 1: Velg et ord. Steg 2: Gjett en bokstav. Sjekkliste. Sjekkliste. Introduksjon

EKSAMENSOPPGAVE / EKSAMENSOPPGÅVE

INF 2310 Digital bildebehandling FORELESNING 5. Fritz Albregtsen. Pensum: Hovedsakelig 3.3 i DIP HISTOGRAM-TRANSFORMASJONER

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

Verden. Steg 1: Vinduet. Introduksjon

INF 2310 Digital bildebehandling

Objektorientert programmering i Python

INF Obligatorisk innlevering 5

Videre utvikling av Geoskog som prognoseverktøy

Først må vi få datamaskinen til å velge et tilfeldig ord, så la oss begynne. Lagre programmet ditt og kjør det. Hvilket ord skrives ut?

INF Stikkord over pensum til midtveis 2017 Kristine Baluka Hein

Brukerveiledning for ArkN4

Tre på rad mot datamaskinen. Steg 1: Vi fortsetter fra forrige gang. Sjekkliste. Introduksjon

Tre på rad mot datamaskinen. Steg 1: Vi fortsetter fra forrige gang

IN1140 H2018 gruppeoppgaver Sannsynlighet og språkmodeller

Arbeidskrav 1. Se fremdriftsplanen for innleveringsfrist. Emneansvarlig: Olav Dæhli 1

UNIVERSITETET I OSLO

WORKSHOP BRUK AV SENSORTEKNOLOGI

Verden. Introduksjon. Skrevet av: Kine Gjerstad Eide og Ruben Gjerstad Eide

Forkurs i informatikk Python. Andreas Færøvig Olsen

IN1020. Obligatorisk oppgave 1. Formål

Midtveiseksamen Løsningsforslag

IN1010 V18, Obligatorisk oppgave 5

Repetisjon Novice Videregående Python PDF

UNIVERSITETET I OSLO

Del 1 En oversikt over C-programmering

Midtveiseksamen. INF Digital Bildebehandling

Kap 2: Løkker og lister

Bildebehandling med Python og EzGraphics

Ma-1410: Analyse, Obligatorisk øvelse 2, høsten 2001.

MEK1100, vår Obligatorisk oppgave 1 av 2.

INF Obligatorisk innlevering 7

UNIVERSITETET I OSLO

Innhold uke 8. Objekter: Bruk og intern organisering. Beskjeder: Oblig 1 6. Beskjeder: Oblig 7 (og 8)

Læringsmål og pensum. Oversikt. Systemprogramvare Operativsystemer Drivere og hjelpeprogrammer. To hovedtyper programvare

Steg 0: Installere Pygame Zero

Pong. Oversikt over prosjektet. Steg 1: En sprettende ball. Plan. Sjekkliste. Introduksjon

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

Uendelig bakke. Introduksjon. Skrevet av: Kine Gjerstad Eide

TMA Matlab Oppgavesett 2

Arbeidskrav 1. Se fremdriftsplanen for innleveringsfrist. Emneansvarlig: Olav Dæhli 1

Innleveringsoppgave 1

Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å falle over skjermen.

Øvingsforelesning 1 Python (TDT4110)

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

Biorun v. 2.0 Bruksanvisning Programvare

Opprette firma. Innhold

Hangman. Level. Introduksjon

EKSAMEN Løsningsforslag

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

Tetris. Introduksjon. Skrevet av: Kine Gjerstad Eide. Lag starten på ditt eget tetris spill!

Tegnespillet. Introduksjon:

Drosjesentralen. I-120: Obligatorisk oppgave 2, 2000

Flytte innhold fra Fronter til Canvas

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

INF 2820 V2015: Obligatorisk innleveringsoppgave 3

Farger. Introduksjon. Skrevet av: Sigmund Hansen

Demo for første sprint

EKSAMENSOPPGAVE / EKSAMENSOPPGÅVE

Lær QGIS med OSGIS Academy sitt online QGIS-kurs på norsk. OSGIS Academy online QGIS kursprogram utgave

Hvor gammel er du? Hvor gammel er du? Del 1: Skrive ut til skjerm. Gjøre selv. Skrevet av: Sindre O. Rasmussen, Kodeklubben Trondheim

Grunnleggende Grafalgoritmer

Oversikt. Beskrivelse Bash. 1 UNIX shell. 2 Kommandolinje som brukergrensesnitt. 3 Input og output. 4 Bash builtins. 5 Linux utilities.

Objektorientert programmering i Python. Resten av semesteret. Innhold uke 9 Mer komplekse strukturer. Referanser og objekter, inkl Mentimeter spørsmål

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Inf109 Programmering for realister Uke 5. I denne leksjonen skal vi se på hvordan vi kan lage våre egne vinduer og hvordan vi bruker disse.

Obligatorisk oppgave 6 i INF1010: Dekryptering

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Tell sekunder. Introduksjon. Skrevet av: Teodor Heggelund. I denne oppgaven skal vi lage vårt eget spill!

Utvikling og testing av alternativ metode for henting og lagring av værdata fra målestasjoner uten å benytte en lokal logger

Transkript:

3. obligatoriske innlevering, høsten 2014 {Jonathan Feinberg, Joakim Sundnes} {jonathf,sundnes}@simula.no November 3, 2014 Innleveringskrav Denne skal følge malen gitt på emnesidene Legges ut 2. september. Innlevering skjer ved opplasting til github. Mer informasjon om klasseromsløsningen vi bruker på github vil bli gitt i god tid før innleveringsfristen. Oversikt disasterbefore.jpg disasterafter.jpg Figure 1: Et bilde før og etter støy-reduksjon I denne oppgaven skal vil lage en et program som fjerner støy fra et bilde. Et eksempel kan ses i figur 1. For å få til dette bruker vi en støy-reduksjonsalgoritme. Algoritmen er som følger. Hvert punkt i det nye bilde blir laget som en vektet gjennomsnitt av alle nabo-punktene. Mer spesifikt: data_new[i][j] = data[i][j] +kappa*data[i-1][j] +data[i][j-1] -4*data[i][j] +data[i][j+1] +data[i+1][j] ; 1

Alle punktene langs kantene skal kopieres over urørt. Graden av filtreringen bestemmes av parameteren kappa som ligger på intervallet [0, 1]. Prosessen for å laget et nytt bildet skal deretter bli repetert flere ganger. Antallet repetisjoner kan blir bestemt av parameteren iter. Et program har allerede blitt skrevet i C: denoise.c Et medfølgende bibliotek kan bli funnet i mappen jpeg-simple, men den er det ikke nødvendig å røre. Les filen SETUP for å bruke denne implementasjonen selv. Kjernen av algoritmen kan bli funnet i funksjonen iso_diffusion_denoising. I denne obligen skal dere lage egne implementeringer av denoise i Python med diverse utvidelser. Forskjellige implementasjonene skal times ved hjelp av Timeit og Profile. Til hjelp med å importere og eksportere bildefiler kan dere bruke av følgende kode-snutt: from PIL import Image import numpy as np # fra bildefil til Numpy: data = np.arrayimage.open"disaster_before.jpg" n, m = data.shape[:2] # Fra Numpy til bildefil: Image.fromarraydata.save"disaster_after.jpg" # fra bildefil til liste: im = Image.open"disaster_before.jpg" data = listim.getdata n, m = im.size # Fra list til bildefil: im = Image.new"L", n, m im.putdatadata im.save"disaster_after.jpg" Her "L" står for Luninence og refererer til at bildet er svart/hvit med gråtoner. Hvis det er farger skal "L" byttes med "RGB". Merk at i Numpy import så er dataen formatert som en multidimensjonal array med 2 akser hvis bildet er svart/hvitt og 3 hvis det er farger. I tilfellet med liste-import er dataen en 1-dimensjonal liste av enten verdier, eller tupler med fargene. Oppgave 1: Implementasjon i Python, Numpy og Weave Lag to implementasjoner av programmet: Løsning ved bruk av kun Python altså ingen Numpy og Weave Løsning som inkluderer både Numpy og Weave. De to løsningene skal skrives i to forskjellige filer. denoise.c for bruk i Weave-implementasjonen. Kopier gjerne kode fra 2

Bruk timit til å sammenlikne resultatene fra dine to implementasjoner mot C-implementasjonen. Skru gjerne opp verdien på iter for å få mer målbare tider. For å få godkjent på denne oppgaven må implementasjonen i Numpy/Weave skal være merkbart raskere enn løsningen i «bare» Python. Merk at koden der er rettet mot 2-dimensjonale arrays og at weave arrays er 1-dimensjonale. Oppgave 2: Bruk av profilering Lag en profilering av dine to implementasjoner. til rapporten skal de tre linjene med høyest kumulative tid skrives ut for begge programmene. Bruk noen ord på å forklare hvordan de forskjellige programmene sammenlikner i hastighet og hvorfor. 1 Bruk gjerne profilering når du løser oppgave 1, men ikke klarer å få kjøretiden ned. Oppgave 3: Utvidelse til farger Programmet så langt er laget for svart hvitt bilder. I denne oppgaven skal dere utvide programmet deres til bruk av farger. Farger på datamaskinen er splittet i tre farge-komponenter: rød, grønn og blå RGB. Algoritmen for denoise er bassert på lys og mørke, som ikke helt fungerer med farge, må man vekk fra RGB og over i HSI eller «hue», «saturation» og «intensity». Utvidelsen dere skal lage skal kunne fungere på hver av kanalene i HSI. Som hjelp med konverteringen, her er formlene for konvertering fra RGB til HSI: I = R+G+B 3 { 1 minr,g,b S = I if I > 0 0 if I = 0 cos 1 R G/2 B/2 H = 360 cos 1 R 2 +G 2 +B 2 RG RB GB R G/2 B/2 R 2 +G 2 +B 2 RG RB GB if G B if G < B Her cos 1 er den inverse av cosinus-funksjonen målt i grader. I C kan dere finne denne funksjonen: acosvalue*180/3.14159256 Funksjonen kan du finne i C-biblioteket math.h Det samme gjelder kvadratrotfunksjonen sqrt. Tilsvarende etter at man har brukt denoising på et eller flere av båndene i 3

HSI, kan man bruke følgende formel for å konvertere tilbake til RGB: R = I + 2IS G = I IS B = I IS if H = 0 R = I + IS cosh G = I + IS 1 cosh B = I IS if H 0, 120 cos60 H cos60 H R = I IS G = I + 2IS B = I IS if H = 120 cosh 120 cosh 120 R = I IS G = I + IS B = I + IS 1 if H 120, 240 cos180 H cos180 H R = I IS G = I IS B = I + 2IS if H = 240 cosh 240 cosh 240 R = I + IS 1 G = I IS B = I + IS if H 240, 360 cos300 H cos300 H Igjen skal cos regnes ut i grader. Fra math.h can vi regne det ut som: cosvalue*3.14159256/180 Denne oppgaven behøver man kun gjøre i Numpy/Weave. Det forventes at utregningen blir utført på innsiden av Weave. Oppgave 4: Lineær manipulering Utvid funksjonaliteten funksjonalitet slik at vært bånd av R, G, B, H, S og I kan justeres opp eller med. Oppgave 5: Frontend Implementer et felles brukergrensesnitt for dine to løsninger samt C-løsningen ved hjelp av argparse-modulen. Følgende funksjoner forventes å være inkludert: Spesifiser én input- og én output-fil. Switch for å si at man skal utføre denoising. Spesifiser parameterene iter, kappa og eps, og gi dem default-verdier 10, 0.1, 2 respektivt. eps brukes hvis man ønsker å implementere testing i frontend. En switch for å bytte mellom de tre backendene Verbose-mode skriver hva programmet foretar seg. En switch for å skru på en Timit modulen. Muligheten til å inviduelt justere på de 6 båndene opp og ned. Programmet skal kunne gjøre flere manipuleringer i samme kall. Dvs. at man skal for eksempel kunne både skru ned på intensiteten I samtidig som man øker grønnfargen G og kjører filtrering. Hvis backend ikke støtter en fuksjonalitet som farge-bilde med C-backend, skal programmet gi en passende feilmelding og avslutte. 4

Oppgave 6: Testing og dokumentasjon Som alltid skal programmet inneholde god dokumentasjon, doc-tester hvor det passer og en implementasjon av en test-suite. Følgende test er forventet: Generer output for kappa lik 0.1 og 0.2, iter lik 5, 10 og 20 for alle tre implementasjonene. Gi hver fil passende navn. For hver kappa og iter konstant, åpne alle bildene i de tre implementasjonene. Sjekk at verdiene i bildet er tilnærmet lik hverandre. Bruk en feiltolleranse eps for hvor stor feilen maksimalt for være for hver piksel i bildet. I tillegg skal dere teste at oppgaven 4 for én farge, én av båndene i HSI, samt én kombinasjon hvor én farge og én HSI-kanal er testet samtidig. Oppgave 7: Rapport En rapport av hva du har gjort skal inn i en L A TEX-rapport. Bruk modulen du laget i oblig 2 til å skrive denne. 5