JANNE E. KORHONEN JPEG- ja JPEG2000-kuvaformaattien laskennallinen tarkastelu. Kandidaatintyö

Samankaltaiset tiedostot
Kuvan pakkaus JPEG (Joint Photographic Experts Group)

VÄRISPEKTRIKUVIEN TEHOKAS SIIRTO TIETOVERKOISSA

TL5503 DSK, laboraatiot (1.5 op) Kuvasignaalit. Jyrki Laitinen

SGN Signaalinkäsittelyn perusteet Välikoe Heikki Huttunen

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

Videon tallentaminen Virtual Mapista

Matematiikka ja teknologia, kevät 2011

S Laskennallinen Neurotiede

Ratkaisuehdotukset LH 8 / vko 47

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

IIR-suodattimissa ongelmat korostuvat, koska takaisinkytkennästä seuraa virheiden kertautuminen ja joissakin tapauksissa myös vahvistuminen.

4 Matemaattinen induktio

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

S Laskennallinen Neurotiede

z 1+i (a) f (z) = 3z 4 5z 3 + 2z (b) f (z) = z 4z + 1 f (z) = 12z 3 15z 2 + 2

SGN-1251 Signaalinkäsittelyn sovellukset Välikoe Heikki Huttunen

Kuvien lisääminen ja käsittely

MATEMATIIKKA. Matematiikkaa pintakäsittelijöille. Ongelmanratkaisu. Isto Jokinen 2017

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

Kuvan- ja videontiivistys. Mikko Nuutinen

Luku 8. Aluekyselyt. 8.1 Summataulukko

OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012

4. Funktion arvioimisesta eli approksimoimisesta

Inversio-ongelmien laskennallinen peruskurssi Luento 4

6.6. Tasoitus ja terävöinti

Ei välttämättä, se voi olla esimerkiksi Reuleaux n kolmio:

LAS- ja ilmakuva-aineistojen käsittely ArcGIS:ssä

Harjoitus 7: NCSS - Tilastollinen analyysi

PERUSLASKUJA. Kirjoita muuten sama, mutta ota KAKSI välilyöntiä (SEURAA ALUEMERKINTÄÄ) 4:n jälkeen 3/4 +5^2

Inversio-ongelmien laskennallinen peruskurssi Luento 2

Tietorakenteet ja algoritmit

Tehtävien ratkaisut

Kojemeteorologia. Sami Haapanala syksy Fysiikan laitos, Ilmakehätieteiden osasto

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

1 YLEISTÄ 1. 2 KARTAT yleistä Avoimien aineistojen tiedostopalvelu 2 3 KARTAN TEKEMINEN JA SIIRTÄMINEN PUHELIMEEN 4

Muita kuvankäsittelyohjelmia on mm. Paint Shop Pro, Photoshop Elements, Microsoft Office Picture Manager

Ohjeita kirjan tekemiseen

Laskuharjoitus 9, tehtävä 6

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

TL5503 DSK, laboraatiot (1.5 op) Audiosignaalit (ver 1.0) Jyrki Laitinen

Mitä on konvoluutio? Tutustu kuvankäsittelyyn

PIKSELIT JA RESOLUUTIO

Matematiikan peruskurssi 2

S Havaitseminen ja toiminta

Valokuvien matematiikkaa

Matematiikan tukikurssi

Matlab-tietokoneharjoitus

Matematiikan tukikurssi

8 KANNAT JA ORTOGONAALISUUS. 8.1 Lineaarinen riippumattomuus. Vaasan yliopiston julkaisuja 151

KUVAN TUOMINEN, MUOKKAAMINEN, KOON MUUTTAMINEN JA TALLENTAMINEN PAINTISSA

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

Ratkaisuehdotukset LH 7 / vko 47

Kompleksiluvut signaalin taajuusjakauman arvioinnissa

SGN-1200 Signaalinkäsittelyn menetelmät, Tentti

Videon tallentaminen Virtual Mapista

JOHDATUS TEKOÄLYYN TEEMU ROOS

JOHDATUS TEKOÄLYYN TEEMU ROOS

TEEMA 2 TAULUKKODATAN KÄSITTELY JA TIEDON VISUALISOINTI LUENTO 4

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

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

Kopioi cd-levyt kiintolevylle, niin fyysiset levyt joutavat eläkkeelle.

Kuvan pienentäminen Paint.NET-kuvankäsittelyohjelmalla

Ksenos Prime Käyttäjän opas

Uudet ominaisuudet. Versio 2.10 BL F00

ELEC-C5070 Elektroniikkapaja (5 op)

5 Lineaariset yhtälöryhmät

Jatkuvat satunnaismuuttujat

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta Toteuta Pythonilla seuraava ohjelma:

Digitaalinen signaalinkäsittely Kuvankäsittely

Digikuvan peruskäsittelyn. sittelyn työnkulku. Soukan Kamerat Soukan Kamerat/SV

Tehtävä 2: Tietoliikenneprotokolla

LABORAATIOSELOSTUSTEN OHJE H. Honkanen

Tilastollinen vastepintamallinnus: kokeiden suunnittelu, regressiomallin analyysi, ja vasteen optimointi. Esimerkit laskettu JMP:llä

4.0.2 Kuinka hyvä ennuste on?

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

Diskreetin matematiikan perusteet Malliratkaisut 2 / vko 38

= 2 L L. f (x)dx. coshx dx = 1 L. sinhx nπ. sin. sin L + 2 L. a n. L 2 + n 2 cos. tehdään approksimoinnissa virhe, jota voidaan arvioida integraalin

LUKUTEORIA johdantoa

Oletetaan, että virhetermit eivät korreloi toistensa eikä faktorin f kanssa. Toisin sanoen

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014

Passikuva - Käyttöohje Pispalan Insinööritoimisto Oy

MS-A0003/A0005 Matriisilaskenta Malliratkaisut 5 / vko 48

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

Signaalien datamuunnokset. Digitaalitekniikan edut

Signaalien datamuunnokset

Ilkka Mellin Todennäköisyyslaskenta Osa 3: Todennäköisyysjakaumia Moniulotteisia todennäköisyysjakaumia

6. Analogisen signaalin liittäminen mikroprosessoriin Näytteenotto analogisesta signaalista DA-muuntimet 4

Demo 1: Simplex-menetelmä

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

Injektio (1/3) Funktio f on injektio, joss. f (x 1 ) = f (x 2 ) x 1 = x 2 x 1, x 2 D(f )

Tehdään laadukas painotuote

Matematiikan tukikurssi, kurssikerta 2

2.3 Virheitä muunnosten käytössä

KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA

JOHDATUS TEKOÄLYYN TEEMU ROOS

Elisa Kirja. PDF e-kirjojen käsittelyohjeet

Johdatus rakenteisiin dokumentteihin

LAS-TIEDOSTON SISÄLTÖ LIITE 2/1

Transkriptio:

JANNE E. KORHONEN JPEG- ja JPEG2000-kuvaformaattien laskennallinen tarkastelu Kandidaatintyö Tarkastaja: Heikki Huttunen Jätetty tarkistettavaksi 14.12.2014

I TIIVISTELMÄ TAMPEREEN TEKNILLINEN YLIOPISTO Signaalinkäsittelyn ja tietoliikennetekniikan koulutusohjelma JANNE E. KORHONEN: JPEG vs. JPEG2000 Kandidaatintyö, 24 sivua, 2 liitesivua Joulukuu 2014 Pääaine: Signaalinkäsittely ja multimedia Tarkastajat: Heikki Huttunen Avainsanat: JPEG, JPEG2000, SSIM, PSNR Kuvankäsittely on ala joka kehittyy jatkuvalla tahdilla. Tästä huolimatta uusia kuvaformaatteja kuluttajakäyttöön ei ole otettu käyttöön laajemmin JPEG kuvaformaatin jälkeen. Tässä työssä vertailen ja esittelen JPEG ja JPEG2000 kuvaformaatteja niin teoreettisesti kuin laskennallisestikkin.

II ALKUSANAT Olen opiskellut ja harrastanut valokuvausta useita vuosia joten työn aihe on luonnollinen jatkumo yhdistää opiskelu ja hupi. Tämän kandidaatintyön tekemiseenn on mennyt enemmän aikaa kuin piti. Kiitos kaikille. Seuraavaksi ajattelin nukkua. Kiitokset myös ohjaalleni Heikki Huttuselle ilman hänen ohjeitaaan ja kärsivällisyyttään ei tämä työ olisi koskaan valmistunut.

