7. Kuvantiivistys 7.1. Perusteet

Samankaltaiset tiedostot
7. Kuvantiivistys 7.1. Perusteet

Ongelma 1: Onko datassa tai informaatiossa päällekkäisyyttä?

Algoritmit 2. Luento 9 Ti Timo Männikkö

Kuvan- ja videontiivistys. Mikko Nuutinen

Kuvan pakkaus JPEG (Joint Photographic Experts Group)

Signaalien datamuunnokset. Digitaalitekniikan edut

Signaalien datamuunnokset

Harmaasävykuvien häviöttömästä tiivistyksestä

LIITE 1 VIRHEEN ARVIOINNISTA

Digitaalitekniikan matematiikka Luku 13 Sivu 1 (10) Virheen havaitseminen ja korjaus

Matematiikka ja teknologia, kevät 2011

Puheenkoodaus. Olivatpa kerran iloiset serkukset. PCM, DPCM ja ADPCM

811120P Diskreetit rakenteet

10. Esitys ja kuvaus

SGN-1200 Signaalinkäsittelyn menetelmät, Tentti

esimerkkejä erilaisista lohkokoodeista

Koodausteoria, Kesä 2014

1 Aritmeettiset ja geometriset jonot

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

ELEC-C5070 Elektroniikkapaja (5 op)

Shannonin ensimmäinen lause

LIITE 1 VIRHEEN ARVIOINNISTA

6.6. Tasoitus ja terävöinti

Harmaasävykuvien häviötön tiivistäminen

LIITE 1 VIRHEEN ARVIOINNISTA

10.2. Säteenjäljitys ja radiositeettialgoritmi. Säteenjäljitys

Mallin arviointi ja valinta. Ennustevirhe otoksen sisällä, parametrimäärän valinta, AIC, BIC ja MDL

Luku- ja merkkikoodit. Digitaalitekniikan matematiikka Luku 12 Sivu 1 (15)

SGN-1200 Signaalinkäsittelyn menetelmät Välikoe

Jatkuvat satunnaismuuttujat

Harjoitus 2: Matlab - Statistical Toolbox

INFORMAATIOTEORIA & KOODAUS TÄRKEIMPIEN ASIOIDEN KERTAUS A Tietoliikennetekniikka II Osa 28 Kari Kärkkäinen Syksy 2015

3.7 Todennäköisyysjakaumia

Reaalilukuvälit, leikkaus ja unioni (1/2)

AV-muotojen migraatiotyöpaja - video. KDK-pitkäaikaissäilytys seminaari / Juha Lehtonen

ABHELSINKI UNIVERSITY OF TECHNOLOGY

Matias Sumanen Mittaussignaalin häviötön pakkaaminen. Kandidaatintyö

Digitaalinen signaalinkäsittely Kuvankäsittely

Algoritmit 2. Luento 10 To Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö

SGN-1200 Signaalinkäsittelyn menetelmät, Tentti

Vastaus 1. Lasketaan joukkojen alkiot, ja todetaan, että niitä on 3 molemmissa.

Miten perustella, että joukossa A = {a, b, c} on yhtä monta alkiota kuin joukossa B = {d, e, f }?

Tekijä MAA2 Polynomifunktiot ja -yhtälöt = Vastaus a)

T Luonnollisen kielen tilastollinen käsittely Vastaukset 3, ti , 8:30-10:00 Kollokaatiot, Versio 1.1

puheen laatu kärsii koodauksesta mahdollisimman vähän. puhe pakkautuu mahdollisimman pieneen määrään bittejä.

Sovellettu todennäköisyyslaskenta B

4 LUKUJONOT JA SUMMAT

Digitaalinen audio & video I

Algoritmit 1. Luento 11 Ti Timo Männikkö

S Laskennallinen Neurotiede

LÄHTEENKOODAUS. Mikä on lähteenkoodauksen perusidea? A Tietoliikennetekniikka II Osa 20 Kari Kärkkäinen Syksy 2015

Sovellettu todennäköisyyslaskenta B

SGN-1200 Signaalinkäsittelyn menetelmät, Tentti

7.4 Sormenjälkitekniikka

Tenttiin valmentavia harjoituksia

811312A Tietorakenteet ja algoritmit, , Harjoitus 7, ratkaisu

Tietorakenteet ja algoritmit - syksy

Numeropelissä 3x3-ruudukko sisältää luvut 1, 2,, 9. Tehtäväsi on järjestää ruudukko näin:

4. Funktion arvioimisesta eli approksimoimisesta

Digitaalinen audio & video, osa I

4.0.2 Kuinka hyvä ennuste on?

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Algoritmit 1. Luento 10 Ke Timo Männikkö

1 Määrittelyjä ja aputuloksia

Signaalien generointi

Osa 2: Otokset, otosjakaumat ja estimointi

Ongelma(t): Miten digitaalista tietoa voidaan toisintaa ja visualisoida? Miten monimutkaista tietoa voidaan toisintaa ja visualisoida?

A-osa. Ratkaise kaikki tämän osan tehtävät. Tehtävät arvostellaan pistein 0-6. Taulukkokirjaa saa käyttää apuna, laskinta ei.

Matematiikan tukikurssi

Algoritmit 2. Luento 3 Ti Timo Männikkö

Ilkka Mellin Todennäköisyyslaskenta. Osa 2: Satunnaismuuttujat ja todennäköisyysjakaumat. Kertymäfunktio. TKK (c) Ilkka Mellin (2007) 1

4.1. Olkoon X mielivaltainen positiivinen satunnaismuuttuja, jonka odotusarvo on

