Laboratory of Computer and Information Science / Neural Networks Research Centre CIS Lab Helsinki University of Technology

T-61.5100 Digitaalinen kuvankäsittely

Harjoitustyö / Course assignment

Harjoitustyö on pakollinen osa kurssia T-61.5100 Digitaalinen kuvankäsittely. Työn tarkoituksena on perehdyttää työn tekijää tavallisimpiin kuvankäsittelyn ongelmiin ja toimenpiteisiin sekä tukea kurssin luentoja ja laskuharjoituksia. Työ koostuu kolmesta erillisestä tehtävästä, jotka käsittelevät lähinnä kuvan suodatusta, entisöintiä ja tiivistämistä.

Työssä tarvittavat kuvat ovat TIFF-formaatissa ja ne voi ladata työohjeiden linkeistä tai erilliseltä kuvien lataussivulta.

Työvälineet

Työ tehdään Matlab-ohjelmistolla. Työn saa luonnollisesti tehdä omalla koneella, mutta työ kannattaa tehdä korkeakoulun unix-työasemilla, jolloin käytettävissä on Image Processing Toolbox (IPT), joka helpottaa kuvankäsittelyä merkittävästi. Matlab käynnistetään komennoilla

use matlab
matlab

Niille, jotka eivät ole aikaisemmin tutustuneet Matlab-ohjelmistoon, on olemassa englanninkielinen www-sivu jossa on Matlab-perustietoa ja muutamia usein käytettyjä funktioita. Siellä kerrotaan myös, miten ladata kuva Matlabiin, näyttää se kuvaruudulla ja tulostaa tulokset tiedostoon tai tulostimelle. Luultavasti tarvitset ainakin seuraavia komentoja: imread, uint8, colormap('gray'), image, imagesc, axis('image'), conv2, fft2, fftshift, ifft2, float, imwrite, print -deps kuvani.eps.

Kuva luetaan sisään esim. seuraavalla komennolla:

I=double(imread('munkuva.tif','tif'));

Huomaa double-muunnos joka muuntaa kuvan liukulukumuotoon. (Matlab ohjeissa on lisää tietoa.)

Linkit

Tehtävät

Tehtävä 1

Ensimmäinen tehtävä koskee kohinanpoistoa. Kuva 1 (img1noisy.tif) sisältää impulsiivista kohinaa (vasen puoli) ja additiivista valkoista gaussista kohinaa (oikea puoli). Kokeile kuvaan mediaanisuodinta sekä aritmeettista keskiarvosuodinta. Näiden lisäksi kokeile ainakin yhtä muuta suodinta kirjan luvusta 5.3. Laske keskimääräinen neliövirhe:

E= 1
MN
M
sum
x=1
N
sum
y=1
(Io(x,y) - If(x,y))2

(missä Io on alkuperäinen (kohinaton) kuva ja If on kohinainen kuva/suodatustulos), erikseen molemmissa kuvapuolissa ennen ja jälkeen suodatuksen, ja vertaa näin menetelmiä keskenään. Vertaa tuloksia sekä numeerisesti että visuaalisesti. Muodosta lopuksi 'paras mahdollinen' tuloskuva, jossa sekä vasen että oikea kuvapuolisko on suodatettu pienimmän neliövirheen tuottaneella suotimella, sekä vastaava virhekuva (siis korjatun ja alkuperäisen kuvan erotuskuva). Muista skaalata virhekuva oikein!

Alkuperäinen kohinaton kuva on tiedostossa img1original.tif.

Tehtävä 2

Kuvassa 2 (img2.tif) on häiritsevä taajuus, joka pitää poistaa. Häiriöt näkyvät kuvassa juovina. Poista häiriö sekä a) tekemällä häiriölle malli ja sen avulla hakemalla alkuperäinen ja b) etsimällä taajuustasossa häiritsevän taajuuden piikki ja poistamalla se sieltä. Laske keskimääräiset neliövirheet ennen ja jälkeen suodatusten käyttäen alkuperäistä kuvaa img2original.tif. Vertaa eri menetelmien tuottamia tuloksia sekä numeerisesti että visuaalisesti.