III SISÄLLYS 1. Johdanto.................................... 1 2. JPEG- ja JPEG2000-kuvaformaatit...................... 3 2.1 JPEG- ja JPEG2000-kuvaformaattien pakkaus............. 3 2.2 JPEG ja JPEG2000 välisiä eroavaisuuksia............... 9 2.2.1 Pieni tiedostokoko.......................... 9 2.2.2 Mielenkiintoinen alue, Region of interest, ROI........... 10 2.2.3 Progressiivinen lähetys........................ 11 2.2.4 Virheensietokyky.......................... 12 2.3 JPEG- ja JPEG2000-kuvaformaattien tulevaisuus........... 12 3. Testikuvat ja laskennallinen toteutus..................... 14 3.1 Laskennallinen toteutus......................... 15 3.2 Huippu signaali-kohinasuhde....................... 17 3.3 Rakenteellinen samannäköisyys..................... 18 4. Tulokset..................................... 20 4.1 Pakkausaika................................ 20 4.2 Objektiivinen laatu............................ 21 4.3 Subjektiivinen laatu........................... 22 5. Yhteenveto................................... 24 Kirjallisuutta.................................... 25 A. Liitteitä..................................... 26 A.1 JPEG pakkaus funktio.......................... 26 A.2 JPEG2000 pakkaus funktio........................ 27

IV TERMIT JA NIIDEN MÄÄRITELMÄT DWT DCT BSI DNG HVS ISO JPEG Diskreetti Wavelet-muunnos (eng.discrete Wavelet transform) Diskreetti Kosini-muunnos (eng.discrete Cosine transform) Taustavalaistu sensori (eng.back-illuminated sensor) Digitaalinen negatiivi (eng. Digital negative) Ihmisen näköjärjestelmä (eng.: Human visual system) Filmin nopeus tarkemmin ISo 5800 standardi eng. Joint Photographic Experts Group JPEG2000 Joint Photographic Experts Group 2000 MSE PSNR ROI SNR SSIM Keskineliövirhe (eng.:mean Sqaure Error) Huippu signaali-kohinasuhde (eng.: Peak Signal to Noise Ratio) Kuvan kiinnostava alue (eng.region of interest) Signaali-kohinasuhde (engl.: Signal to Noise Ratio) Rakenteellinen samannäköisyys (eng.: Structural Similarity)

1 1. JOHDANTO Nykyaikana kuvia käytetään yhä enemmän ja enemmän tiedon tallentamiseen ja sen esittämiseen. Pelkästään Instagram.comiin lisätään keskimäärin kuusikymmentä miljoonaa kuvaa kuukaudessa [1]. Jos nämä kuvat pakattaisiin käyttäen esimerkiksi JPEG2000- kuvaformaattia, saataisiin säästettyä helposti useita teratavuja kovalevytilaa huonontamatta saavutettua kuvanlaatua. Yhä kasvavat laskentanopeudet ja halventunut tallennustila ovat viime aikoina olleet ratkaisevammassa asemassa kuvien pakkaamisessa kuin kehittyvät formaatit. Tämän todistaa JPEG kuvaformaatin yhä yleinen käyttö kuvien tallentamiseen, vaikka teknisesti parempiakin ratkaisuja kuten JPEG2000,joka on myös tämä kandinaatintyön aihe, on ollut tarjolla jo pitkään. Tähän on monia syitä, mutta suurin näistä johtuu sukellusvenepatenteista jotka estävät JPEG2000-kuvaformaatin laajamittaisemman käytön. Kuitenkin on olemassa tilanteita joissa kuvien nopea tallentaminen on tärkeämpää kuin pieni tallennuskoko kuten esimerkiksi reaaliaikasovellukset, konenäön tulosten tallentaminen kokoonpanolinjalle tai sarjakuvaus. Välillä mahdollisuus pakata vain oleellinen tieto kuten esimerkiksi rekisterikilpiä tunnistavassa järjestelmässä jossa tallennetaan vain kilven osuus paremmalla laadulla ja muu osa kuvasta voidaan pakata huonommalla voi olla merkitsevämpää kuin nopea tallennus. Tässä kandinaatintyössä käsitellään JPEG- ja JPEG2000-kuvaformaattien välisten etuja, haittoja ja ominaisuuksia toisiinsa nähden. Kuvien ominaisuuksia tarkastellaan laskennallisten tulosten kautta huippu signaali-kohinasuhteen (PSNR) ja rakenteellisen samannäköisyyden (SSIM) avulla. PSNR kertoo, miten hyvä uudelleen pakattu kuva on verrattuna alkuperäiseen kuvaan desibeleissä. SSIM on valittu siksi, että se kertoo kuinka hyväksi kuva koetaan asteikolla nollasta yhteen jossa yksi on paras mahdollinen. Tämä ero voi johtaa siihen, että korkean PSNR arvon saava kuva voi saada pienen SSIM arvon tai toisinpäin. Lisäksi tarkastellaan myös pakkaamisen kuluvaa aikaa ja tiedostokokoa sekä näiden välistä suhdetta. Testikuvien ottaminen ja niiden määrittäminen ovat osa työtä. Työn rakenne noudattaa kaavaa jossa luvussa 2 tutustutaan JPEG- ja JPEG2000- kuvaformaattien toimintaan, ominaisuuksiin ja niiden erovaisuuksiin teorian kautta. Luku 3 käsittelee testikuvien määrittelyn ja esittelee niiden ottamiseen kuuluvat

1. Johdanto 2 järjestelyt sekä tulosten laskennallisen toteutuksen MatLabin avulla. Luvussa 4 esitellään testikuvista laskennallisen toteutuksen avulla saadut tulokset ja verrataan niitä luvussa 2 esiteltyihin teoreettiseen tuloksiin. Luku 5 on yhteenveto koko työstä.

3 2. JPEG- JA JPEG2000-KUVAFORMAATIT JPEG on vuonna 1992 julkaistu kuvaformaatti,joka oli aluksi ITU-T:n suositus T.81. Vuonna 1994 se hyväksyttiin ISO 10918-1 standardiksi. JPEG on lyhenne sanoista Joint Photographic Experts Group ja se on ITU-T:n ja ISO/IEC JTC1:n yhteisryhmä josta sana Joint tulee. Molemmat tahot aloittivat kuvien koodaamisen liittyvän kehitystyön 1980-luvun puolivälissä ja yhdistetty komitea muodostettiin vuonna 1986, jolloin myös JPEG:n kehitystyö alkoi. JPEG2000:n ensimmäisen osan kehitystyö alkoi vuonna 1997. Tämä osa valmistui vuonna 2000, ja siitä syntyi myös looginen nimi uudelle standardille. Ensimmäisen osa sisältää kuvan pakkaamisen ja purkamisen perustiedot ja tämä kandinaatintyökin perustaa suurimmaksi osaksi sen tarjoamien palveluiden hyödyntämiseen. Tämä osa tunnetaan myös nimellä ISO 15444-1. JPEG2000 kehittämisen lähtökohtina oli säilyttää hyvä signaali-kohina-suhde,snr, varsinkin tiedostokooltaan pienissä kuvissa ja pakkauksen joustavuus jonka avulla kuva voidaa pakata usealla eri tavalla.tämän ajateltiin hyödyttävän varsinkin kuvien katsomista mobiililaitteilla jolloin dataa ei tarvitse siirtää niin paljon, jotta saadaan aikaan yhtä hyvälaatuiselta näyttävä kuva. Tässä luvussa esitellään JPEG2000:n ja JPEG:n pakkausominaisuudet, JPEG2000 muita ominaisuuksia ja esitellään myös sen tulevaisuuden näkyviä. Pakkauksen osalta käyn lävitse hieman miten JPEG:n pakkaaminen tapahtuu diskreetin kosinimuunnoksen kautta ja sen jälkeen käyn lävitse miten JPEG2000 suorittaa oman pakkauksensa diskreeetin waveletmuunnoksen avulla. Kun nämä kuvan mahdollisuuksiin vaikuttavat elementit on käsitelty käsittelen yleisellä tasolla JPEG2000 mukanaan tuomia uusia ominaisuuksia. Luvun lopussa käyn lävitse syitä miksi JPEG2000 ei ole yleistynyt ja mitä tulevaisuuden näkymiä kuvaformaatilla on. 2.1 JPEG- ja JPEG2000-kuvaformaattien pakkaus JPEG- ja JPEG2000-kuvaformaattien suurin ero on syntyy diskreetistä kosinimuunnoksesta, jatkossa DCT(discrete cosine transform) ja diskreetistä aaltomuunnoksesta, jatkossa DWT (disctrete wave tranforms) ja niiden suorittamisesta. Vaikka DWT tuottaakin parempia tuloksia on se myös hieman raskaampi laskea. JPEG:n pakkaaminen koostuu neljästä eri vaiheesta: 1. Esikäsittely