T Luonnollisten kielten tilastollinen käsittely

Alla olevassa kuvassa on millisekunnin verran äänitaajuisen signaalin aaltomuotoa. Pystyakselilla on jännite voltteina.

Algoritmit 2. Luento 3 Ti Timo Männikkö

2. TILASTOLLINEN TESTAAMINEN...

Algebralliset menetelmät virheenkorjauskoodin tunnistamisessa

Digitaalinen audio & video, osa I. Johdanto. Digitaalisen audion sovellusalueet. Johdanto. Taajuusalue. Psykoakustiikka. Johdanto Digitaalinen audio

Tilastotieteen kertaus. Vilkkumaa / Kuusinen 1

(b) Tarkista integroimalla, että kyseessä on todella tiheysfunktio.

Successive approximation AD-muunnin

Tietorakenteet, laskuharjoitus 7, ratkaisuja

isomeerejä yhteensä yhdeksän kappaletta.

Laskuharjoitus 5. Mitkä ovat kuvan 1 kanavien kapasiteetit? Kuva 1: Kaksi kanavaa. p/(1 p) ) bittiä lähetystä kohti. Voidaan

JATKUVAN AWGN-KANAVAN KAPASITEETTI SHANNON-HARTLEY -LAKI

Dynamiikan hallinta Lähde: Zölzer. Digital audio signal processing. Wiley & Sons, Zölzer (ed.) DAFX Digital Audio Effects. Wiley & Sons, 2002.

Todennäköisyyslaskun kertaus. Vilkkumaa / Kuusinen 1

D B. Levykön rakenne. pyöriviä levyjä ura. lohko. Hakuvarsi. sektori. luku-/kirjoituspää

MS-A0004/A0006 Matriisilaskenta

Laskuharjoitus 2 ( ): Tehtävien vastauksia

Johdatus todennäköisyyslaskentaan Kertymäfunktio. TKK (c) Ilkka Mellin (2005) 1

AV-muotojen migraatiotyöpaja - ääni. KDK-pitkäaikaissäilytys seminaari / Juha Lehtonen

Sovellettu todennäköisyyslaskenta B

Määrätty integraali. Markus Helén. Mäntän lukio

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

Monikanavaäänen perusteet. Tero Koski

Johdatus matematiikkaan

MS-A0501 Todennäköisyyslaskennan ja tilastotieteen peruskurssi

Diskreetin satunnaismuuttujan odotusarvo, keskihajonta ja varianssi

Transkriptio:

7. Kuvantiivistys 7.1. Perusteet Kuvan- tai laajemmin tiedontiivistys (tai -pakkaus) käsittää tärkeän algoritmien alueen informaation muokkaamiseksi muotoon, joka käyttää vähemmän muistitilaa kuin alkuperäinen tiedosto, ja palauttamisen tarvittaessa alkuperäiseen muotoonsa. Digitaalisten kameroiden, tietoverkkojen kuvat tai DVD-elokuvat (digital video disk) hyödyntävät tiivistysalgoritmeja. Lasketaan esimerkkinä, paljonko kahden tunnin mittainen digitaalinen televisioelokuva vaatii muistitilaa. Yhden 24-bittisen värikuvan tilavaatimus on 720 480 24 bittiä. Digitaalinen videoelokuva esitetään 30 kuvan taajuudella sekunnissa. Tällöin saadaan seuraava muistitavujen määrä yhtä sekuntia kohti. 30 kuvaa/s (720 480) pikseliä/kuva 3 tavua/pikseli = 31 104 000 tavua/s Kuvantiivistys 368

Kahden tunnin elokuva käsittää täten 31 104 000 tavua/s (60 2 ) s/h 2 h 2.24 10 11 tavua eli 224 gigatavua (GB). Tiivistämättömänä datana tätä varten tarvittaisiin 27 8.5 GB:n DVD-levyä. Jotta kahden tunnin elokuva mahtuisi yhdelle levylle, jokainen kuva on tiivistettävä keskimäärin kertoimella 26.3. Teräväpiirtotelevisio (HDTV, high density television) asettaa vielä suuremmat vaatimukset, koska siinä värikuvan resoluutio on 1920 1080 24 bittiä. Muistitila ei ole ainoa tiivistystä vaativa tekijä. Toinen on luonnollisesti tiedonsiirto. Esim. esitetään siirtoaika asuntojen puhelinkaapelien siirtonopeuksille hitaasta 56 Kbps (kilobittiä per sekunti) laajakaistalle 12 Mbps, kun siirretään yksi pieniresoluutioinen kuva, 128 128 24 bittiä. Aika on näille kahdelle 7.0 ja 0.03 s. Kuvantiivistys 369

Termi tiedontiivistys viittaa datan määrän vähentämiseen, joka data tarvitaan esittämään annettu määrä informaatiota. Data ja informaatio eivät ole sama asia. Data on keino, jolla informaatiota siirretään. Koska eri määrät dataa voivat vastata samaa määrää informaatiota, epärelevanttia tai toistettua informaatiota sisältävää esitystä sanotaan sisältävän redundanttia dataa. Jos b ja b viittaavat saman informaation kahden esityksen bittien (informaatiota välittävän yksikön) määrää, b bitin esityksen suhteellinen datan redundanssi on 1 1 C jossa tiivistyssuhde C määritellään seuraavasti. R b C b', Kuvantiivistys 370

