keskiviikko 4. maaliskuuta 2009

Kuvankäsittelyä ja pakkausta

Tunnin aluksi korostettiin viimeistä kertaa konvoluution ja Fourier-muunnoksen yhteyttä. Jos siis

y(n,m) = h(n,m) * x(n,m),

niin

Y(n,m) = H(n,m) X(n,m),

mistä vääristymätön kuva x on mahdollista ratkaista jakolaskulla jos h tiedetään. Lyhyen kertauksen jälkeen perehdyttiin kuvien piste-ehostukseen. Tähän alueeseen kuuluvat menetelmät käsittelevät kuvaa piste kerrallaan ajamalla kunkin harmaasävyarvon tietyn funktion läpi. Funktio määräytyy tilanteen mukaan, ja gamma-korjauksen tapauksessa se on muotoa

y = x^gamma

(sopivilla skaalauksilla varustettuna, jolloin väli [0,255] kuvautuu väliksi [0,255]). Histogrammin ekvalisoinnin tapauksessa funktio lasketaan kuvasta niin, että histogrammin massa jakautuu suunnilleen tasaisesti. Tämä saadaan aikaiseksi kaavalla 6.1.

Toisella tunnilla tutustuttiin kompression teoriaan, erityisesti kuvien tapauksessa. Kompressio lienee se signaalinkäsittelyn ala, joka on lähinnä jokapäiväistä elämää. Anekdoottina esitin aluksi muisikuvan, jonka mukaan ensimmäiset 1990-luvun alun jpeg-purkuohjelmat prosessoivat tyypillistä neljännesmegapikselin kuvaa useamman minuutin ennen kuin se oli GIF-formaatissa, jonka silloiset kuvankatseluohjelmat osasivat näyttää. Ilman laskentatehon eksponentiaalista kasvua digitaalinen media olisi kaukana siitä mitä se nyt on.

Häviöttömistä menetelmistä käytiin tarkemmin läpi Huffman-koodaus, joka perustuu koodipuun generointiin symbolien todennäköisyyksien mukaan. Harvinaisemmille symboleille annetaan pidempi koodisana, mikä mahdollistaa lyhyemmän koodisanan antamisen yleisemmille symboleille. Huffmanin pakkaustehokkuutta voidaan verrata entropiaan, joka antaa alaraja mille tahansa häviöttömälle pakkausmenetelmälle. Todettiin Huffmanin pääsevän melko lähelle alarajaa. Entropiarajaa voidaan pudottaa erilaisilla tempuilla, kuten tallentamalla ns. erotuskuva.

2 kommenttia:

  1. Luennolla käytiin esimerkki läpi jossa piti laskea lähteen entropia. Miten tuommoinen tehtävä tulisi tehdä tentissä kun laskin ei osaa laskea 2-kantaisia logaritmejä?

    VastaaPoista
  2. Aina kun tentissä on ollut tällainen kysymys, sivun alalaidassa on ollut kaava:

    log2(x) = ln(x) / ln(2)

    Tämähän toimii yleisemminkin, esim.

    log10(x) = ln(x) / ln(10)

    tai

    log2(x) = log10(x) / log10(2)

    VastaaPoista