2. JPEG- ja JPEG2000-kuvaformaatit 4 2. DCT 3. Kvantisointi 4. Enkoodaus Esikäsittelyssä kuvasta otetaan 8x8 pikselin kokoisia blokkeja. Nämä lohkot ovat RGB muodossa eli kuva muodostuu kolmesta tasosta jossa ensimmäinen taso sisältää R-arvot eli punaisen arvot väliltä 0-255. B-taso sisältää sinisen arvot ja G-taso sisältää vihreän arvot. Nämä arvot sitten muutetaan Y'CbCr-formaattiin, jotta kuvan käsittely olisi jatkossa helpompaa, mutta myös kevyempää. Y'CbCr on vain toinen tapa esittää jo tallennettu alkuperäinen RGB-formaatin mukainen kuva. Sitä käytetään yleisesti digitaalisissa systeemeissä, koska sillä saavutetaan etuja verrattuna RGB-formaattiin. YCbcr muodostuu kolmesta signaalista Y'=luminanssi(kirkkaus), Cb=krominanssi(väri) sininen ja Cr= krominanssi punainen. Koska ihmisen näköjärjestelmä on herkempi kirkkauden muutoksille kuin väreille saavutetaan ensimmäinen etu Y'CbCr-formaattiin siirtymisestä siinä, että Y'- komponentti esitetään 8x8 lohkoina, mutta Cb- ja Cr-komponentit voidaan esittää puolet pienempinä lohkoina eli 4x4 pikselin kokoisina.tämä pienennys tehdään pystysuuntaisista riveistä Cb- ja Cb-komponenteista. JPEG:n pakkaaminen perustuu diskreettiin kosinimuunnokseen jossa yleensä 8x8 kokoiset lohkott muutetaan ensin taajustason esitykseen ja sen jälkeen kuvan arvot muutetaan niin, että ne ovat nollan ympärillä. Tämä tehdään, jotta jatkossa tehtävät laskutoimitukset olisivat helpompia suorittaa ja saavutetaan parempi tehokkuus. Esimerkki matriisin 2.1 lukuvarvot on otettu lena512.bmp 1 ylälaidasta. 162 162 162 161 162 157 163 161 162 162 162 161 162 157 163 161 162 162 162 161 162 157 163 161 162 162 162 161 162 157 163 161 162 162 162 161 162 157 163 161 164 164 158 155 161 159 159 160 160 160 163 158 160 162 159 156 159 159 155 157 158 159 156 157 kuvan vasemmasta (2.1) Koska kuva voi saada arvoja väliltä [0,255] on siis keskimmäinen arvo 128 ja tämä luku vähennetään kaikista blokin arvoista, jotta arvot saadaan tasapainoitettua nollan ympärille.tällöin uusi lukuavaruus tulee välille [-128,127] 1 http://www.ece.rice.edu/ wakin/images/

2. JPEG- ja JPEG2000-kuvaformaatit 5 34 34 34 33 34 29 35 33 34 34 34 33 34 29 35 33 34 34 34 33 34 29 35 33 34 34 34 33 34 29 35 33 h = 34 34 34 33 34 29 35 33 36 36 30 27 33 31 31 32 32 32 35 30 32 34 31 28 31 31 27 29 30 31 28 29 (2.2) Seuraavaksi jokaiselle lohkon pisteelle lasketaan kaksiulotteinen diskreettikosinimuunnos seuraavalla kaavalla: [2] G u,v = 1 4 α(u)α(v) 7 x=0 y=0 7 g x,y cos( Jossa u on leveyssuunta ja v on korkeussuunta 1 u = 2 if u = 0 1 muutoin (2x + 1)uπ )cos( 16 (2y + 1)vπ ) (2.3) 16 (2.4) Josta saadaan seuraavanlainen 8x8 matriisi 2.5 aikaiseksi. Tämä matriisi sisältää DCT-kertoimet. 259.5000 4.7683 3.2404 0.1992 0.2500 0.5539 4.5894 5.6385 7.9473 0.7879 0.5547 4.9323 1.9602 2.9784 3.7971 3.3222 5.0349 0.2974 1.5518 1.7250 0.6765 0.4525 1.8499 2.2002 2.2619 1.1390 1.7039 0.9242 0.7606 1.3686 0.2143 1.1422 1.0000 1.1497 0.3431 1.3596 1.7500 1.1189 1.4815 0.6729 1.2107 0.4561 1.8021 0.1061 2.0116 0.7097 1.6866 0.7552 1.7028 0.2650 3.0999 1.6355 1.6332 2.2546 1.1982 0.9011 1.3259 0.4152 2.3826 1.5945 0.8846 1.9693 0.5532 0.6540 (2.5) DCT-kertoimille blokille suoritetaan JPEG-formaatin kolmas vaihe eli kvantisointi. Tämä on myös vaihe, joka aiheuttaa suurimman häviön. Kun pakattu JPEG-kuva yritetään palauttaa alkuperäiseen RGB-formaattiin ei kvantisoinnissa syntynyttä häviötä pystytä enää palauttamaan. Tämä johtuu suurimmaksi osaksi pyöristysvirheestä. Kun otetaan esimerkiksi luku 35 ja jaetaan se 4:llä saadaan tulokseksi 8,75,joka pyöristetään luvuksi 9. Kun luku 9 kerrotaan 4:llä saadaan 36,joka ei vastaa alkuperäistä arvoa. Suurimmilla kvantisointikertoimilla häviö on tietenkin suurempi. Toisin sanoen kaikki aikaisemmat vaiheet voidaan toteuttaa käänteisesti ja päästä takaisin alkuperäiseen tulokseen. Kvantisoinnin jälkeen tehty käänteisoperaatio ei

2. JPEG- ja JPEG2000-kuvaformaatit 6 tuota täysin alkuperäistä vastaavaa kuvaa. Kvantisointi suoritetaan käyttäen kvantisointi-matriisia 2.6. Oheinen matriisi suorittaa 50% kvantisoinnin DCT-kertoimille. Eri kvantisointitasoja varten käytetään erilaisia kvantisointimatriiseja. 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 (2.6) 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 DCT-kertoimet jaetaan kvantisointi-matriisilla, joka pyöristetään josta saamme tulokseksi: 16 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (2.7) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Kvantisoinnin seurauksena suuret taajudet ovat muuttuneet nolliksi ja muut taajuudet ovat pienempiä positiivisia tai negatiivisia kokonaislukuja. Täten saadaan aikaan pakkaus eli aikaisemmmin esitetty data voidaan esittää pienemmässä tilassa pienin muutoksin. Viimesenä vaiheena suoriteaan kuvalle muuttuvan pituuden koodaus esimerkiksi Human-koodausta käyttäen.tällä saadaan tehtyä vielä viimeinen tiivistys kvantisoinnin jälkeen. Kuva käydään läpi zigzag muodossa aloittaien vasemmasta yläkulmasta ja tästä edetään 45-asteen kulmassa eteenpäin ylhäältä alas ja alhaalta ylös jolloin viimeiseksi käsitellään oikea alakulma. Lyhyesti Human-koodauksen idea on, että yleisin arvo saa pienimmän mahdollisen arvon. Eli jos tulosmatriisin yleisin arvo on 0 koodattaisiin se binäärimuodossa arvolla 0. Toiseksi yleisin arvo saisi arvon 1, kolmanneksi yleisin arvon 00 ja ja niin edelleen. Koska yleisin merkki vie nyt binäärisessä muodossa vähiten tilaa, saadaan aikaan suurin mahdollinen tilansäästö. Kun nämä neljä operaatiota on toistettu 8x8 kokoisina blokkeina koko kuvalle on