Jos C=10 (tai 10:1), laajemmassa esitysmuodossa on 10 bittiä jokaista suppeamman 1 bittiä kohti. Laajemman esitysmuodon suhteellinen datan redundanssi on 0.9, mikä tarkoittaa 90 %:ia sen datasta olevan redundanttia. Kaksiulotteinen kuvadata sisältää kolmea tyyppiä datan redundanssia, joka voidaan tunnistaa ja hyödyntää. 1. Koodausredundanssi. Koodi on symbolien (kirjaimet, numerot, bitit tms.) järjestelmä, jota käytetään esittämään informaatiota tai tapahtumien jonoa. Jokainen informaation pala tai tapahtuma esitetään koodisymbolien jonona. Symbolien määrä kussakin koodisanassa on tämän pituus. 8-bittiset koodit, joita käytetään esittämään intensiteettejä kaksiulotteisissa taulukoissa, käsittävät enemmän bittejä, kuin tarvittaisiin edustamaan yksittäisen kuvan intensiteettejä (siinä ei käytetä kaikkia mahdollisia). Kuvantiivistys 371

2. Spatiaalinen ja ajallinen redundanssi. Koska yleensä kaksiulotteisten intensiteettitaulukoiden pikselit ovat spatiaalisesti korreloivia, ts. jokainen pikseli on samanlainen kuin tai riippuu naapuripikselistä, informaatio on tarpeettoman toisteista keskenään korreloivilla pikseleillä. Videosekvensseissä ajallisesti korreloivat pikselit (samanlaiset tai riippuvat pikselit peräkkäisissä kuvissa) toistavat informaatiota. 3. Epärelevantti informaatio. Useimmat kaksiulotteiset intensiteettitaulukot sisältävät informaatiota, jonka ihmisen näköjärjestelmä jättää huomioon ottamatta tai joka on tarpeetonta kuvan tarkoitetun käytön mielessä. Tällainen on redundanttia, sillä sitä ei käytetä. Kuva 7.1. esittää kuvattuja redundanssityyppejä. Kuvantiivistys 372

(a) (b) (c) Kuva 7.1. 256 256 8-bittisiä (tietokoneella tehtyjä) kuvia, joissa on (a) koodausredundanssia, (b) spatiaalista redundanssia ja (c) epärelevanttia informaatiota. Kuvantiivistys 373

Tarkastellaan kolmea em. redundanssityyppiä. Olkoon r k satunnaismuuttuja väliltä [0,L-1] esittäen M N-kuvan intensiteettejä. Luvun 3. tapaan r k esiintyy todennäköisyydellä p r nk ( rk ), k 0,1,2,..., L 1, MN jossa L on intensiteettitasojen määrä ja n k on k:nnen intensiteetin esiintymismäärä. Jos arvon r k esittämiseen käytettyjen bittien määrä on l(r k ), niin pikselin esittämiseen tarvittu keskimääräinen bittien lukumäärä on seuraava. L 1 Lavg l( rk ) pr ( rk ) (1) k 0 Kuvantiivistys 374

Koko kuvan esittämiseen tarvitaan MNL avg bittiä. Luonnollisessa binäärikoodissa jokainen informaation osa (esim. intensiteettiarvo) koodataan yhdellä 2 m koodiarvosta, jolloin jokaisen koodiarvon pituus on m bittiä. Kun intensiteetit esitetään luonnollisella m- bittisellä vakiomittaisella koodilla, kaavan (1) oikea puoli suppenee m bittiin. Näet korvattaessa jokainen l(r k ) pituudella m tämä voidaan siirtää (1):n summan kertoimeksi ja todennäköisyyksien summan ollessa yhtä kuin 1 jää jäljelle L avg =m. Esitetään kuvan 7.1.(a) intensiteettijakauma taulukossa 7.1. Jos luonnollista 8-bittistä koodia (taulukon 7.1. koodi 1) käytetään esittämään 4 mahdollista intensiteettiä, L avg eli keskimääräinen bittien määrä on tietysti 8, kun l 1 (r k ) = 8 kaikille r k. Kuvantiivistys 375

Taulukko 7.1. Vaihtelevanmittaisen koodauksen esimerkki. r k p(r k ) koodi 1 l 1 (r k ) koodi 2 l 2 (r k ) r 87 = 87 0.25 01010111 8 01 2 r 128 =128 0.47 10000000 8 1 1 r 186 =186 0.25 11000100 8 000 3 r 255 =255 0.03 11111111 8 001 3 r k kun 0-8 - 0 k 87, 128, 186, 255 Toisaalta, jos käytetään vaihtelevanmittaista koodia 2, tarvittu bittien keskimäärä on pienempi. L avg 0.25(2) 0.47(1) 0.25(3) 0.03(3) 1.81 bittiä Kuvantiivistys 376

Kuvaa (M=N=256) varten tarvittu kokonaismäärä on 256 256 1.81=118621 bittiä. Tällöin tiivistyssuhde on 256 2568 8 C 118621 1.81 ja suhteellinen redundanssi. 1 R 1 0.774 4.42 Kuvasta oli näin 77.4 % redundanttia. 4.42 Koodin 2 bittijonot oli määrätty optimaalisesti asettamalla lyhin koodi kaikkein todennäköisimmälle ja kasvattaen koodin pituutta todennäköisyyden pienentyessä. Lyhin kiinteänpituinen koodi neljälle eri tapaukselle olisi kahdenmittainen koodi: {00,01,10,11}. Tiivistyssuhde olisi 8/2=4, joka on 10 % huonompi kuin yo. Kuvantiivistys 377