Huom.: Älä käytä alkuperäistä kuvaa häiriön etsimiseen tai poistamiseen! (Häiritsevä taajuus löytyy helpoiten, jos käyttää hyväkseen sitä tietoa, että häiriö on vaakasuuntainen. Halutessaan voi laskea taajuuskuvan, ja etsiä siitä.)

Tehtävä 3

Tämän tehtävän tarkoitus on näyttää, miten kuvamuunnoksista voi olla hyötyä pakkauksessa. Yleinen idea on, että jos kuva esitetään jossain sopivassa muodossa, niin suuri määrä informaatiota voidaan esittää pienellä määrällä lukuja. Hae kuva tiedostosta img1original.tif ja tee sille kaksiulotteinen diskreetti kosinimuunnos (dct2). Nyt suurin osa komponenteista on erittäin lähellä nollaa ja vain pieni osa on merkittävästi nollasta poikkeavia (tämän näet esim. laskemalla histogrammin).

Nyt voisi kuvitella tiivistävänsä kuvaa pudottamalla itseisarvoltaan pienet numerot pois, ja tallentamalla ainoastaan muut komponentit. (Oikeasti meidän pitäisi vielä tietysti pitää kirjaa siitä mitkä numerot pudotettiin, sekä kvantisoida jäljellä olevat. Näitä seikkoja ei kuitenkaan tässä käsitellä.) Koska DCT-muunnos on ortogonaalinen, jokaisen komponentin si poisjättäminen vastaa suoraan neliövirhettä si2. Toisin sanoen kannattaa nimenomaan jättää itseisarvoltaan pienet komponentit pois.

Laske kuvaaja, jossa x-akselilla on sallittu neliövirhe - prosentteina alkuperäisen kuvan kokonaisenergiasta (kokonaisenergia on komponenttien neliöiden summa) - ja y-akselilla niiden komponenttien lukumäärä jotka joudutaan säilyttämään, jotta kyseinen neliövirhe alittuisi. Toisin sanoen jos sallittu neliövirhe on esim. 2% kuvan kokonaisenergiasta, niin kuinka monta DCT:n komponenttia joudutaan pitämään tiivistetyssä esityksessä? Tulosta lisäksi tarkat komponenttien lukumäärät, saavutetut kompressiosuhteet (olettaen että komponenttien koodaus vie keskimäärin 8 bittiä) sekä tiivistetyt kuvat, kun sallittu neliövirhe on 1%, 2% ja 4% kuvan kokonaisenergiasta.

Työselostus

Työstä on laadittava kirjallinen selostus, josta löytyy koko MATLAB-koodi, tuloskuvat, sekä riittävä selostus siitä, mitä on tullut tehtyä ja mitkä olivat tulokset. Kommentoi MATLAB-koodisi hyvin! Pelkkä kommentoitu Matlab-koodi ei kuitenkaan riitä työselostukseksi.

Työ arvostellaan hyväksytty/hylätty -periaatteella, ja hylätyistä töistä annetaan lyhyt selvitys siitä, mitä pitäisi parantaa ennen kuin työ voidaan hyväksyä. Työ on henkilökohtainen, eli vain yksi nimi per palautettu työselostus. Yhteistyötä saa ideatasolla harjoittaa, mutta ratkaisut (koodit ja selostus) tulee jokaisen kirjoittaa täysin itsenäisesti.

Harjoitustyö tulee palauttaa suoraan kurssin assistentille sähköpostitse (mats.sjoberg at tkk.fi) PDF tiedostona. Tiedosto pitää olla nimetty opiskelijanumeron mukaan, esim. 12345X.pdf. Harjoitustyön voi myös palauttaa paperitulosteena Informaatiotekniikan laboratorion ilmoitustaulun vieressä olevaan postilaatikkoon (T-talo, 3.kerros). Selostuksella on oltava erillinen kansisivu josta käy ilmi tekijän nimi, opiskelijanumero, sähköpostiosoite, koulutusohjelma ja vuosikurssi.

Harjoitustyö on oltava valmis ja palautettu maanantaina 14.1. klo 16.00. Kurssi on hyväksytty vasta kun sekä tentti että harjoitustyö on suoritettu hyväksytysti.

You are at: CIST-61.5100 → Harjoitustyö

Page maintained by t615100 at cis.hut.fi, last updated Monday, 12-Nov-2007 15:42:01 EET