2. JPEG- ja JPEG2000-kuvaformaatit 7 kuva näin pakattu JPEG-muotoon. Toistamalla operaatiot päästään kvantisointihäviöitä lukuunottamatta alkuperäiseen tulokseen. JPEG2000:n pakkaaminen perustuu diskreetin kosinimuunnoksen sijaan waveleteihin joka onkin suurin ero kun verrataan sitä JPEG kuvaformaattiin. Kuten JPEG;ssäkin on JPEG2000:ssa neljä vaihetta [3]: 1. Esikäsittely 2. DWT 3. Kvantisointi 4. Enkoodaus Esikäsittelyssä kuva muunnetaan RGB-muodosta Y'CbCr muotoon. Sen jälkeen kuva tasapainotetaan vähentämällä luku 128 jokaisesta kuvan pisteestä aivan kuten teimme aikaisemminkin. Tällöin saamme matriisin (2.2). JPEG-kuvaformaattia käsiteltiin 8x8 lohkoina, mutta JPEG2000-kuvaformaaatti käsittelee suurempia kokonaisuuksia kuten 216x216 tai yleisemmin 512x512 kokoisia ruutuja (eng. tile). Jos kuva olisi isompi kuin nämä mainitut ruutujen koot jaettaisiin pakattava kuva esikäsittelyvaiheessa myös ruuduiksi. DWT koostuu kahdesta eri ltteripankista. Korkeataajuuspäästösuodattimesta sekä matalataajuuspäästösuodattimesta. Kuva suodatetaan molemmilla suodattimilla.ensin pystysuuntaisesti ja sen jälkeen vaakasuuntaisesti tai päinvastaisessa järjestyksessä. Molemmista suodattimista saatu tulos eli L1 ja H1 yhdistetään kuvaksi T1 = L1 +H1, joka näytteistetään kertoimella kaksi eli alkuperäisestä 512x512- kuvasta on saatu 256x256-kuva. Kuva 2.1: DWT 1 asteen suodatuksen jälkeen Tässä kuvassa 2.1 alkuperäistä kuvaa vastaava karkea tieto sijoitsee ruudussa LL, kun taas ruudut LH, HL ja HH pitävät sisällään kuvan korkeataajuksisen esityksen

2. JPEG- ja JPEG2000-kuvaformaatit 8 ja tarkemmat yksityiskohdat.ruutu HL sisältää pystysuuntaiset yksityiskohdat, LH vaakasuuntaiset ja HH poikittaisen yksityiskohdatiedon. [4] Tämän jälkeen saatu kuva T1 suodatetaan taas yli- ja alipäästösuotimille ja saadaan aikaan signaalit H2 ja L2 jotka yhdistämällä saadaan kuva T3. Ja kun tälle kuvalle toistetaan sama operaatio vielä kerran on alkuperäinen kuva käsitelty kolmesti ja saadaan kuvan 2.2 mukainen esitys. Kuva 2.2 Kuinka tämä koodaus suoritetaan sitten matemaattisesti? Lyhyesti JPEG2000- standardin mukaisesti käytetään matala- ja korkeapäästösuodatinta kertointen määrällä 9 ja 7. Tämä suorittaa häviöllisen pakkaamisen kun taas käyttämällä vähemmän kertoimia eli matalataajuudelle 5 ja korkeataajudelle 3 saataisiin suoritettua häviötön pakkaaminen. [4]. Kertoimet häviöttämälle suotimelle ovat: matalataajuus : h = h 4, h 3, h 2, h 1, h 0,, h 1, h 2, h 3, h 4 (2.8) korkeataajuus : g = h 2, g 1, g 0,, g 1, g 2, g 3, hg 4 (2.9) Tästä voisimme lähteä johtamaan/esittämään suodinten käyttäytumistä tarkemminkin, mutta jätämme tämän korkeamman asteen töille ja keskitymme nyt vain yleiseen periaatteeseen miten DWT eroaa DCT pohjaisesta pakkauksesta. Kuten olemme havainneet on DWT pohjainen pakkaus huomattavasti monimutkaisemman oloinen näin korkeallakin tasolla, mutta samaa pätee myös matemaattiseen puoleen. Riippuen lähteestä pidetään JPEGG2000-kuvaformaatin pakkausta 20-30 kertaa vaativampana kuin JPEG-kuvaformaatin[4]. Tämä lisää esimerkiksi haastetta toteuttaa reaaliakainen JPEG2000-kuvaformaatin mukainen pakkaus. Kun DWT on suoritettu jatkeaan kuvan pakkaamista ja viimeisten tiivistysten suorittamista tekemällä kuvalle kvantisointi ja enkoodaus. JPEG2000-kuvaformaatin kvantisointiin käytetään funktiota[4]: yb (i,j) b

2. JPEG- ja JPEG2000-kuvaformaatit 9 yb (i, j) q b (i, j) = signy b (i, j) b (2.10) Missä: y b (i, j) on DWT:n kerroin alilohkolle b ja b on kvantisointiaskel alilohkolle b ja X etsii suurimman luvun joka on vähemmän tai yhtäsuuri kuin x. Yksinkertaisesti sanottuna kaava (2.10) muuttaa DWT:n muodostaman liukulukuesityksen kokonaislukumuotoon. Tämä on hyvin suuri yksinkertaistus, mutta verrattuna JPEG-kuvaformaatin kvantisointi ei ole niin suurimuotoista. Viimesenä silauksena kuvalle suoritetaan enkoodaus jolla saadaan säästettyä vielä hieman lisää tilaa lopullisessa tallennusmuodossaan. Kuten JPEG-kuvaformaatille voidaan JPEG2000-kuvaformaatille käyttää esimerksi HUmann-enkoodausta. 2.2 JPEG ja JPEG2000 välisiä eroavaisuuksia Aikaisemmissa kappaleissa toin esille JPEG- ja JPEG2000-kuvaformaattien välisen eron pakkauksen toteuttamisessa. Tämä erilainen pakkaustapa mahdollistaa JPEG2000-kuvaformaatille ominaisuuksia mitä ei voida saavuttaa JPEG-kuvaformaatilla. Esittelen tässä mielestäni hyödyllisimmät ja samalla myös tunnetuimmat lisäominaisuudet JPEG2000-kuvaformaatissa. 2.2.1 Pieni tiedostokoko Kuten jo luvun 2 ensimmäisessä kappaleessa mainittiin lähdettiin JPEG2000-kuvaformaatin suunnittelussa liikkeellä halusta saada hyvä signaali-kohinasuhde, SNR, eli pienemmällä tiedostokoolla huomattavasti parempi kuvanlaatu kuin aikaisemmassa JPEGkuvaformaatissa. Kuva 2.3: Lena kuva vasemmalla JPEG ja oikealla JPEG2000 pakattuna Esimerkkinä itse käsittelemäni kuvat klassisesta Lena esimerkistä. Alkuperäinen kuva on 512x512 matriisi joka sisältää tiedot Lena-kuvasta. Pakkasin kuvan imwrite

2. JPEG- ja JPEG2000-kuvaformaatit 10 komennon avulla JPEG- ja JPEG2000-kuvaformaattiin. Molempien kuvien koko on 9kB pakattuna. Esimerkkiä varten olen suurentanut kuvaa, jotta ero pakkauksessa tulee paremmin esille. Vasemmanpuoleisesta JPEG-kuvasta on havaittavissa selvästi enemmän pakkauksen aiheuttamia aftifakteja, jotka johtuvat JPEG:n tapauksessa DCT:n tavasta pakata kuvat 8x8 lohkoissa. Kun tiedon määrä menee liian pieneksi alkavat nämä lohkot näkyä aftifakteina pakatussa JPEG-kuvassa. [4] Kuva 2.4: Erotuskuva alkuperäiseen. Vasemmalla JPEG- ja vasemmalla JPEG200- kuvaformaattiin verrattuna Käyttäen Matlabin funktiota imshowpair, joka näyttää meille erotuksen kahden kuvan välillä, tein kuvan joka havainnoilistaa JPEG- ja JPEG2000-kuvaformaattien eroa verrattuna alkuperäiseen kuvaan. Kuten näemme ovat erot alkuperäiseen kuvaan verrattuna suurempia vasemmanpuoleisessa kuvassa jonka voimme havaita voimakkaammasta valkoisesta väristä esimerkiksi Lenan hiuksissa. 2.2.2 Mielenkiintoinen alue, Region of interest, ROI Region of interest, jatkossa ROI, on JPEG2000:n ominaisuus joka mahdollistaa kuvien pakkaamisen siten, että osa kuvasta on pakattu suuremmalla pakkausuhteella ja osa kuvasta taasen pienemmällä pakkausuhteella. ROI kuuluu JPEG2000:sen ensimmäisen osan ominaisuuksiin. Ominaisuus on hyödyllinen kun kaikki tieto kuvassa ei ole yhtä oleellista. Esimerkiksi nopeusvalvontakameran ottamasta kuvasta voitaisiin ensimmäiseksi tunnistaa rekisterinumero ja pakata kuva sen jälkeen siten, että rekisterinumeron osa on pakattu pienemmällä pakkausuhteella kun taas loppuosa on pakattu suuremmalla. Tä-