Koodausredundanssia esiintyy, kun koodit eivät käytä hyväkseen tietoa eri tapausten esiintymistodennäköisyydestä, kuten on yleensä aina käytettäessä luonnollista binäärikoodia. Kun kuvissa useimmiten on säännöllisenmuotoisia kohteita, joilla on paljon joitakin samoja intensiteettiarvoja, toiset intensiteettiarvot ovat paljon todennäköisempiä kuin toiset, ts. kuvan histogrammijakauma ei ole tasainen. Luonnollinen binäärikoodi kuitenkin tukeutuu tasanjakautuneeseen antaessaan yhtä pitkän koodin jokaiselle intensiteettiarvolle. Kuvantiivistys 378

Kuva 7.1.(b) havainnollistaa spatiaalista redundanssia. Vastaavasti ajallinen redundanssi voitaisiin kuvitella, jos pidettäisiin kuvan vaaka-akselia aikana. Tässä vallitsee oheiset piirteet. 1. Kaikki 256 intensiteettiarvoa ovat yhtä todennäköisiä. Kuva 7.2. esittää kuvan 7.1.(b):n tasajakautuneen histogrammin. 2. Kun jokaisen suoran intensiteetti oli satunnaisesti määrätty, sen pikselit ovat riippumattomia muiden pikselien intensiteeteistä pystysuorassa suunnassa. 3. Koska vaakasuorien suorien pikselit ovat identtisiä, ne ovat maksimaalisesti korreloituneita keskenään (täydellisesti toisistaan riippuvia). Kuvantiivistys 379

5 Kuva 7.2. Intensiteettihistogrammi kuvan 7.1.(b) sisällöstä. Kuvantiivistys 380

Ensimmäinen ominaisuus osoittaa, että kuva 7.1.(b) 8-bittisenä taulukkona ei ole tiivistettävissä vaihtelevanmittaisella koodauksella. Tässä on nimittäin, toisin kuin kuvassa 7.1.(a), tasanjakautunut intensiteettijakauma, joka minimoi keskimääräisen bittien määrän (1) s. 374. Toinen ja kolmas ominaisuus paljastavat huomattavan spatiaalisen redundanssin, jota voidaan vähentää esittämällä kuva 7.1.(b) koodauksen toistonpituuspareilla (run-length pair). Tässä parin ensimmäinen alkio määrittää, missä alkaa uusi intensiteettiarvo esiintyä, ja toinen, kuinka monta tällaista arvoa eli toistoa on peräkkäin. Esimerkkikuva, jossa on 8-bittisiä intensiteettejä, saa tiivistyssuhteen (256 256 8)/[(256+256) 8]=128 eli 128:1. Jokainen pikselisuora korvataan yhdellä 8-bittisellä arvolla ja 256 on toistojen lukumäärä. Kuvantiivistys 381

Useimmat kuvat ovat spatiaalisesti korreloivia (sekä vaaka- että pystysuunnassa). Useimmiten (erilaisia reunoja lukuun ottamatta) pikselien intensiteetit pystytään ennustamaan naapuripikselien perusteella. Yksittäisen pikselin sisältämä informaatio on täten pieni. Visuaalisesta informaatiosta suuri osa on redundanttia, helposti tiivistettävää. Käytettäessä tietoa vierekkäisten pikselien eroista tai toiston pituuksista (run-length-arvoja) voidaan kuvaa tiivistää tehokkaasti. Tällaisia muunnoksia kutsutaan kuvauksiksi. Tämä on palautettava (reversible), jos alkuperäinen kuva on mahdollista täysin rekonstruoida. Muuten muunnos on palautumaton (irreversible). Kuvantiivistys 382

Yksinkertainen tapa tiivistää on poistaa liika data. Ihmisen näköjärjestelmä jättää käyttämättä osan visuaalisesta informaatiosta tai osa tästä on tarpeetonta ajatellen kuvan käyttötarkoitusta. Täten tietokoneella tuotettu kuva 7.1.(c) voidaan tiivistää hyvin tehokkaasti, sillä se sisältää (lähes) homogeenisen harmaan neliön. Se voidaan esittää yhdellä 8-bittisellä arvolla! Alkuperäinen 256 256 8-bittinen taulukko pienenee yhdeksi tavuksi, 8 bittiä, jolloin tiivistyssuhde on peräti 65536:1. Aluksi pitää kuitenkin selvittää kuvan 7.1.(c) intensiteettijakauma, joka nähdään kuvassa 7.3.(a). Vaikka ei havaittu itse kuvasta, siinä ei kuitenkaan ollut täysin yhtä harmaata väriä (yhden arvon jakauma), vaan intensiteettejä väliltä [125,131]. Täten tiivistys yhdeksi tavuksi hukkaisi hivenen kuvan sisältämää informaatiota, ei tosin visuaalisessa mielessä merkittävää. Kuvassa 7.3.(b) jakauma on tasattu. Tällöin kuva muokkautuu muotoon, joka on kuvassa 7.3.(b) sisältäen kaksi vakiointensiteettistä, toisiinsa nähden kohtisuoraa aluetta. Olisiko tämä informaatio tärkeää, riippuisi sovelluksesta. Esim. lääketieteellisessä röntgenkuvassa se voisi olla. Kuvantiivistys 383

Kuva 7.3. Kuvan 7.1.(c) histogrammi ja (b) tämän tasauksen jälkeen muokattu kuva. Kuvantiivistys 384