2. JPEG- ja JPEG2000-kuvaformaatit 11 Kuva 2.5: Region of interest män avulla kaikki oleellinen informaatio saadaan säilytettyä, mutta kuva saadaan pakattua pienempään tiedostokokoon. JPEG2000-kuvaformaatissa ROI on toteutettu siten, että ROI-alue voi olla minkä muotoinen tahansa eikä pyöreä kuten esimerkkikuvassa 2.5 JPEG2000-kuvaformaatin ensimmäinen osa käyttää ROI:n toteuttamaiseen MAXS- HIFT metodia. Nimensä mukaisesti siinä siirretään ei ROI-alueen kertoimet alemmalle bittitasolle. Siirto tehdään bittitasojen MSB(Most signicant bitplane) päästä kohti LSB(least signicant bitplane) kohti. Kun kuvaa aletaan esimerkiksi lähettämään tai avaamaan avataan sitä bittitasokerrallaan ja näin ollen ensimmäiseksi avataan korkeammat tasot joissa myös ROI-alueen informaatio on. Tämä mahdollistaa ROI:n käyttämisen progessiivisessa lähetyksessä josta lisää seuraavassa luvussa. Kertoiminen käyttö mahdollistaa myös ROI-alueen vapaan määrittelyn, koska kuvaan ei tarvitse lisätä maskeja tai muita tietoja kertomaan ROI-alueen kokoa ja muotoa. 2.2.3 Progressiivinen lähetys Progressiivinen lähetys(progessive transmission) on ominaisuus joka mahdollistaa kuvan kokoamisen esimerkiksi internettiä selatessa siten, että ensimmäiseksi kuvasta näytetään pienikokoinen kuva ja kun tietoa on saatu siirrettyä lisää näytetään kuvasa jo keskikokoinen kuva ja lopuksi kun kaikki tieto on saatu siirrettyä näytetään lopullinen täysikokoinen kuva. Progressiivinen lähetys on kätevä ominaisuus esimerkiksi mobiililaitteilla tai huonon verkkoyhteyden ääressä internettiä selatessa, koska jo pienille tietomäärillä saadaan nähtäväksi pienikokoinen kuva. JPEG:ssä pitäisi ladata koko kuva, että kuva voidaan esittää. Myös aikaisemmin esitetty ROI ominaisuus toimii progessiivisen lähetyksen kanssa. Progressiivinen lähetys toimii kuin käänteinen DWT. Kun kuvassa 2.2 näimme kuvan jakautumisen alitajuuksiin aina isommasta osasta alkuperäistä kuvaa kohti pienempiä osia. Toimii käänteinen DWT ja progressiivinen lähetys päinvastoin. Ensimmäiseksi lähetetään kuvan 2.2 LH3,LL3,HL3 ja HH3 komponentit josta saadaan tehtyä jo pienikokoinen, mutta silti alkuperäistä kuvaa vastaava esitys. Seuraavaksi kun lähetys jatkuisi voitaisiin lähetättää pakatusta kuvasta LH2. LL2, HL2 ja HH2

2. JPEG- ja JPEG2000-kuvaformaatit 12 komponentit ja saada keskikokoinen esitys. Lopuksi saisimme kasaan viimeisetkin tiedot ja suurikokoinen esitys kuvasta olisi valmis. Kuten sanottua on tämä JPEG2000-kuvaformaatin tarjaoama palvelu tai mahdollisuus ja pakkauksen aikana tulee tämäkin lisäominaisuus ottaa käyttöön. 2.2.4 Virheensietokyky Virheensietokyky eli Robustness to bit errors on JPEG2000:ssa huomattavasti parempi kuin JPEG:ssä. Tämä on saavutettu siten, että JPEG2000 on koodattu paketteina, jotka ovat lyhyitä ja jokaisessa paketissa on synkkausmerkkijakso jonka avulla voidaan päätellä paketin alkaneen/loppuneen. Täten virheen sattuessa pääsee se vaikuttamaan vain pieneen osaan kuvasta. Lisäksi jos kuvasta menee jokin osa vialliseksi voidaan kuvasta progressiivisen lähetyksen ansiosta näyttää pienempi kuva virheettömänä jos näin halutaan. Tämä ominasuus on hyödyllinen esimerkiksi langattomassa viestinnässä jossa lähetys- ja vastaanottovirheitä syntyy usein. 2.3 JPEG- ja JPEG2000-kuvaformaattien tulevaisuus Kuten aikaisemmat esimerkit ja laskukaavat ovat esittäneet tarjoaa JPEG2000- kuvaformaatti suuremman määrän erilaisia ominaisuuksia, palveluita ja mahdollisuuskia verrattuna JPEG-kuvaformaattiin. Suurimmaksi haitaksi pelkästään ominaisuuksia ja niiden toteuttamista verrattaessa voidaan nähdä monimutkaisempi matemaattinen toteutus joka vaatii pakkauksen toteuttavassa laitteessa enemmän laskentatehoa jos halutaan saavuttaa vastaava nopeus pakkaamisessa kuin JPEGkuvaformaatilla. Toki optimoimalla laskentapiiriä voidaan päästä myös vastaaviin nopeuksiin kuin pelkästään laskentatehon lisäämisellä. Toisaalta Mooren lain mukainen laskentatehon kaksinkertaistuminen noin kahden vuoden välein on huolehtinut tästä pullonkaulasta eroon pääsemisen jo kauan aikaa sitten. Miksi sitten JPEG2000-kuvaformaatti ei ole yleistynyt, vaikka sen ainoaksi teoreettiseksi ongelmaksi nähdään hivenen raskaampi toteutus. Eri lähteet listaavat useita eri syitä kuten: Yhteensopimattomuus edellisen JPEG-kuvaformaatin kanssa Yleisimpien ohjelmien JPEG200-kuvaformaatin tuen puute Tallennustilan halpeneminen Patentit Yhteensopimattomuus edellisen JPEG-kuvaformaatin kanssa on suuri ongelma joka voidaan nähdä suurimmaksi esteeksi JPEG2000-kuvaformaatin yleistymiselle.

2. JPEG- ja JPEG2000-kuvaformaatit 13 JPEG-kuvaformaatin tuki löytyy tällä hetkellä oikeastaan kaikkialta. Selaimet, mobiililaitteet, tiedostoselaimen esikatselut ja niin edelleen tukevat jo sujuvasti JPEGkuvaformaattia. JPEG2000-kuvaformaatille tätä tukea ei ole. Tämä tarkoittaa myös sitä, että jokainen JPEG-kuvaformaattia pakkaava tai avaava laite täytyisi ohjelmoida uudelleen tukemaan myös JPEG2000-kuvaformaattia. Johtuen täysin erilaisesta toteutustavasta ei yhtään osaa JPEG-kuvaformaatin pakkaamisesta tai avaamisesta voida käyttää vaan kaikki tulisi ohjelmoida alusta. Tämän tekeminen hyvin ja tehokkaasti on aina haastava tehtävä. Yleisimpien ohjelmien JPEG200-kuvaformaatin tuen puute hidastaa myös osaltaan formaatin yleistymistä. Esimerkiksi Adoben Photoshop ohjelmiston versio CS4 joka on julkaistu vuonna 2008 ei tue JPEG2000-kuvaformaattia. Tallennustilan halpeneminen on tehnyt pienemmästä kuvakoosta oikeastaan turhan. Jos tuhannen kuvan pakkaamisella JPEG2000-kuvaformaattiin voitaisiin säästää megatavun verran tietoa per kuva saataisiin yhteensä noin gigatavun verran tilansäästöä aikaan. Nykyään kovalevyjen koot helposti 500 gigatavun kokoisia joten 0,2 % tilansäästö on harvemmin pullonkaula tallennusmuotoa valittaessa. Patentit hidastavat myöskin osaltaan JPEG200-kuvaformaatin yleistymistä. Suurimmaksi ongelmaksi ovatkin muodostuneet niin kutsutut sukellusvene patentit eli patentit joiden olemassaolosta muut eivät ole tietoisia ja joita patentin omistaja voisi käyttää hyväkseen kun joku keksii ominaisuuden joka hyväksi käyttää olemassaolevan patentin ominaisuuksia.

14 3. TESTIKUVAT JA LASKENNALLINEN TOTEUTUS Kuten aiemmassa teoriaosassa havaittiin on tarkasteltavien kuvaformaattien väliltä eroja koodauksen toteuttamisessa ja siten kuvaformaatit myös käsittelevät erilaisia kuvia hieman eri tavalla. Tässä työssä olevat testikuvat on valittu niin, että formaattien väliset erot saadaan todennettua niin subjektiivisen ja objektiivisen laadun osalta. Kaikki testikuvat on otettu käyttäen Nokia Lumia 1020 -matkapuhelimen kameraa. Kamerassa on 41 megapixelin BSI-kenno, ja järjestelmäkameroiden tapaan kaikki kameran parametrit, kuten valotusaika, aukko ja ISO-luku, ovat täysin käyttäjän valittavissa. Lisäksi kamera tekee mahdolliseksi kuvien ottamisen RAW-formaatissa joka tallentaa kaiken kennolle tulevan informaation ja näin saadaan itse pakkaamista varten neutraali lähtökohta joka ei suosi kumpaakaan JPEG- tai JPEG2000-kuvaformaattia. Kameran tukema RAW-formaatti on Adoben DNG, joka on avoin ja häviötön raakakuvaformaatti. Se on julkaistu vuonna 2004 ja useat eri kameravalmistajat, kuten Casio, Leica ja Pentax, käyttävät sitä tuotteissaan. [5] Testikuvien määräksi valikoitui kaksitämä on tarpeeksi suuri määrä, että kuvaformaattien erot tulevat esille, mutta tarpeeksi vähän, että työn laajuus pysyy vielä kandidaatintyönä. Nämä tilanteet ovat virallinen testikuva ja muodikkaasti sele. Kuvan oikeellisuuden varmistaminen on tärkeätä ja siksi yksi kuvista on otettu virallisesta testitaulusta joka tunnetaan myös nimellä Macbeth-taulu sen ensimmäisen valmistajan nimen mukaan. Koska kuvauskohteen värit tiedetään voidaan näin pakkauksen kautta saatua tulosta verrata testitauluun tai tässä tapauksessa formaatttien välillä mikä paljastaa meille hyvin eroavaisuuksia. Lisäksi JPEG:n ku- Kuva 3.1: Vasemmalla Lumia 1020 JPEG versio ja oikealla Matlabilla avattu

3. Testikuvat ja laskennallinen toteutus 15 Kuva 3.2: Vasemmalla Lumia 1020 JPEG versio ja oikealla Matlabilla avattu vaformaatti ei ole hyvä pakkaamaan tarkkoja linjoja ja niiden muutoksia. Teksti toimii kuvassa teränä linjana. Lisäksi usein tulee vastaan tilanteita jossa jokin paperin sisältö on esimerksi välitettävä kaverille tai tallettettava myöhempää käyttöä varten. Usein kuvissa on kasvoja ja siksi toisena esimerkkikuvana meillä on niin kutsuttu sele(omakuva) itse allekirjoittaneesta. Ihmisen ihon rakenne vaatii hyvää kykä esittää pieniä yksityiskohtia ja koska ihmisen kasvo on tuttu kohde havaitaan siinä virheet helpommin kuin muissa kohdissa. 3.1 Laskennallinen toteutus Työn tarkoituksena on selvittää laskennalliseen tehokkuuteen liittyviä eroavaisuuksia kuvien välillä. Tätä tarkoitusta varten tutkin muutamien ohjelmien, kuten Kakadun, GIMP:n ja Imagemagicin käyttämistä. Kuitenkin esteiksi nousivat joko ohjelmistojen hinta, huono dokumentointi ja mittausdatan kerääminen vaikka pakkaus olisi ollut mahdollista. Siksi valitsinkin käytännön toteuttamista varten MATLAB R2014a:n. Analysointi on jaettu kahteen osaan jonka avulla voidaan tarkastella kuvien laskennallista paremmuutta verrattuna alkuperäiseen, mutta myös rakenteellisen samankaltaisuuden erot käsitellään osana työtä. Laskennallisessa toteutuksessa arvioin pakkauksen laatuva verrattuna alkuperäisiin kuvaan käyttäen huippu-signaali-kohina -suhdetta (PSNR). Koska ero huonoimman ja parhaimmain tuloksen välillä voi olla hyvinkin suuri annetaan PSNR:n tulokset yleensä desibeleissä jossa suurempi luku on parempi. Rakenteellisen samankaltaisuuden,ssim, kehitettiin, koska nähtiin, että pelkkä laskennalliseen analyyysiin perustuva PSNR ei aina anna oikeaa tulosta. Usein kävikin niin, että subjektiivisessa tarkastelussa useammat koehenkilöt kokivat pienemmän PSNR-arvon saaneen kuvan miellyttävämmäksi kuin korkeamman PSNR-arvon saanut kuva. SSIM pyrkiikin siis antamaan lukuarvon 0-1, jossa 1 on paras mahdollinen, kuvalle käyttäen hyväksi ihmisen näköjärjestelmän,hvs, ominaisuuksia. Jotta sain kuvat avattua MATLAB ohjelmistolla olen käyttänyt seuraavan mal-

3. Testikuvat ja laskennallinen toteutus 16 lista työjärjestystä: Kuva 3.3: työpolku kuvalle Ensimmäiseksi muutan Nokia Lumia 1020 -matkapuheliminen kameralla otetun DNG-kuvaformaatin kuvan MATLABIN ymmärtämään muotoon käyttäen Adobe DNG Converter -ohjelmaa ja sen versiota 8.6.0.254 joka on ilmaiseksi saatavissa osoitteessa ohjeita 2 1. Seuraavaksi käsitelty DNG-kuva on avattu käyttäen hyväksi seuraavia. Kuva 3.4: Matlabilla avattu DNG käsittelyn jälkeen Tässä kuvalle suoritetaan metatietojen avulla seuraavat operaatiot: Lineariosointi Valkotasapainon säätäminen De-mosaicin Väriavaruuden korjaaminen Kirkkauden ja kontrastin säätäminen 1 http://www.adobe.com/support/downloads/detail.jsp?ftpid=5825 2 http://users.soe.ucsc.edu/~rcsumner/rawguide/rawguide.pdf

3. Testikuvat ja laskennallinen toteutus 17 Kuva 3.5: MacBeth kuvan rajaus laskentaa varten Kuva 3.6: Omakuvan rajaus laskentaa varten Tästä saamme värillisen kuvan 3.4. Huomattavaa on, että kuva on kovin kohinainen vaikka se olisi otettu kirkkaassakin valossa matalalla ISO-arvolla. Tämä johtuu siitä, että kyseessä on raakakuva ja en ole tehnyt kohinanpoistoa kuvalle sen avaamisen yhteydessä. Johtuen tietokoneeni muistin rajoituksista on luvun 4 tulokset laskettua käyttäen 2000x2000 pikselin kokoisia rajauksia alkuperäisistä kuvista 3.1 ja 3.2 Tulokset on saatu käyttämällä liitteiden A.1 ja A.2 funktiota. 3.2 Huippu signaali-kohinasuhde Jotta voimme varmistua pakattujen kuvien laadusta verrattuna alkuperäiseen kuvaan laskemme kuville PSNR:n. PSNR esitetään usein Mean squarer errorin avulla joka lasketaa kaavalla: m 1 n 1 1 XX M SE = [I(i, j) K(i, j)]2 m n i=0 j=0 jossa I on alkuperäinen kuva ja K uudelleen pakattu kuva. Kun olemme laskeneet MSE:n on PSNR:n laskeminen siitä yksinkertaista. (3.1)