Kuinka vähällä bittien määrällä kuva voidaan esittää? Informaatioteoria antaa matemaattisen viitekehyksen vastauksena kysymykseen. Satunnainen tapahtuma E, jonka todennäköisyys on P(E), sisältää 1 I( E) log log P( E) P( E) (2) yksikköä informaatiota. Jos P(E)=1 eli tapahtuma aina sattuu, I(E)=0 ja siihen ei liitetä mitään informaatiota. Logaritmiesityksen (2) kantaluku 2 määrää informaatiomitan yksikön. Tämän ollessa 2 informaatioyksikkö on bitti. Jos P(E)=1/2, I(E)=-log 2 1/2 eli 1 bitti. Kun toinen kahdesta yhtä todennäköisestä tapahtumasta esiintyy, siirretyn informaation määrä on 1 bitti. Esimerkkinä olkoon rahan heitto. Kuvantiivistys 385

Kuvan intensiteettien histogrammijakaumaa käytetään estimoitaessa tapahtumien (symbolien, merkkien tai intensiteettiarvojen r k ) todennäköisyyttä. Saadaan entropia H (merkinnät määritelty edellä s.374) H L 1 k0 p r ( r k )log joka kuvaa keskimääräistä tapahtumiin liittyvää informaatiota. Koska logaritmin kantaluku on 2, (3) on keskimääräinen informaatio intensiteettiarvoa kohti esitettynä bitteinä. Täten entropia antaa koodauksen bittien minimimäärän. Kuvan 7.1.(a) entropiaksi saadaan taulukon 7.1. todennäköisyyksillä seuraava. 16614. bittiä/pikseli p ( r 2 r k H 0.25log2 0.25 0.47log2 0.47 0.25log2 0.25 0.03log2 0.03 0.25( 2) 0.47( 1.09) 0.25( 2) 0.03( 5.06) ) (3) Kuvantiivistys 386

Kuvan 7.1.(b) ja (c) entropiaksi saadaan puolestaan 8 bittiä/pikseli ja 1.566 bittiä/pikseli. Kuva 7.1.(a) sisältää eniten visuaalista informaatiota, mutta sillä on melkein yhtä pieni entropia kuin kuvalla 7.1.(c), jossa on tuskin mitään visuaalista informaatiota. Kuvan 7.1.(b) entropia on suuri, vaikka visuaalista informaatiota siinä on enintään saman verran kuin kuvassa 7.1.(a). Ei entropian suuruus eikä siis informaatio ole mitenkään intuitiivinen mitta. Tarkkuuskriteereillä on käytännöllinen merkitys mitattaessa kuvan muutosten vaikutusta. Kun epärelevanttia visuaalista informaatiota hävitetään kuvasta, kahdentyyppisiä kriteerejä käytetään arvioitaessa informaation vähentämisen vaikutusta: (1) objektiiviset ja (2) subjektiiviset kriteerit. Kuvantiivistys 387