3. Testikuvat ja laskennallinen toteutus 18 P SNR ( MAX 2 ) = 10 log I 10 MSE ( ) MAX I = 20 log 10 MSE (3.2) = 20 log 10 (MAX I ) 10 log 10 (MSE) Näin saamme tuloksen suoraan desibeleissä. Mitä suurempi luku sen parempi tulos. Tavallisesti tulokset ovat 30-50dB luokkaa, mutta koska pakkaamme kuvat koko kompressioskaalan mukaan voivat varsinkin suuren kompression omaavat kuvat olla allekin 30dB. 3.3 Rakenteellinen samannäköisyys PSNR ei aina kerro koko totuutta kuvan laadusta vaan voi olla tilanteita missä ihmisen näköjärjestelmä näkee saadun kuvan parempi laatuisena vaikka PSNR arvo olisikin heikompi kuin kuva jota ihmisen näköjärjestelmän mukaan pidetään huonompilaatuisena, mutta se sillä on silti korkeampi PSNR. Tämän idean siivittämän lähdettiin kehittämään rakenteelliseen samannäköisyyteen(structural similarity), jatkossa SSIM, perustuvaa järjestelmää. SSIM pyrkii siis antamaan kuvalle arvon 0-1 jossa 1 on paras mahdollinen arvo ja on mahdollista saavuttaa ainoastaan vain jos pakattu kuva on täysin alkuperäisen kaltainen. SSIM on saanut kuitenkin kritiikkiä siitä, että se ei ei onnistu aina kaikissa tilanteissa antamaan oikeaa tulosta vaan PSNR puutteistaan huolimatta antaa useain paremman tuloksen. SSIM(x, y) = (2µ xµ y + c 1 )(2σ xy + c 2 ) (µ 2 x + µ 2 y + c 1 )(σ 2 x + σ 2 y + c 2 ) (3.3) Jossa µ x on keskiarvo x:stä µ y on keskiarvo y:stä σx 2 on varianssi x:stä σy 2 on varianssi y:stä σ xy on x:n ja y:n kovarianssi

3. Testikuvat ja laskennallinen toteutus 19 c 1 = (k 1 L) 2, c 2 = (k 2 L) 2 ovat muuttujia joiden tehtävä on tasapainottaa jakolaskua pienen jakajan kohdalla L on dynaaminen skaala pikseliarvoille k 1 = 0, 01 ja k 2 = 0, 003, muuttujia joiden perusarvot ovat ohessa Kaavaa 3.3 käytetään ainoastaan kuvan luminanssi esitykselle josta voidaan laskea tarvittavat tiedot. Eli kuvan ollessa RGB-muodossa lasketaan ensimmäiseksi kuvalle RGB:stä Y'CbCr muotoon muunnos ja sitten käytetään kaavaa 3.3 ainoastaan Y-kanavalle.

20 4. TULOKSET Tulokset on esitetty kuville 3.5 ja 3.6 joille olen laskenut: tiedostojen pakkaamisen kuluvan ajan suhteessa pakkauksen määrään, PSNR:n suhteessa tiedostokokoon ja SSIM:n suhteessa tiedostokokoon. Lisäksi esittelen subjetiivisia havaintoja esimerkkikuvien avulla. Tulokset näyttävät noudattavan teoriaosuudessa esitettyjä arvoja muutamia poikkeuksia lukuunottamatta 4.1 Pakkausaika Pakkaamisen kuluvan ajan on tarkoitus havainnollistaa teoriassakin käsiteltyä JPEG2000- kuvaformaatin kompleksisuutta verrattuna JPEG2000-kuvaformaattiin. Kun JPEGkuvaformaatiin pakkaamiseen menee 0,25-0,45 sekuntia kuvan pakkaamiseen riippuen kompression määrästä ovat vastaavat luvut JPEG2000-kuvaformaatille 0,6-2,0 sekuntia. Eli pakkaukseen menee ajallisesti 2-5 kertaa enemmän aikaa kuin JPEG kuvaformaatilla. Teoriassa puhuttiin noin 20-30 kompleksisemmasta ratkaisusta. Tosin prosessorin ja levylle kirjoittamiseen kuluvaa aikaa ei voida täysin verrata matemaattiseen kompleksisuuteen, mutta se antaa meille kuitenkin hyvän kuvan JPEG2000 kuvaformaatin raskaammasta laskennasta. Kuva 4.1: Pakkaamiseen kuluva aika sekunneissa suhteessa kompression määrään Suurin tiedosto on JPEG kuvaformaatille on noin 4 megatavua ja JPEG2000 kuvaformaatille 7 megatavua. 72000 kierrosta minuutissa pyörivä kovalevy voi tallentaa dataa jopa 1000m megatavua sekunnissa joten kirjoittamiseen kuluvien aikojen

4. Tulokset 21 vaikutus tuloksiin on minimaalista. Kuvassa 4.1 näkyvät epätaisaisuudet johtuvat koneen taustaprosessien aiheuttamasta vaihtelusta tieokoneen prosessorin peruskuormaan. Kuvasta on kuitenkin hyvin nähtävissä selvä ajallnen ero JPEG ja JPEG2000 kuvaformaattien pakkaamisen kuluvan ajan kanssa. Huomattavaa on myös JPEG2000 kuvaformaatin exponentiaalinen kasvu loppua kohti. Kuvassa 4.1 kompressio 1 tarkoittaa sitä, että kompressin määrä on pienimmillään ja kompressio 100 suurinta mahdollista kompressiota. 4.2 Objektiivinen laatu Objektiivista laatua on tarkastelu kahdella eri laskentavalla: PSNR kertoo meille matemaattisesti laadun SSIM kertoo meille matemaattisesti ihmisen havaitseman laadun Kuva 4.2: PSNR suhteessa tiedostokokoon Kuvassa 4.2 on piirrettynä PSNR desibeleinä suhteessa tiedostonkokoon.tämän kaltaisesta taulukosta olisi helppoa tarkistaa esimerkiksi mikä olisi paras mahdollinen laatu halutulla tiedostokoolla. Ongelmaksi tosin muodostuu, että taulukko pitäisi muodostaa joka kerta erikseen, koska erot kuvien sisällössä vaikuttava tulokseen huomattavasti. JPEG kuvaformaatti saa arvoja väliltä 21-33 desibeliä mikä on alle teorioassa esitetty viitejarvojen joiden oletetaan asuttuvan 30-50 desibelin väliin. Huomattavaa on myös JPEG kuvaformaatin kuvanlaadullinen parantuminen vaikka tiedostkoko pysyy samana heti kuvaajan vasemmassa alalaidassa. JPEG2000 kuvaformaatin PSNR kasvaa lineaarisesti tiedostokoon mukaan alkean heti 28 desibelistä ja kasvaen aina 51 desibeliin asti. Tulokset noudattavat hyvin teoreettisia tuloksia ja myös oletusta, että JPEG2000 kuvaformaatin kuvanlaatu on pienellä tiedostokoolla parempi kuin JPEG kuvaformaatilla mikä on helppo kuvaajasta