Kuvantiivistys 388 Esitettäessä tiivistyksessä tapahtuva informaation häviö matemaattisena funktiona on kyseessä objektiivinen arvio. Yksi tällainen on keskineliövirheen neliöjuuri (root mean square error, RMS) kahden kuvan välillä laskettuna. Seuraavassa on esitetty kuvan f(x,y) ja sen approksimaation (tiivistetyn kuvan) erotus mille tahansa arvoille x ja y. Koko kuvalle virhe saadaan summana kuvan ollessa kooltaan M N. RMS-virhe on tällöin seuraava. ), ( ), ( ), ( y x f y x f y x e 1 0 1 0 ), ( ), ( M x N y y x f y x f 2 1/ 1 0 1 0 2 ), ( ), ( 1 M x N y y x f y x f MN RMS

Ajateltaessa kuvan approksimaatio alkuperäisen kuvan ja kohinan e(x,y) summana voidaan määritellä keskineliöllinen signaali-kohinasuhde (mean-square signal-to-noise ratio). SNR ms x0 M1N1 f ( x, y) f ( x, y) x0 y0 M1N1 y0 f ( x, y) Subjektiivinen arviointi tehdään vertaamalla alkuperäistä kuvaa ja toisaalta tiivistettyä, sitten koodauksen purkamisen jälkeen saatua kuvaa keskenään. Tarkkuudelle voidaan antaa hyvyysarvo, esim. joukosta {paljon huonompi, huonompi, vähän huonompi, samanlainen, vähän parempi, parempi, paljon parempi}. 2 2 Kuvantiivistys 389

kuva 7.4. esittää kolme erilaista kuvan 7.1.(a) approksimaatiota. Kuvan 7.1.(a) ja approksimaatioiden välillä laskettiin RMS-virhe. Kuvan 7.4.(a) tapauksessa se oli 5.17, tapauksessa (b) 15.67 ja (c) 14.17. Näin objektiivisen virhearvon mielessä paremmuusjärjestys on 7.4.(a), (c) ja (b). Kuva 7.4.(b) ja (c) ovat kuitenkin RMSarvoltaan lähellä toisiaan. Silti visuaalisessa mielessä jälkimmäisessä on selviä virheitä, kuten katkeilleet suorat ja pienet tummat neliöt (artefaktoja) tähdessä, joten (b) näyttäisi paremmalta. RMS-arvojen ero on kuitenkin pieni. Kuvan 7.4.(c) silmiinpistävät virheelliset pikselit eivät kuitenkaan vaikuta RMS-arvoon sen enempää kuin kuvan 7.4.(b) virheelliset, vaikka nämä eivät visuaalisesti erotu kovin hyvin. Sekä (b):ssä että (c):ssä on erityisesti kohteiden reunoissa epätarkkuutta. Kuvantiivistys 390

Kuva 7.4. Kuvan 7.1.(a) kolme erilaista approksimaatiota. Kuvantiivistys 391

Tarkastellaan seuraavaksi tiivistysjärjestelmää (kuva 7.5.), joka käsittää kaksi pääosaa, koodaaja ja koodin purkaja (encoder, decoder). Edellinen tiivistää, ja jälkimmäinen purkaa tiivistyksen datan palauttamiseksi visuaalisesti nähtäväksi kuvaksi. Molemmat ovat tietokoneen yhteydessä yleensä ohjelmatoteutuksia, kuten verkkoselaimissa tai kuvankäsittelyohjelmissa. Myös laitteiston ja ohjelmiston yhdistelmiä on olemassa, esim. DVD-laitteet. Koodekki on laite tai ohjelma, joka tekee molemmat. Koodaajan tiivistämä kuva talletetaan muistiin tai siirretään verkossa toisaalle. Koodin purkaja rekonstruoi eli palauttaa kuvan. Tiivistys voi olla häviöllinen (lossy) tai häviötön (lossless), jolloin alkuperäinen kuva saadaan täydellisesti palautettua. Häviöllisessä pyritään luonnollisesti rajoittumaan vähäiseen (lähinnä redundantin informaation) häviöön eli kuvan muuttumiseen. Taulukossa 7.3. on käytettyjä tiivistysstandardeja ja tiedostomuotoja. Kuvantiivistys 392

f ( x, y) tai koodaaja f ( x, y, t) kuvaus kvantisointi symbolien koodaus symbolien dekoodaus käänteiskuvaus f ( x, f ( x, y) tai y, t) koodin purkaja Kuva 7.5. Tiivistysjärjestelmän lohkokaavio. Muuttuja t tarkoittaa aikaa (videokuvissa). Kuvauksessa tehdään muunnos (ei yleensä visuaalinen) spatiaalisen ja ajallisen redundanssin vähentämiseksi. Kvantisoinnissa kuvauksen tarkkuutta vähennetään annetun kriteerin puitteissa. Symbolien koodauksessa luodaan kiinnitetyn- tai vaihtelevanpituiset koodit kvantisoidulle datalle. Symbolien dekoodauksessa ja käänteiskuvauksessa on edellisille vastakkaiset toiminnat. Kuvantiivistys 393

Taulukko 7.3. Kuvan tiivistysstandardeja. Kuvantiivistys 394

Taulukko 7.3. (jatkoa) Kuvan tiivistysstandardeja. Kuvantiivistys 395

Taulukko 7.3. (jatkoa) Kuvan tiivistysstandardeja ja tiedostomuotoja. Kuvantiivistys 396

7.2. Tiivistysmenetelmistä Tiivistysmenetelmiä on useita. Käydään suppeasti läpi vain muutama. Yksi ensimmäisistä koodin redundanssin poistoon käytetyistä menetelmistä oli Huffmanin koodaus (käytetään seuraavissa: CCITT, JBIG2, JPEG, MPEG-1,2,4 ja H.261-264). Koodattaessa informaatiolähteen symboleja yksittäin Huffmanin algoritmi antaa (eräin edellytyksin) pienimmän määrän koodaussymboleja lähdesymbolia kohti. Lähdesymbolit voivat olla joko pikselien intensiteettejä tai intensiteettikuvauksen (kuva 7.5.) tuloksia, kuten pikselien erotuksia tai toiston pituuksia. Aluksi lasketaan eri lähdesymbolien määrät kuvassa. Lajitellaan nämä vähenevään järjestykseen. Korvataan sitten todennäköisimmin esiintyvät lyhyillä koodeilla ja harvemmin esiintyvät hieman pitemmillä koodeilla. Kuvantiivistys 397

Kuva 7.6. esittää binäärikoodauksen esimerkin. Ensimmäisessä vaiheessa hypoteettinen lähdesymbolijoukko on vasemmassa sarakkeessa ja seuraavassa symbolien esiintymistodennäköisyydet, jotka on jo lajiteltu. Redusoidaan ensimmäinen symbolipari laskemalla yhteen kaksi pienintä todennäköisyyttä. Jos on yhtä suuria, voidaan niistä valita mikä tahansa. Tässä tapauksessa lasketaan 0.04+0.06=0.1. Muodostetaan kahdesta valitusta symbolista yhdistetty symboli. Näin jatketaan, kunnes tullaan viimeiseen yhdistämiseen oikeanpuolisessa sarakkeessa. Prosessi voidaan esittää myös binääripuuna. Kuvantiivistys 398

alkuperäinen lähde redusointi symboli todennäköisyys 1 2 3 4 a 2 0.4 0.4 0.4 0.4 0.6 a 6 0.3 0.3 0.3 0.3 0.4 a 1 0.1 0.1 0.2 0.3 a 4 0.1 0.1 0.1 a 3 0.06 0.1 a 5 0.04 Kuva 7.6. Huffmanin redusoinnit. Kuvantiivistys 399

Huffmanin algoritmin toisessa vaiheessa koodataan jokainen redusoitu, yhdistetty symboli aloittaen lopusta (sarake 4) ja palaten takaisin alkuperäisiin symboleihin. Symbolit 0 ja 1 ovat kahden symbolin minimaalisenpituinen binäärikoodi. Kuvan 7.7. mukaan koodit määrätään symboleille (kunkin sarakkeen oikea binäärilukujono on koodi) ylemmälle 0 ja alemmalle 1 (tai kääntäen). Näin aluksi kaksi koodia ovat 0 ja 1. Sitten todennäköisyyden 0.6 yhdistelmän osat saavat koodit 00 ja 01 jne. aina sarakkeeseen 1 asti. Kaikkien koodien keskimääräinen pituus on L avg ( 0.4)1 (0.3)2 (0.1)3 (0.1)4 (0.06)5 (0.04)5 2.2 bittiä/pikseli, ja lähteen entropia on 2.14 bittiä/symboli. Kuvantiivistys 400

alkuperäinen lähde redusointi symboli toden- koodi 1 2 3 4 näköisyys a 2 0.4 1 0.4 1 0.4 1 0.4 1 0.6 0 a 6 0.3 00 0.3 00 0.3 00 0.3 00 0.4 1 a 1 0.1 011 0.1 011 0.2 010 0.3 01 a 4 0.1 0100 0.1 0100 0.1 011 a 3 0.06 01010 0.1 0101 a 5 0.04 01011 Kuva 7.7. Huffman-koodien laskeminen. Kuvantiivistys 401

Huffmanin algoritmi luo optimaalisen koodin, kunhan symbolien frekvenssit tunnetaan etukäteen ja symbolien esiintymät ovat toisistaan riippumattomia. Edellinen on kuvasta monesti tiedossa, mutta jälkimmäinen kovin harvoin, joten optimaalisuus näyttäytyy tässä teoreettisena. Koodeille on olennaista etuliiteominaisuus, ts. mikään niistä ei ole toisensa etuliite eli ole jonkin toisen koodin alkuosan kanssa sama. Muuten eivät koodit olisi erotettavissa toisistaan niiden pituuksien vaihdellessa. Generoidut koodit talletetaan hakutaulukkoon, josta niitä haetaan koodattaessa alkuperäisiä symboleja. Purettaessa koodi toimitaan vastakkaiseen suuntaan. Tällöin havaitaan etuliiteominaisuus välttämättömäksi, koska jos olisi esim. kaksi koodia 01 ja 011, ei kohdattaessa 01, tiedettäisi, valitako 01 vai edetä yksi merkki eteenpäin. Kuva 7.8. esittää esimerkkikuvan kokoa 512 512 8 bittiä. Kuvantiivistys 402

a b Kuva 7.8.(a) Kuva ja (b) sen histogrammi, joka ei ole tasanjakautunut, ts. on periaatteessa lupaava Huffman-koodaukselle. Tämä tuotti koodauksen 7.428 bittiä/pikseli, jossa on laskettu mukaan kooditaulukon koko (taulukko tarvitaan oheistietona koodin purkamista varten). Tällöin tiivistyssuhteeksi tuli melko vaatimaton 1.077 ja suhteelliseksi redundanssiksi 0.0715 eli 7.15 % informaatiosta oli redundanttia. Tavallisesti (esim. JPEG ja MPEG) käytetään esilaskettua Huffman-taulukkoa, joka on laskettu kokeellisesta oletusdatasta etukäteen. Kuvantiivistys 403

Aritmeettinen koodaus ei käytä vaihtelevanmittaisia koodeja, kuten Huffman-, Golomb- tai Golomb-Rice-koodaukset, vaan generoi eilohko-koodeja. Siinä ei ole yksi-yhteen-vastaavuutta lähdesymbolien ja koodisanojen välillä, vaan kokonainen lähdesymbolien jono koodataan aritmeettisella koodisanalla. Koodisana itse määrittää reaalilukuvälin 0:n ja 1:n väliltä. Symbolien määrän kasvaessa sitä varten määrätty lukuväli pienenee ja vaadittujen informaatioyksikköjen (bitti) määrä kasvaa. Jokainen datan symboli vähentää välin pituutta esiintymistodennäköisyytensä mukaan. Kun menetelmä ei edellytä, toisin kuin Huffman, että lähdesymbolit koodataan kokonaislukumäärällä koodisymboleja, saatetaan päästä lähemmäksi teoreettista (Shannonin teoreeman) minimiä. Kuvantiivistys 404

Kuva 7.9. esittää esimerkin koodattaessa viiden symbolin data (viesti) a 1 a 2 a 3 a 3 a 4 nelisymbolisesta lähteestä. Aloitetaan puoliavoimesta välistä [0,1). Taulukko 7.4. esittää, kuinka lukuväli jaetaan ensiksi neljään osaan riippuen lähdesymbolien todennäköisyyksistä. Esim. symboli a 1 liittyy väliin [0,0.2). Koska se on datan ensimmäinen symboli, supistetaan väli aluksi tähän [0,0.2) (kuva 7.9.). Tämä väli jaetaan alkuperäisten lähdesymbolien todennäköisyyksien mukaan, ja prosessi jatkuu seuraavan symbolin käsittelyllä. Symboli a 2 väliin [0.04,0.08), a 3 edelleen väliin [0.056,0.072) jne. Viimeinen symboli, joka on täytynyt varata viestin erityiseksi päätössymboliksi, supistaa väliin [0.06752,0.0688). Luonnollisesti mitä tahansa lukua osaväliltä, esim. 0.068, voidaan käyttää koodauksessa edustamaan viestiä. Kuvantiivistys 405

Kuva 7.9. Aritmeettisen koodauksen esimerkki. lähdesymboli todennäköisyys alkuperäinen osaväli a 1 0.2 [0.0,0.2) a 2 0.2 [0.2,0.4) a 3 0.4 [0.4,0.8) a 4 0.2 [0.8,1.0) Taulukko 7.4. Aritmeettisen koodauksen esimerkki. Kuvantiivistys 406

Kuvan 7.9. esimerkissä kolmea desimaalia käytettiin koodaamaan viittä symbolia. Tämä vastaa 0.6 desimaalinumeroa lähdesymbolia kohti, kun taas sen entropia on 0.58. Ero on pieni. Esimerkkisymbolijono oli luonnollisesti luonnottoman lyhyt ajatellen todellisia tiivistettäviä kuvia, joissa aritmeettinen koodaus voi antaa hyvän tiivistyssuhteen ollen lähellä optimaalista. Käytännössä kaksi tekijää vaikuttavat heikentävästi tiivistystulokseen. (1) Tarvitaan lopetussymboli kunkin viestin loppuun. (2) Tietokoneen lukujen äärellinen esitystarkkuus vaikuttaa. Jälkimmäinen rajoittaa selvästi jakojen jatkamista. Aritmeettisen koodauksen toteutuksissa tähän vastataan kahdella keinolla, skaalaus ja pyöristys. Skaalaus normalisoi jokaisen osavälin uudelleen väliin [0,1) ennen uutta jakoa. Pyöristyksellä hoidetaan tarkkuuden säilyminen huolimatta äärellisestä lukujen esitystarkkuudesta. Kuvantiivistys 407

Muita tiivistysmenetelmiä ovat LZW-koodaus (integroitu formaatteihin GIF, TIFF, PDF ja PNG), toistojen koodaus (run-length encoding, RLE) (Fax-laitteet aikoinaan) sopii hyvin binäärikuville, symboliperusteinen (usein esiintyviä kuvan osia) koodaus, bittitason koodaus sekä lohkojen muunnoskoodaus (JPEG, M-JPEG, MPEG- 1,2,4, H.261-264, DV ja HDV sekä VC-1). Yleensä käytetään muunnoksia: diskreetti nopea Fourier (DFT), Walsh-Hadamar (WHT), diskreetti kosini (DCT) ja parhaimpana pidetty Karhunen- Loève (KLT) informaation tiivistyksen mielessä. Aallokkeet (wavelets) ovat tulleet tehokkaiksi myös tiivistyksessä. Kuvantiivistys 408

Tarkastellaan lopuksi prediktiivistä (ennustavaa) koodausta (JBIG2, JPEG, JPEG-LS, MPEG-1,2,4, H.261-264, HDV ja VC-1). Tätä on sekä häviöttömänä että häviöllisenä. Silmäillään vain häviötöntä. Jälkimmäisellä voidaan tietysti saada parempia tiivistyssuhteita, mutta toisinaan tarvitaan mahdollisuutta purkaa eli palauttaa täysin alkuperäinen data koodauksesta. Prediktiivinen koodaus perustuu ajatukseen eliminoida lähekkäisten, spatiaalisesti tai ajallisesti (videoissa), pikselien redundanssia. Pikselin uusi informaatio määrätään pikselin todellisen ja ennustetun arvon erona. Ennakoidaan kunkin näytteen (pikselin) arvo edellisen (tai edellisten) näytteiden avulla. Kuvantiivistys 409

Ennustettu arvo pyöristetään lähimmäksi kokonaisluvuksi, ja tätä käytetään laskettaessa erotus eli ennusteen virhe e( n) f ( n) f ( n), joka koodataan vaihtelevanmittaisella koodilla tiivistetyn datan seuraavan alkion generoimiseksi. Koodia purettaessa, kun se on ensin purettu takaisin vaihtelevanmittaisesta koodauksesta, rekonstruoidaan virhe e(n) ja suoritetaan käänteisoperaatio. f ( n) e( n) f ( n) Kuvantiivistys 410

Yleensä ennuste lasketaan lineaarisesti. m f ( n) roundi f i1 ( n i) Kaavassa i :t ovat kertoimia. Jos m=1, tämä oli ensimmäisen kertaluvun ennustaja. Korkeammissa kertaluvuissa erotus lasketaan pitemmällä kuin yhdellä välillä eli vierekkäisillä näytteillä. Häviöllisessä ennustamisessa käytetään vaihtelevia lokaaleja, globaaleja tai adaptiivisia tapoja. Kuvassa 7.10. esitetään ennusteen virheen laskentaa esimerkkikuvalle, kun m=1 ja 1 =1. Kuvantiivistys 411

a b c d Kuva 7.10.(a) Avaruussukkulasta otettu kuva Maasta (NASA), (b) kuvan intensiteettihistogrammi, (c) ennusteen virhe ja (d) virheen histogrammi, jonka jakauma on kapea (keskihajonta paljon pienempi kuin alkuperäisessä kuvassa) eli hyvä tarkoitukseensa. Vaiheen (d) jälkeen koodattaisiin jollakin vaihtelevanmittaisella tavalla. Kuvantiivistys 412

Pohditaan vielä suppeasti peräkkäisten videokuvien tiivistämistä ajallisessa mielessä kuvan 7.11. avulla. Tämä esittää esimerkin, jossa lasketaan kahden peräkkäisen kuvan välisen ennusteen virhe edeltävien ideoiden pohjalta. Tällaista käytetään luonnollisesti lähtökohtana videoiden tiivistämisessä, jota ei tässä tarkemmin esitetä. Kun kuvassa 7.11.(d) virheen jakauma on sangen kapea (keskihajonta pieni), ts. virhettä on vähän eli perättäiset kuvat ovat jokseenkin samanlaisia, tämä antaa hyvän lähtökohdan tiivistykselle aikamuuttujan suhteen. Kuvantiivistys 413

Kuva 7.11. (a) ja (b) ovat kuvia Maasta (NASA), (c) kuvien välisen ennusteen virhe ja (d) tämä jakauma histogrammina. Kuvantiivistys 414