4. Tulokset 22 havaita. Kuvassa 4.3 on esitettynä SSIM suhteessa tiedostokokoon. SSIM on tarkoitus antaa meille arvo kuvan laadusta mikä vastaisa ihmisen näköjärjestelmän kokemaa laatua kuvasta. Kuten huomaamme kuvaajasta 4.3 eivät tulokset ole avain niin suoraviivaisia kuin kuvaajassa 4.2. Kun tarkistelemme tuloksia kuvan 4.3 perusteella havaitsemme, että JPEG kuvaformaatti saa arovja väliltä 0,72-0,92 ja JPEG2000 kuvaformaatti 0,84-0,99. Nämä tulokset ovat hyvinkin linjassa omien subjektiivisten havaintojeni kanssa joista myöhemmin enemmän. Kuva 4.3: SSIM suhteessa tiedostokokoon Kun tarkastalemme taas selekuvan 3.2 tuloksia havaitsemme varsinkin JPEG kuvaformaatin kohdalla oudon käyrän jossa alkupään SSIM arvo on lähes yhtäsuuri kuin lopun SSIM ollessa taas välillä jopa alempi kuin aloitusarvot. Tästä ilmiöstä puhuinkin jo aikaisemmin luvussa 3.3 4.3 Subjektiivinen laatu Subjektiivisen laadun esimerkit 4.4 ja 4.5 ovat hyvin linjassa saatujen objektiivisten tulosten kanssa. Kuvat ovat suurennoksia tuloksista, jotta erot olisi helpompi havaita. Kuvassa 4.4 selvästä nähtävissä ylärivin JPEG kuvissa pakkaustartefaktjea varsinkin oikeassa laidassa jossa pakkauksen määrä on suurin. Kun vertaamme näitä kuvia JPEG2000 kuviin alarivillä voimme olla helposti yhtämieltä kuvien 4.2 ja 4.3 jotka kertovat, että JPEG2000 kuvaformaatin laatu on parempi pienellä pakkauksella ja parhaimmillaan parempi suurella pakkauksella kuin JPEG-kuvaformaatti pienellä pakkauksella. Lisäksi on huomioitavaa, että JPEG2000 kuvissa ei näy ollenkana pakkausartefakteja kuten JPEG kuvissa. Kuvan 4.5 ovat hyvin linjassa kuvan 4.2 PSNR tulosten kanssa, mutta kuvan

4. Tulokset 23 Kuva 4.4: JPEG ja JPEG200 kuvat eri pakkauslaaduilla 4.3 tulokset JPEG kuvan osalta eivät anna oikeaa kuvaa saadusta subjektiivisesta laadusta vaan JPEG kuvaformaatin kuva paranee pakkauksen määrän vähentyessä toisin kuin SSIM tulokset antavat ymmärtää. Kuva 4.5: JPEG ja JPEG200 kuvat eri pakkauslaaduilla

24 5. YHTEENVETO Tämä kandidaatintyö esitteli meille JPEG ja JPEG2000 kuvaformaattien eroja teoreettisesta näkökulmasta, mutta myös käytännön esimerkkien kautta. Teoriassa kävin lävitse JPEG ja JPEGk kuvaformaattien erilaisen tavan pakkaukseen. Lisäksi esittelin JPEG2000 kuvaformaatin tarjoamia lisäpalveluita ja myös hieman syitä miksi JPEG2000 kuvaformaatti ei ole yleistynyt saavutetuista eduista huolimatta. Saadut tulokset ovat linjassa muiden vastaavien töiden kanssa ja vastaavat teorian kautta saamiamme havaintoja. Työn käytännön osuuden kautta pystyimme havaitsemaan JPEG2000 kuvaformaatin raskaamman matemaattisen mallin kuvan tallentamiseen kuluvan ajan kautta. Lisäksi paremman kuvanlaadun tulokset havainnollistettiin objektiivisesti PSNR:n ja SSIM:n avulla ja lopuksi vielä subjektiivisesti esimerkkikuvien avulla. Jatkotutkimukset työn parantamiseksi tai laajentamiseksi voisivat sisältää suuremman otannan erilaisista kuvista jolloin saataisiin paremmin havainnollistettua eroja erilaisia tilanteissa.

25 KIRJALLISUUTTA [1] Instagram, Statistics, August 2014. [Viitattu 17.9.2014] Saatavissa http:\\ wwww.instagram.com/press/. [2] V. Bhaskaran and K. Konstantinides, Image and Video Compression Standards: Algorithms and Architectures. Norwell, MA, USA: Kluwer Academic Publishers, 2nd ed., 1997. [3] G. Wallace, The jpeg still picture compression standard, Consumer Electronics, IEEE Transactions on, vol. 38, pp. xviiixxxiv, Feb 1992. [4] T. Acharya and P. Tsai, JPEG2000 Standard for Image Compression: Concepts, Algorithms and VLSI Architectures. Wiley, 2005. [5] A. S. Incorporated, Camera raw. [Viitattu 9.10.2014] Saatavissa http:// helpx.adobe.com/photoshop/camera-raw.html. [6] Z. Wang, E. Simoncelli, and A. Bovik, Multiscale structural similarity for image quality assessment, in Signals, Systems and Computers, 2004. Conference Record of the Thirty-Seventh Asilomar Conference on, vol. 2, pp. 13981402 Vol.2, Nov 2003.

26 A. LIITTEITÄ A.1 JPEG pakkaus funktio function [ keskiaika, keskikoko, keskipsnr, ssimtulos] = jpeg_funk(kuva ) %TÃ mã funktio pakkaa annetun kuvan JPEG muotoon 1-100 kompresiolla %Tuloksena saadaan aika, tiedostokoko, psnr ja ssim kuva_y=kuva; kuva_y=kuva_y.*255; kuva_y=uint8(kuva_y); kuva_s=kuva_y(:,:,1); toisto=1; pakettimaara=100; ajat=zeros(toisto,pakettimaara); kuvienkoot=zeros(toisto,pakettimaara); psnrtulos=zeros(toisto, pakettimaara); ssimtulos=zeros(toisto, pakettimaara); for i = 1:pakettimaara; for k= 1:toisto; %lasketaan aika tic imwrite(kuva, ['C:\Users\janne\Documents\kandi\matlabjutut\devnull\',num2str(i),'.jpg'],... 'Quality', i,... 'Mode', 'lossy' ); ajat(k,i)=toc; %kuvan koon tallentaminen myfile=java.io.file(['c:\users\janne\documents\kandi\matlabjutut\devnull\',num2str(i),'.jpg']); flen=length(myfile); kuvienkoot(k,i)=flen; flen=0; kuva2=imread(['c:\users\janne\documents\kandi\matlabjutut\devnull\',num2str(i),'.jpg']); kuva_2s=kuva2(:,:,1); %lasketaan ssim ssimtulos(k,i)=ssim(kuva_2s, kuva_s); %lasketaan PSNR psnrtulos(k,i)=psnr(kuva2, kuva_y); end end Error using jpeg_funk_kandi (line 5) Not enough input arguments. Published with MATLAB R2014a Kuva A.1

A. Liitteitä 27 A.2 JPEG2000 pakkaus funktio function [ keskiaika, keskikoko, keskipsnr, ssimtulos] = jpeg2_funk(kuva ) %Tämä funktio pakkaa annetun kuvan JPEG2000 muotoon 1-100 kompresiolla %Tuloksena saadaan aika, tiedostokoko, psnr ja ssim %vertailukuva PSNR ja SSIM varten kuva_x=kuva; kuva_x=kuva_x.*255; kuva_x=uint8(kuva_x); kuva_s=kuva_x(:,:,1); kierrokset=1; pakettimaara2=100; toisto2=kierrokset; ajat2=zeros(toisto2,pakettimaara2); kuvienkoot2=zeros(toisto2,pakettimaara2); keskipsnr=zeros(toisto2, pakettimaara2); ssimtulos2=zeros(toisto2, pakettimaara2); for i = 1:pakettimaara2; for k= 1:toisto2; %lasketaan aika tic imwrite(kuva, ['C:\Users\janne\Documents\kandi\matlabjutut\devnull\jpeg2\',num2str(i),'.jp2'],... 'CompressionRatio', i,... 'QualityLayers', 1,... %dedault 1 max 20 'ReductionLevels', 4,... %max8 'Mode', 'lossy' ) ajat2(k,i)=toc; %kuvan koon tallentaminen myfile=java.io.file(['c:\users\janne\documents\kandi\matlabjutut\devnull\jpeg2\',num2str(i),'.jp2'] ); flen=length(myfile); kuvienkoot2(k,i)=flen; flen=0; kuva2=imread(['c:\users\janne\documents\kandi\matlabjutut\devnull\jpeg2\',num2str(i),'.jp2']); %lasketaan SSIM kuva_2s=kuva2(:,:,1); ssimtulos2(k,i)=ssim(kuva_2s, kuva_s); %lasketaan PSNR keskipsnr(k,i)=psnr(kuva2, kuva_x); end end Error using jpeg2_funk_kandi (line 6) Not enough input arguments. Published with MATLAB R2014a Kuva A.2