JARKKO PEKKARINEN PNG-KUVAFORMAATTI JA SEN TULEVAISUUS

Samankaltaiset tiedostot
Häviötön kuvanpakkausalgoritmi lomituksella ja sen tehokkuuden vertailu PNG-formaattiin

VÄRISPEKTRIKUVIEN TEHOKAS SIIRTO TIETOVERKOISSA

Algoritmit 2. Luento 9 Ti Timo Männikkö

Juha-Pekka Ruuska BITTIKARTTAGRAFIIKKA, BITTIKARTTAKUVAT ELI RASTERIKUVAT...2

8 Multimedian elementtejä: kuva

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

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

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

Hajautetut käyttöliittymät. Kuvat www-sivulla

Luku 8. Aluekyselyt. 8.1 Summataulukko

Matematiikka ja teknologia, kevät 2011

Digitaalinen signaalinkäsittely Kuvankäsittely

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Kuvankäsittely. DigiReWork Annamari Mäenhovi Kati Nieminen

811120P Diskreetit rakenteet

Signaalien generointi

Algoritmit 1. Luento 10 Ke Timo Männikkö

Kuvan pakkaus JPEG (Joint Photographic Experts Group)

Gimp JA MUUT KUVANKÄSITTELYOHJELMAT

Valokuvien matematiikkaa

S Laskennallinen Neurotiede

Kuvankäsi*ely 1. Digitaaliset kuvat ja niiden peruskäsi3eet. Kimmo Koskinen

Haviollisten kuvanpakkausmenetelmien vertailu

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

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

Kirjoita ohjelma jossa luetaan kokonaislukuja taulukkoon (saat itse päättää taulun koon, kunhan koko on vähintään 10)

Mediaanisuodattimet. Tähän asti käsitellyt suodattimet ovat olleet lineaarisia. Niille on tyypillistä, että. niiden ominaisuudet tunnetaan hyvin

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

Määrittelydokumentti

Algoritmit 2. Luento 6 To Timo Männikkö

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

LIITE 1 VIRHEEN ARVIOINNISTA

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

Bluetooth-yksikkö BU-20 Tulostusopas. Sisällys Ennen käyttöä...2 Varotoimet...3 Tulostaminen...4

Toinen harjoitustyö. ASCII-grafiikkaa

LIITE 1 VIRHEEN ARVIOINNISTA

Algoritmi III Vierekkäisten kuvioiden käsittely. Metsätehon tuloskalvosarja 7a/2018 LIITE 3 Timo Melkas Kirsi Riekki Metsäteho Oy

KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA

KUVANKÄSITTELYN TEORIAA

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

Datatähti 2019 loppu

Muistio. Att:Videokerho Monitori ry:n jäsenet SUB: ÄÄNI-KUVA- JA VIDEOTIEDOSTOFORMAATIT. 1 Tiedostojärjestelmistä

7 Multimedian elementtejä: kuva

ARVO - verkkomateriaalien arviointiin

S Laskennallinen Neurotiede

Mitä on konvoluutio? Tutustu kuvankäsittelyyn

7 Multimedian elementtejä: kuva

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

LIITE 1 VIRHEEN ARVIOINNISTA

Kuvat. 1. Selaimien tunnistamat kuvatyypit

Algoritmit 2. Luento 10 To Timo Männikkö

JOHDATUS TEKOÄLYYN TEEMU ROOS

Matematiikan tukikurssi

Algoritmit lyhyiden sekvenssien rinnastamiseen referenssigenomia vasten. Krista Longi

Algoritmit 1. Luento 3 Ti Timo Männikkö

Oppilaan opas. Visuaaliviestinnän Instituutti VVI Oy. Versio 0.2 ( )

Jatkuvat satunnaismuuttujat

T Luonnollisten kielten tilastollinen käsittely

Seurantalaskimen simulointi- ja suorituskykymallien vertailu (valmiin työn esittely) Joona Karjalainen

Algebralliset menetelmät virheenkorjauskoodin tunnistamisessa

Kuvaruudun striimaus tai nauhoitus. Open Broadcaster Software V.20. Tero Keso, Atso Arat, Niina Järvinen & Valtteri Virtanen (muokattu 20.2.

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

Successive approximation AD-muunnin

Vasteaika. Vasteaikaa koskeva ohje ei ole juuri muuttunut Robert B. Millerin vuonna 1968 pitämästä esityksestä:

TTS kannattavuuslaskentaohjelma

A = a b B = c d. d e f. g h i determinantti on det(c) = a(ei fh) b(di fg) + c(dh eg). Matriisin determinanttia voi merkitä myös pystyviivojen avulla:

Avainsanat ja sanonnat: Tiedonpakkaus, algoritmit, Huffmanin koodaus, aritmeettinen koodaus, sanakirjat, informaatioteoria. CR luokat: E.

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

S09 04 Kohteiden tunnistaminen 3D datasta

S11-04 Kompaktikamerat stereokamerajärjestelmässä. Projektisuunnitelma

Latuviitan Landsat-mosaiikki Itämeren alueelta

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet )

Tietorakenteet, laskuharjoitus 7, ratkaisuja

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

Moottorin kierrosnopeus Tämän harjoituksen jälkeen:

Algoritmit 2. Luento 6 Ke Timo Männikkö

FOTONETTI BOOK CREATOR

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

Viimeistely Ajourien huomiointi puutiedoissa ja lopullinen kuviointi. Metsätehon tuloskalvosarja 5/2018 LIITE 4 Timo Melkas Kirsi Riekki Metsäteho Oy

Johdatus verkkoteoriaan 4. luento

6.6. Tasoitus ja terävöinti

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Ohjelmoinnin perusteet Y Python

4 LUKUJONOT JA SUMMAT

n! k!(n k)! n = Binomikerroin voidaan laskea pelkästään yhteenlaskun avulla käyttäen allaolevia ns. palautuskaavoja.

LUENTO 6 KUVANKÄSITTELY

Muuttujien määrittely

FRAM. Prepress Guide

Ohjelmoinnin perusteet Y Python

WebP-kuvaformaatin käyttö ja hyödyllisyys

Äärellisten automaattien ja säännöllisten lausekkeiden minimointi

Taulukkolaskennan edistyneempiä piirteitä, Kuvakäsittelystä

Ksenos Prime Käyttäjän opas

Harjoitustyö: virtuaalikone

Hyvät ja huonot tiedostomuodot paikkatietokuville, ja miksi png ja jpeg kuuluvat niihin huonoihin

Algoritmit 2. Luento 13 Ti Timo Männikkö

Kompleksiluvut signaalin taajuusjakauman arvioinnissa

Matematiikan tukikurssi

Rinnakkaistietokoneet luento S

Transkriptio:

I JARKKO PEKKARINEN PNG-KUVAFORMAATTI JA SEN TULEVAISUUS Kandidaatintyö Tarkastaja: Lehtori Heikki Huttunen Työ jätetty tarkastettavaksi 10. toukokuuta 2009

TIIVISTELMÄ II TAMPEREEN TEKNILLINEN YLIOPISTO Tietoliikenne-elektroniikan koulutusohjelma PEKKARINEN, JARKKO: PNG-kuvaformaatti ja sen tulevaisuus Kandidaatintyö, 27 sivua, 3 liitesivua Toukokuu 2009 Pääaine: Signaalinkäsittely ja multimedia Tarkastaja: Lehtori Heikki Huttunen Avainsanat: PNG-kuvaformaatti, kuvaformaatti, häviötön pakkaus Kuvatiedostojen häviötön tallentaminen on tärkeää täsmällisyyttä vaativissa käyttötilanteissa, kuten lääketieteellisten kuvien tallentamisessa ja ammattimaisessa kuvankäsittelyssä. Toinen tyypillinen käyttötilanne kuvien häviöttömään tallentamiseen on internetissä yleinen tietokonegrafiikka, jonka häviölliseen muotoon tallentamisen seurauksena syntyisi kuviin helposti havaittavia häiriöitä. Tämän työn tavoitteena on perehdyttää lukija juuri internet-käytössä suositun, häviöttömän PNG-kuvaformaatin (Portable Network Graphics) toimintaan ja ominaisuuksiin sekä pohtia PNG:n tulevaisuutta sekä sen kehitysmahdollisuuksien että sen asemaa uhkaavien muiden kuvaformaattien näkökulmasta. Työ jakaantuu kahteen osaan. Kirjallisuusselvitysosassa perehdytään PNG:n käyttämiin pakkausmenetelmiin ja kuvaominaisuuksiin, kuten läpinäkyvyyteen, ja arvioidaan näiden riittävyyttä vastaamaan nykypäivän vaatimuksiin. Työn toisessa osassa PNG:n suorituskykyä vertaillaan muihin kuvaformaatteihin pakkaustehokkuuden, pakkausnopeuden ja purkunopeuden osalta, jotta saataisiin kattava kuva formaattien soveltuvuudesta eri käyttötilanteisiin. Kuvaformaattien välisten vertailujen tuloksista lopuksi päätellään, että PNG:n tämänhetkinen asema suosittuna web-grafiikan kuvaformaattina on perusteltu sekä sen suorituskyvyn että ominaisuuksien puolesta. Työssä esitetään myös PNG:n määritelmästä tehtyihin havaintoihin perustuen nykyisen PNG:n standardin kanssa yhteensopivia kehitysehdotuksia, jotka toteuttamalla olisi mahdollista jopa merkittävästi parantaa PNG:n pakkausnopeutta.

ALKUSANAT III Tämä kandidaatintyö kirjoitettiin osana Tampereen teknillisen yliopiston signaalinkäsittelyn laitoksen kandidaatintyöseminaaria keväällä 2009. Työn aiheen valinnassa auttoi henkilökohtainen kiinnostukseni digitaalisiin kuvaformaatteihin ja valokuvaukseen. Koen myös, että työn myötä karttuneesta häviöttömien pakkausmenetelmien tuntemuksesta tulee varmasti olemaan hyötyä vielä työn kirjoittamisen jälkeenkin. Haluaisin kiittää työni ohjaajaa, lehtori Heikki Huttusta hyvistä ideoista ja kehitysehdotuksista sekä kannustavasta asenteesta kandidaatintyöseminaarin yhteydessä. Suuri kiitos kuuluu myös avovaimolleni Saralle ja ystävilleni, jotka kannustivat minua työn tekemisessä ja toisaalta tarjosivat tarvittaessa myös mahdollisuuden siirtää ajatukset työn tekemisestä toisaalle. 10. toukokuuta 2009 Jarkko Pekkarinen

SISÄLLYS IV Tiivistelmä...II Alkusanat...III Termit ja niiden määritelmät...v 1. Johdanto...6 2. Häviötön kuvan pakkaaminen...7 3. PNG-kuvaformaatti...9 3.1. Pakkausominaisuudet...9 3.1.1. Pakkaussuotimet...10 3.1.2. DEFLATE-algoritmi...12 3.2. Kuvaominaisuudet...14 3.2.1. Läpinäkyvyys...14 3.2.2. Lomitus...15 3.2.3. Gamma- ja värikorjaus...16 3.3. Kehitysmahdollisuudet...17 4. Kuvaformaattien vertailu...18 4.1. Vertailtavat kuvaformaatit...18 4.1.1. GIF...18 4.1.2. TIFF...19 4.1.3. Häviötön JPEG...19 4.1.4. JPEG-LS...19 4.2. Testikuvamateriaali...20 4.3. Pakkaustehokkuusvertailu...20 4.4. Pakkausnopeusvertailu...21 4.5. Purkunopeusvertailu...22 5. Johtopäätökset...24 Lähteet...25 Liite 1...28

TERMIT JA NIIDEN MÄÄRITELMÄT V Alfa-arvo Ilmaisee kyseisen pikselin läpinäkyvyysasteen PNGkuvassa. DEFLATE Häviötön pakkausalgoritmi, joka koostuu LZ77-algoritmista ja Huffman-koodauksesta. GIF Häviötön kuvaformaatti. Lyhenne muodostuu sanoista Graphics Interchange Format. JPEG-LS Sekä häviöttömän että häviöllisen tallennusmahdollisuuden tarjoava kuvaformaatti. Kuvaformaatti Säännöstö digitaalisen kuvan ja mahdollisesti siihen kuuluvien ominaisuuksien esittämiseen ja tulkitsemiseen binäärimuodossa. Kuvatyyppi Kuvadatan esitysmuoto. Joko harmaasävy-, RGB-, tai väripalettikuva. L-JPEG Häviötön pakkausmenetelmä JPEG-kuvaformaatissa. Lohko PNG-tiedoston datarakenteen alkeisosa, joka voi sisältää joko pakatun kuvadatan tai kuvaformaatin tunnistamiseen tai kuvaominaisuuksien toteuttamiseen tarvittavaa dataa. LZ77 Häviötön pakkausalgoritmi, joka hyödyntää identtisiä tavusekvenssejä datassa ja tallentaa näihin osoittimia. LZW Häviötön pakkausalgoritmi, joka hyödyntää identtisiä tavusekvenssejä datassa ja muodostaa näistä sanakirjan. Palikka LZ77:n muodostama osa pakattua dataa, jonka koko määrittyy sen perusteella, että Huffman-koodauksesta saadaan suurin hyöty. PNG Häviötön kuvaformaatti. Lyhenne muodostuu sanoista Portable Network Graphics. RLE Häviötön pakkausalgoritmi, joka hyödyntää peräkkäin esiintyviä identtisiä arvoja. Lyhenne muodostuu sanoista Run-Length Encoding. TIFF Häviötön kuvaformaatti. Lyhenne muodostuu sanoista Tagged Image File Format. Värisyvyys Bittimäärä, jota käytetään yksittäisen pikselin harmaasävyarvon, väripalettiarvon tai R-, G- tai B-arvon esittämiseen.

6 1.JOHDANTO Häviöllisessä tiedon pakkaamisessa sallitaan poikkeamia alkuperäiseen dataan ja on päätettävä siitä kuinka paljon poikkeamia datassa sallitaan verrattuna saavutettavaan pakkaushyötyyn. Tästä hyvänä esimerkkinä on JPEG-kuvaformaatti ja sen tarjoama mahdollisuus valita haluttu kuvanlaatu pakkaustehokkuuden kustannuksella. Häviöttömät tiedon pakkaamismenetelmät sen sijaan säilyttävät datan alkuperäisen informaatiosisällön täydellisesti, mikä voikin olla vaatimuksena esimerkiksi lääketieteellisiä kuvia tallennettaessa. Häviöttömässä pakkaamisessa pakkaamisen hyötysuhteeseen vaikuttaa pakattavan datasisällön lisäksi ainoastaan pakkausmenetelmän tehokkuus. Häviöttömät kuvaformaatit soveltuvat häviöllisiä paremmin etenkin tietokonegrafiikan, kuten web-sivustojen painikkeiden tai logokuvien pakkaamisen, sillä paljon tasaisia värialueita sisältäviin kuviin muodostuu häviöllisesti kuvia pakattaessa erityisen helposti havaittavia häiriöitä jopa värivirheitä. Häviötön pakkaaminen on hyvin hyödyllistä myös kuvankäsittelyssä, vaikka haluttaisiinkin tallentaa lopullinen työ häviölliseen muotoon, sillä kuvan laatu kärsii joka kerta kun kuvaa käsitellessä tehdään muutoksia ja kuva tallennetaan. Tämän työn luvussa 2 kerrotaan tarkemmin kuvien häviöttömästä pakkaamisesta, jonka jälkeen luvussa 3 esitellään häviötön PNG-kuvaformaatti ja sen ominaisuudet ja kehitysmahdollisuudet pakkausmenetelmiä painottaen. Muihin kuvaformaatteihin nähden luvussa 4 suoritettujen vertailujen pohjalta pohditaan lopuksi luvussa 5 onko PNG:n tämänhetkinen asema suosittuna yleiskäyttöisenä kuvaformaattina uhattuna. Jo heti alkuun voidaan todeta, että tälläkin hetkellä on olemassa ainakin yksi pakkaustehokkuudeltaan PNG:tä tehokkaampi yleiskäyttöinen häviötön kuvaformaatti, JPEG-LS, joka on myös tämän työn pakkaustehokkuusvertailussa mukana. JPEG-LS ei kuitenkaan ole ainakaan vielä saavuttanut merkittävää suosiota. Vielä tätäkin suurempia pakkaustehokkuuksia PNG:hen verrattuna on saavutettu rajattua tarkoitusta varten suunnitelluilla kuvaformaateilla, esimerkiksi lääketieteellisten ja satelliittikuvien häviöttömässä tallennuksessa, joissa voidaan hyödyntää kuvien erityispiirteitä paremman pakkaustehokkuuden saavuttamiseksi. [1; 2]

7 2.HÄVIÖTÖN KUVAN PAKKAAMINEN Ennen kuin aletaan käsittelemään pakkaamista on hyvä tiedostaa pakattavan datan erityispiirteet. Digitaalisen kuvan tapauksessa pakattavana datana on binäärijono, joka on tulkittavissa matriisiksi diskreettejä lukuarvoja. Data-alkioilla, eli tässä tapauksessa pikseleillä, on siis toisaalta ulottuvuutena lukuarvo ja toisaalta myös spatiaalinen ulottuvuus pikselin sijainti. Yksi tällainen matriisi tarvitaan harmaasävykuvan esittämiseen ja sen yksittäisen alkion arvo ilmaisee kyseisessä kohdassa sijaitsevan pikselin harmaasävyasteen. RGB-kuvissa matriiseja sen sijaan on kolme kappaletta ja näiden alkioiden arvot edustavat punaisen, vihreän, ja sinisen sävyn määrää kussakin pikselin sijainnissa. Niin kutsutulla väripalettikuvalla tarkoitetaan kuvaa, joka esitetään aina yhden matriisin avulla ja kuvan ohessa tallennetaan tieto siitä miten matriisin arvot tulkitaan. Väripalettikuva on hyödyllinen tallennusmuoto, kun esimerkiksi halutaan tallentaa värikuva, jossa on hyvin vähän eri sävyjä. Tällöin kuvan tallentaminen RGBmuodossa saattaisi turhaan kasvattaa kuvadatan määrää. Kuinka edellä esitellyn kuvadatan pakkaamisongelmaa tulee sitten lähestyä? Mikäli unohdetaan spatiaalinen ulottuvuus niin kuvalle ja mille tahansa muullekin datalle voidaan laskea teoreettinen alaraja kuinka pieneksi se on mahdollista pakata luomalla datan arvoille uudet, edullisemmat (todennäköisemmille arvoille lyhyemmät) esitysmuodot näiden esiintymistodennäköisyyksiä hyödyntäen. Tätä teoreettista rajaa kutsutaan arvojen kokonaisentropiaksi ja se on esitetty kaavassa (1), (1) jossa p(x) on arvon x esiintymistodennäköisyys kuvassa. Arvojen kokonaisentropia, H, saadaan laskemalla yksittäisten arvojen entropioiden odotusarvo ja sen yksiköksi saadaan bittiä per pikseliarvo [3]. Arvojen entropiaa hyödyntäviä pakkausmenetelmiä ovat mm. aritmeettinen koodaus ja Huffman-koodaus johon tutustutaan lyhyesti aliluvussa 3.1.2. Tehokas pakkausmenetelmä digitaaliselle kuvalle kuitenkin käyttää arvoulottuvuuden lisäksi myös spatiaalista ulottuvuutta hyväkseen. On hyvä huomata, että kaikella datalla on mahdollista hyödyntää yksiulotteista spatiaalista korrelaatiota, sillä binääriesitys on aina tallennettuna tiettyyn järjestykseen. Kuvissa tätä korrelaatiota kuitenkin esiintyy kahdessa ulottuvuudessa. Spatiaaliselle entropialle, toisin kuin arvojen entropialle, ei ole yksiselitteistä laskennallista menetelmää. Tästä on

seurauksena se, ettei tietylle kuvadatalle ole mahdollista tarkasti määrittää teoreettista rajaa kuinka pieneksi se on mahdollista pakata [4]. Spatiaalisen entropian hyödyntämiseksi on kehitetty lukuisia eri menetelmiä, joten tässä luvussa ei tutustuta tarkemmin yksittäisiin menetelmiin, vaan tyydytään toteamaan, että tämän työn aliluvuissa 3.1.1 ja 3.1.2 on kuvattuna kaksi tällaista menetelmää: PNG-kuvaformaatin pakkaussuodatus ja LZ77-algoritmin identtisten tavusekvenssien etsintä. Spatiaalisen ulottuvuuden hyödyntämisen tärkeyttä kuvan pakkaamisessa voidaan kuitenkin havainnollistaa esimerkiksi seuraavasti: Olkoon kuvadatan pakkausmenetelmä spatiaalisesti riippumaton, mutta arvojen entropiaa hyödyntävä. Kuvapikselien arvot korvataan uusilla arvoilla sillä perusteella mitkä arvot ovat todennäköisimpiä esiintymään kuvadatassa. Mikäli kaikki arvot on alunperin esitetty 8- bittisessä muodossa niin pakatussa muodossa voitaisiin esittää kaikista yleisin arvo vain yhdellä bitillä, mutta harvinaisimmat arvot olisi esitettävä yli kahdeksalla bitillä. Jos käy niin, että kaikkia arvoja esiintyy kuvassa yhtä paljon (arvojen kokonaisentropia saa maksimiarvonsa), niin kuvadataa ei voida pakata ollenkaan, vaan lyhin esitysmuoto on alkuperäinen 8-bittinen esitystapa. On kuitenkin mahdollista, että tällainen arvojen entropiaa hyödyntävälle menetelmälle pakkautumaton data on spatiaalisen entropian näkökulmasta hyvinkin pakkautuvaa. Tästä hyvänä esimerkkinä on kuva, jonka jokainen rivi koostuu yhdestä vakiosävystä, jota ei esiinny muilla riveillä. Tällainen kuva olisi mahdollista pakata pseudokoodilla esimerkiksi seuraavaan muotoon: 256 pikseliä joiden arvo on X ja siirry uuden rivin alkuun. Toista edellinen 256 kertaa ja kasvata X:n arvoa joka toistolla yhdellä. X:n alkuarvo on 0.. On vaikeaa kehittää yhtä tehokasta algoritmia, joka hyödyntäisi tehokkaasti sekä arvojen entropiaa, että spatiaalista entropiaa. Tämän seurauksena häviöttömille kuvaformaateille onkin hyvin tyypillistä, että niiden pakkausmenetelmä koostuu vähintään kahdesta erillisestä algoritmista, kuten kaikissa tässä työssä mainituissa kuvaformaateissa. Lopuksi huomautettakoot, että kuvasarjojen tapauksessa on mahdollista hyödyntää kuvien pakkaamisen tehostamisessa myös temporaalista entropiaa, eli peräkkäisten kuvien sisältöjen välisiä yhtäläisyyksiä. Tällaista menetelmää on hyödynnetty mm. satelliittikuvien pakkaamisessa [2]. Tällaiset menetelmät muistuttavat hyvin läheisesti digitaalisen videokuvan pakkaamista, eikä niitä siten käsitellä tässä työssä. 8

9 3.PNG-KUVAFORMAATTI PNG-kuvaformaatin syntyyn johti se seikka, että yllättäen vuoden 1994 lopussa siihen aikaan internetissä laajimmalti käytössä olleesta häviöttömästä kuvaformaatista, aliluvussa 4.1.1. esiteltävästä GIF:stä, alettiin periä lisenssimaksuja sitä tukevilta ohjelmistoilta. Taustalla tässä muutoksessa oli se, että GIF:n käyttämä LZW-algoritmi oli patentoitu. Verkkoyhteisö reagoi tilanteeseen nopeasti ja alettiin suunnitella webgrafiikan ja vähäväristen kuvien pakkaamisessa menestyvälle GIF:lle seuraajaa, PNG:tä. Suunnittelulähtökohtina oli, että uuden kuvaformaatin oli oltava vapaa patenteista ja edeltäjäänsä sekä pakkaustehokkuudeltaan että ominaisuuksiltaan parempi. Ei kuitenkaan tyydytty vain tähän, vaan PNG:n ominaisuuksia laajennettiin myös siten, että sitä oli mahdollista käyttää myös korvaamaan aliluvussa 4.1.2. esiteltävä TIFF-kuvaformaatti tosivärikuvien (engl. truecolor) häviöttömässä tallentamisessa. PNG:n määritelmä valmistui vuoden 1995 ensimmäisellä puoliskolla, mutta sen nouseminen erittäin suosituksi häviöttömäksi kuvaformaatiksi tapahtui vasta 2000-luvun alkupuolella mm. pitkään kestäneen huonon internet-selainten ohjelmistotuen seurauksena. [5, s. 372 373] Tässä luvussa esitellään tarkemmin häviöttömästi kuvadataa pakkaavan PNGkuvaformaatin tärkeimmät ominaisuudet ja luvun lopussa pohditaan PNG:n kehitysmahdollisuuksia. Tässä työssä ei perehdytä PNG-tiedostojen datarakenteeseen. Lyhyesti voidaan kuitenkin todeta, että datarakenne on modulaarinen ja koostuu vaihtelevasta määrästä lohkoja (engl. chunk), joista yksi sisältää pakatun kuvadatan ja muut esimerkiksi kuvaformaatin tunnistamiseen tai kuvaominaisuuksien toteuttamiseen tarvittavaa dataa. Myöskin virheentarkasteluominaisuudet on rajattu työn ulkopuolelle, mutta näistäkin lyhyesti mainittakoot, että virheentarkastelua varten on PNG:ssä kolme erilaista menetelmää, joista yksi mahdollistaa vahingoittuneen tiedoston havaitsemisen jo kesken tiedonsiirron. [6] 3.1.Pakkausominaisuudet PNG-kuvaformaatin pakkausmenetelmänä on tässä luvussa esiteltävien pakkaussuotimien ja DEFLATE-algoritmin yhdistelmä. Nämä kaksi kokonaisuutta suoritetaan peräkkäin siten, että pakkaussuodatus tapahtuu ensin, jonka jälkeen suodatettu data pakataan DEFLATE:lla. Kumpikin näistä kokonaisuuksista on riippumaton kuvatyypistä (harmaasävy/väripaletti/rgb) ja värisyvyydestä. Värisyvyydellä tarkoitetaan bittimäärää, jota käytetään yksittäisen pikselin harmaasävyarvon, väripalettiarvon tai R-, G- tai B-arvon esittämiseen.

3.1.1.Pakkaussuotimet 10 Pakkaussuotimien tarkoituksena on pienentää kuvan arvojen kokonaisentropiaa arvojen kaksiulotteista spatiaalista korrelaatiota hyödyntämällä, jotta data saataisiin paremmin DEFLATE-algoritmilla pakkautuvaan muotoon. Pakkaussuotimien toimintaperiaatteena on se, että pakattavaa kuvadataa tarkastellaan riveittäin, valitaan jokaiselle riville parhaiten sille soveltuva suodin viiden vaihtoehdon joukosta ja lopputulokseksi saadaan suodatettu rivi ja tälle riville käytetyn suotimen tunniste. Tällainen adaptiivinen suodinten valinta mahdollistaa monipuolisen spatiaalisen entropian hyödyntämisen yksinkertaisia, lineaarisia yksittäissuotimia käyttäen. [6] Pakkaussuotimien toteutus vaatii muutaman säännön noudattamista. Ensinnäkin suotimet operoivat aina vertaistasoissa eli esimerkiksi RGB-kuvassa arvojen erotus lasketaan vähentämällä vierekkäisten pikseleiden punaisen sävyn arvot toisistaan, sen sijaan että erotus laskettaisiin tietyn pikselin kohdalla olevien puna-, viher-, ja sinisävyarvojen erotuksena. Toiseksi suotimet operoivat tavutasolla eivätkä pikselitasolla. Tämä tarkoittaa, että esimerkiksi 2:n bitin harmaasävykuvaa suodatettaessa neljän eri pikselin arvot mielletään yhdeksi tavun kokoiseksi arvoksi. Kolmantena sääntönä on, että lomitetuissa kuvissa suotimet operoivat kunkin lomitustason erikseen aivan kuin ne olisivat erillisiä kuvia omine korkeuksine ja leveyksineen. Lomituksesta kerrotaan tarkemmin aliluvussa 3.2.2. Viimeisenä sääntönä on, että suodatuksen lopputulos saadaan tekemällä välitulokselle modulo-256-operaatio, jotta lopputuloksen esittämiseen riittäisi 8 bittiä. [5, s. 379] Taulukossa 3.1. on lueteltu PNG:n kaikki viisi pakkaussuodinta ja näiden toiminta kuvadataa sekä pakattaessa (suodinfunktio) että purettaessa (palautusfunktio). Taulukon lyhenne Suod(x) tarkoittaa suodatettavana olevan tavun x suodatuksen jälkeistä arvoa ja Alkup(x) alkuperäistä arvoa. Floor tarkoittaa pyöristämistä alaspäin lähimpään kokonaislukuun ja Paeth tarkoittaa Alan W. Paethin kehittämää Paeth-estimaattia, joka lasketaan seuraavasti kuvan 3.1. tavuarvojen sijaintimerkintöjä käyttäen: Vähennetään c:n arvo a:n ja b:n summasta ja valitaan estimaatiksi a,b tai c riippuen siitä mikä näistä on edellä saatua arvoa lähimpänä. [6] Kuva 3.1. Tavuarvojen sijainnit.

11 Taulukko 3.1. Pakkaussuotimet. Suodin Suodinfunktio Palautusfunktio None Suod(x) = Alkup(x) Alkup(x) = Suod(x) Sub Suod(x) = Alkup(x) - Alkup(a) Alkup(x) = Suod(x) + Alkup(a) Up Suod(x) = Alkup(x) - Alkup(b) Alkup(x) = Suod(x) + Alkup(b) Average Suod(x) = Alkup(x) - floor((alkup(a) + Alkup(b)) / 2) Alkup(x) = Suod(x) + floor((alkup(a) + Alkup(b)) / 2) Paeth Suod(x) = Alkup(x) - Paeth(Alkup(a), Alkup(b), Alkup(c)) Alkup(x) = Suod(x) + Paeth(Alkup(a), Alkup(b), Alkup(c)) Ennen kuin perehdytään siihen kuinka suotimet valitaan jokaista riviä varten, on hyvä käydä läpi millaisiin tilanteisiin eri suotimet tyypillisesti sopivat. None-suodin, joka jättää kuvadatan arvot ennalleen, on havaittu keskimäärin parhaaksi, kun käsiteltävänä on kuva, jonka väriavaruus on alle 8 bittiä, sillä suodatettavien tavuarvojen välinen korrelaatio on tällöin yleensä hyvin heikko. Viereisten arvojen erotuksiin perustuvat Sub- ja Up-suotimet muuttavat vaaka- ja pystygradientteja, eli tasaisesti muuttuvia sävyalueita kuvassa, jonoksi vakioita tavuarvoja. Tällaiset tilanteet ovat yleisiä etenkin tietokonegrafiikassa. Paeth-suotimen, joka hyödyntää varsin onnistuneesti sekä vaaka-, pysty- että poikkigradientteja, taas on havaittu tuottavan keskimäärin parhaimman tuloksen, mikäli sopivimman suotimen estimointi on laskennallisesti mahdotonta ja koko kuvadataa varten on valittava vain yksi suodin, esimerkiksi sulautetuissa järjestelmissä. [5 s. 383 384] Parhaimman suodinyhdistelmän valinta koko kuvadatalle ei ole aivan yksinkertainen ongelma. Kun rivejä on n kappaletta ja suotimia 5 erilaista niin koko kuvalle on mahdollista valita 5ⁿ erilaista suodinyhdistelmää ja lisäksi suodatuksen täsmällinen vaikutus lopulliseen pakkauskokoon on lisäksi nähtävissä vasta DEFLATE-algoritmin suorittamisen jälkeen. Optimaalisten suodinvalintojen laskemisen ollessa laskennallisesti liian vaativaa joudutaan suotimien valinta toteuttamaan estimoimalla. PNG:n spesifikaatio jättää estimoinnin toteutuksen täysin sovelluskehittäjien vastuulle, mutta epävirallisesti PNG:n kehittäjät suosittelevat toteuttamaan sen suodatustulosten absoluuttisten arvojen summan perusteella. Kuvan rivit suodatetaan jokaisella suotimella ja pienimmän tällaisen summan aikaansaanut suodin ja sen ulostulo valitaan yksittäisen rivin ulostuloksi. Tällä menetelmällä tehtyjen suodinvalintojen on havaittu olevan lähellä optimaalisia valintoja. [5, s. 383 384; 6] Pakkaussuodatuksen vaikutusta arvojen kokonaisentropiaan tutkittiin tässä työssä toteuttamalla pakkaussuotimet PNG:n spesifikaation mukaisesti ja näiden valinnan estimointi suositusten mukaisesti. Toteutukseen käytettiin Matlab-ohjelmistoa. Kuvassa 3.2 on nähtävissä suodatuksen vaikutus 512x512 pikselin ja 8:n bitin harmaasävyisen testikuvan pikseliarvoihin sekä arvojen kokonaisentropia ennen suodatusta ja suodatuksen jälkeen. Kuvan 3.2 testikuvalle suotimien valinnan estimointi päätyi siihen, että Sub-suodin valittiin yhdelle riville (ylin rivi), Up-suodin 98:lle riville, Averagesuodin 209:lle riville ja Paeth-suodin 204:lle riville. Suodatetusta kuvasta voidaan huomata, että rivit 2-5 ja ja alin rivi ovat täysin mustia (pikseliarvo 0). Selityksenä tälle on se, että alkuperäisessä kuvassa viisi ylintä ja kaksi alinta riviä ovat identtisiä ja näiden suodatuksessa on hyödynnetty Up-suodinta.

12 Kuva 3.2. Pakkaussuodatuksen vaikutus kuvadataan ja arvojen kokonaisentropiaan. 3.1.2.DEFLATE-algoritmi DEFLATE on häviötön algoritmi, jota käytetään myös esimerkiksi suositussa gzippakkausohjelmassa. DEFLATE nähtiin PNG:tä suunnitellessa hyvänä kompromissiratkaisuna pakkaustehokkuutensa ja laskennallisuuden vaativuutensa suhteen verrattuna muihin vaihtoehtoihin, joiden määrää rajoitti vaatimus patentittomuudesta. DEFLATE on yleiskäyttöinen pakkausalgoritmi, eli sillä voidaan pakata mitä tahansa binäärimuotoista dataa sisällöstä riippumatta. DEFLATE on oikeastaan kahden menetelmän yhdistelmä se koostuu LZ77-algoritmista, jota seuraa Huffman-koodaus. [7] Häviötön LZ77-algoritmi käyttää hyväkseen pakattavan tavujonon yksiulotteista spatiaalista entropiaa ja perustuu siihen, että tavuille, joita ollaan seuraavaksi pakkaamassa etsitään jo aiemmin pakatusta sisääntulodatasta mahdollisimman pitkä identtinen tavusekvenssi, ja tallennetaan tähän osoitin [8]. Tällaista enintään 32:n kilotavun pituista etsintäaluetta kutsutaan liukuvaksi ikkunaksi ja sen maksimipituus on määritelty perustuen siihen, että sen kasvattamisesta tämän suuremmaksi on tavallisesti vain prosentin murto-osan verran hyötyä [5, s. 375]. Osoitin tallennetaan lukuparina, joista ensimmäinen kertoo löydetyn sekvenssin pituuden tavuina (3 256) ja toinen etäisyyden tavuina (1-32k) taaksepäin, mistä alkaen tavusekvenssi löytyy. Kuvassa 3.3. on havainnollistettu osoitinparin muodostamista. Samalla menetelmällä toteutetaan myös jakson pituuden koodaus eli RLE (Run-length encoding). Tässä tapauksessa osoitinpari on esimerkiksi muotoa: etäisyys 1 ja pituus 10, josta seuraa, että viimeisin käsitelty tavu toistetaan 10 kertaa. Nyt oltaisiin näennäisesti osoittamassa alkioihin, joita ei vielä ole ikkunan sisällä, mutta tämä ei tuota ongelmaa, sillä dataa purettaessa ikkuna siirtyy tavun verran jokaisen yksittäisen kopioidun tavun jälkeen ja riittää, että ikkunan sisältä löytyy yksi toistuva tavu tai tavusarja [7].

13 Kuva 3.3. Osoitinparin muodostaminen LZ77:ssa. Kaikkea pakattavaa dataa ei luonnollisesti voida esittää osoitinparin avulla, sillä kaikille tavusekvensseille ei löydy identtistä paria ikkunan sisältä eikä LZ77 salli kolmea tavua lyhyempiä tavusekvenssejä esitettävän osoitinparin avulla. Tällaiset tavut on tallennettava pakattuun dataan sellaisenaan eli literaaleina. Kaikki pakattu data on siis joko literaalimuodossa tai osoitinparien pituuksina tai etäisyyksinä ja näiden kolmen datatyypin esittämiseen käytetään kahta erillistä aakkostoa, jotka käytännössä ovat bittijonoja, joiden jokaiselle arvolle on määritelty tietty tulkinta. Ensimmäisen aakkoston avulla esitetään sekä literaalit että pituudet siten, että niillä on molemmilla omat arvoalueensa ja toisen aakkoston avulla esitetään etäisyydet. Näiden kahden aakkoston arvoja ei ole mahdollista sekoittaa toisiinsa, sillä etäisyyttä esittävän aakkoston arvo esiintyy aina vain heti pituutta esittävän aakkoston arvon perässä. Tällainen aakkostojako on havaittu tehokkaaksi muodostettaessa LZ77-pakatun datan esittämistä varten Huffman-puita. [5, s. 375] Huffman-koodaus on häviötön pakkausmenetelmä, jonka perustana on se, että pakattavan datan arvoille luodaan uusi vaihtelevan mittainen esitysmuoto perustuen niiden esiintymistodennäköisyyksiin. Useimmin esiintyvät arvot saavat lyhyimmät esitysmuodot, kun taas harvemmin esiintyvät arvot saavat pisimmät. Esitysmuotojen on kuitenkin vaihtelevan pituuden vuoksi oltava sellaisia, että niiden tulkitseminen bittivirrasta on yksiselitteistä. Uusien esitysmuotojen määrittäminen kaikille arvoille toteutetaan puumaisesti haarautuvan algoritmin avulla, ja sen lopputulosta kutsutaan Huffman-puuksi. Esiintymistodennäköisyyksiin pohjautuvana menetelmänä Huffmankoodaus luokitellaan entropiakoodauksen menetelmäksi. [7] DEFLATE:ssa Huffman-koodaus toteutetaan LZ77:n jo pakkaaman datan aakkostoille joko ennalta määrättyjen Huffman-puiden avulla tai ne muodostetaan saadun datan pohjalta dynaamisesti. DEFLATE jaotteleekin LZ77:n pakkaaman datan sen kokoisiin osiin eli palikoihin (engl. block), että Huffman-koodaus saadaan toteutettua mahdollisimman optimaalisesti. Jokaisen palikan otsikossa (engl. header) on vain määriteltävä käytetäänkö ennalta määrättyjä vai dynaamisia Huffman-puita, ja jälkimmäisessä tapauksessa muodostettujen puiden kuvaus sisällytetään palikan dataan. [7]

3.2.Kuvaominaisuudet 14 Tässä kappaleessa esitellään PNG-kuvaformaatin tärkeimmät kuvaominaisuudet. Kuvaominaisuuksilla tarkoitetaan kaikkia kuvassa käytettäviä tai kuvaan vaikuttavia ominaisuuksia, jotka eivät kuulu varsinaiseen kuvadatan RGB-, väripaletti- tai harmaasävyesitysmuotoon. 3.2.1.Läpinäkyvyys Läpinäkyvyys-ominaisuutta voidaan käyttää kuvan pikseleiden esittämiseen joko täysin tai osittain läpinäkyvinä. Tätä ominaisuutta voidaan hyödyntää esimerkiksi internetsivustoilla käytettävissä kuvissa, jolloin samaa logo- tai painikekuvaa on mahdollista käyttää minkä tahansa eri taustan päällä, kuten kuvassa 3.4. on havainnollistettu. Mikäli taustaa halutaan joskus vaihtaa niin kuvatiedostoon ei tarvitse tehdä muutoksia. Läpinäkyvyyden ansiosta säästetään myös tiedonsiirtomäärissä verrattuna siihen tilanteeseen, että jokaista taustaa varten olisi oma kuvatiedostonsa. Kuva 3.4. Usean eri läpinäkyvyystason käyttäminen PNG-kuvassa. Noppakuvan tausta on muokattu täysin läpinäkyväksi ja nopan sivut eriasteisen läpinäkyviksi. PNG:ssä läpinäkyvyyttä voidaan käyttää kaikissa kuvatyypeissä ja toteutustasolla läpinäkyvyys esitetään yhtä poikkeustilannetta lukuunottamatta niin kutsutun alfakanavan avulla. Alfa-kanava toteutetaan RGB-kuvissa neljäntenä matriisina yksittäisten värimatriisien ohella ja harmaasävykuvissa toisena matriisina sävymatriisin ohella. Alfa-kanavan yksittäinen arvo kuvastaa läpinäkyvyysastetta kyseisen pikselin kohdalla kuvassa. Väripalettikuvissa alfa-kanavaa ei toteuteta matriisina vaan läpinäkyvyys joudutaan ilmaisemaan liittämällä yksittäisiin paletti-indekseihin sävytiedon lisäksi alfaarvo. Tästä seuraa se, että mikäli saman sävyn kohdalla halutaan käyttää eri kohdissa kuvaa eri läpinäkyvyysasteita, niin tälle sävylle joudutaan varaamaan paletti-indekseistä useampi alkio jokaista eri läpinäkyvyysastetta varten. [9]

Ainoana poikkeustilanteena missä alfa-kanavaa tai -arvoa ei käytetä läpinäkyvyyden esittämiseen on tilanne, jossa RGB- tai harmaasävykuvassa halutaan käyttää yhtä tiettyä sävyä täyden läpinäkyvyysasteen esittämiseen, kun muita läpinäkyvyysasteita ei käytetä. Tällaisessa tapauksessa niin kutsuttuun trns -lohkoon tallennetaan kyseisen sävyn arvo, jotta kuvaa luettaessa se osattaisiin tulkita täysin läpinäkyväksi [9]. On hyvä huomata, että läpinäkyvyyden käyttäminen kasvattaa kuvatiedoston kokoa. Väripalettikuvien ja edellä mainitun poikkeustilanteen tapauksessa tämä kasvu on luonnollisesti hyvin pieni, mutta alfa-kanava matriisimuodossaan saattaa kasvattaa pakatun kuvatiedon kokoa jopa kymmeniä prosentteja. 3.2.2.Lomitus Lomitus (engl. interlacing) mahdollistaa tallennetun kuvan progressiivisen ruudulle tuonnin siten, että alkuperäinen kuva jaetaan useampaan lomitustasoon, joista ensimmäisen avulla luodaan karkea versio alkuperäiskuvasta siten ja tätä seuraavat tasot täydentävät kuvaa kunnes viimeisen täydennyksen jälkeen kuva vastaa täysin alkuperäistä kuvaa [6]. Tällainen menettely mahdollistaa koko kuvasisällön nopeamman hahmottamisen kuvan latautuessa verrattuna tavalliseen kuvan latautumiseen, jossa kuva tuodaan ruudulle täydessä tarkkuudessaan muutama rivi kerrallaan järjestyksessä ylhäältä alaspäin sitä mukaa, kun sitä on saatu luettua [9]. PNG-kuvaformaatissa lomitus on toteutettu siten, että alkuperäisen kuvan pikseleitä tarkastellaan 8x8 pikselin ikkunoissa alkaen vasemmasta yläkulmasta ja nämä jaetaan Adam7-menetelmän (kuva 3.5.) mukaisesti numerojärjestyksessä seitsemään lomitustasoon, jotka tallennetaan pakattavaksi siirtyvään datavirtaan peräkkäin [6]. Kun kuvadataa luetaan niin lomitettuja kuvia tukevat ohjelmistot osaavat täydentää puuttuvat pikselit monistamalla niitä, jotka on jo saatu luettua. Kun esimerkiksi kuvadataa ollaan luettu kolmannen lomitustason loppuun asti, niin koko kuvadatasta on luettuna yksi kuudestoistaosa (4/64) ja koko kuvasta voidaan esittää karkea versio joka rakentuu 4x4 pikselin tasasävyisistä alueista. 15 1 6 4 6 2 6 4 6 7 7 7 7 7 7 7 7 5 6 5 6 5 6 5 6 7 7 7 7 7 7 7 7 3 6 4 6 3 6 4 6 7 7 7 7 7 7 7 7 5 6 5 6 5 6 5 6 7 7 7 7 7 7 7 7 Kuva 3.5. Adam7-menetelmän lomitustasojako. Lomitettujen kuvien haittapuolena PNG:ssä on se, että kutakin lomitustasoa erikseen pakkaussuotimilla käsiteltäessä pikseliarvojen välinen spatiaalinen korrelaatio on huomattavasti tavallista tilannetta heikompi johtuen siitä, että arvot ovat kauempana

toisistaan alkuperäisessä kuvassa. Tästä luonnollisesti seuraa se, että lopullisen pakatun tiedoston koko kasvaa. Suurissa kuvatiedostoissa, esimerkiksi valokuvissa, 8x8 pikselin ikkunan sisäiset arvot muistuttavat paljon toisiaan eikä pakkaustehokkuus siten kärsi yhtä paljon kuin hyvin pienissä kuvatiedostoissa, kuten internet-sivustoilla käytetyissä nappuloissa, joissa lomituksen käyttäminen saattaa sotkea pikseliarvojen järjestyksen erittäin epäsoveliaaksi pakkaamisen näkökulmasta [9]. Kun lisäksi pienet kuvatiedostot latautuvat huomattavasti isoja nopeammin, niin voidaan todeta ettei näissä kannata käyttää lomitusta. On huomion arvoista mainita, että lomituksesta saatava hyöty internet-sivustojen latautuessa ja kuvia massamuistista selattaessa on vuosien myötä vähentynyt internetyhteyksien nopeuduttua ja massamuistien lukunopeuksien parannuttua. 3.2.3.Gamma- ja värikorjaus Gamma- (engl. gamma correction) ja värikorjauksen (engl. chromaticity correction) tavoitteena on saada kuvat näyttämään valoisuudeltaan ja väreiltään samanlaisilta kuvien katselemiseen ja luomiseen käytettävästä laitteistosta riippumatta. Ilman gammakorjausta esimerkiksi PC-järjestelmällä luodut kuvat näyttävät Macintoshjärjestelmällä tarkasteltuina liian vaaleasävyisiltä johtuen järjestelmien eriävistä tavoista ohjelmistotasolla tehdä korjauksia näytölle vietävän kuvasignaalin kirkkauteen ennen sen siirtymistä laitteistotasolla esitettäväksi [9]. Näiden korjauksien taustalla on se, että näyttölaite aiheuttaa kuvasignaalin kirkkauteen epälineaarisia vääristymiä, joiden vaikutus pyritään kumoamaan. Tällaisia vääristymiä voidaan approksimoida varsin hyvin yksinkertaisella siirtofunktiolla (2), 16 ulostulo = sisäänmeno^eksponentti (2) jossa eksponentti kuvaa näyttölaitteen signaaliin aiheuttamaa vääristymää, joka on laitevalmistajien ansiosta vakio ja harmaasävy- tai RGB-väriarvoja kuvaavat ulostulo ja sisäänmeno on skaalattu välille 0..1. Tällä samalla siirtofunktiolla mallinnetaan myös edellä mainittuja järjestelmien ohjelmistotason korjauksia, joiden erojen vaikutuksen kumotakseen joudutaan PNGtiedostoihin lisäämään erillinen gamma-arvo (γ), joka lasketaan kaavalla (3) ja joka riippuu järjestelmästä, jolla kuvatiedosto on luotu. γ = 1.0 / (järjestelmän eksponentti * näytön eksponentti) (3) Kun kuvatiedosto taas luetaan toisella järjestelmällä niin gamma-arvon avulla voidaan säätää tehtävää korjausta, jotta järjestelmien kokonaissiirtofunktio olisi identtinen. [6] Värikorjauksen taustalla on samankaltainen periaate. PNG-tiedostoon liitetään tieto kuvatiedoston luomiseen käytetyn järjestelmän näyttölaitteen värintoistoominaisuuksista ja luettaessa tiedostoa toisella järjestelmällä lasketaan ja toteutetaan

näiden ja uuden järjestelmän värintoisto-ominaisuuksien erotuksen pohjalta korjaukset, jotta myös väritoisto vastaisi mahdollisimman hyvin alkuperäistä. [9] 3.3.Kehitysmahdollisuudet 17 PNG:n pakkausnopeuden on usein kritisoitu olevan huono muihin häviöttömän pakkauksen kuvaformaatteihin verrattuna [2;10] ja myös tämän työn luvun 4.4 pakkausnopeusvertailussa päädytään samaan tulokseen. Pakkaussuotimien määritelmästä havaitaan, että pakkaussuotimille on mahdollista kirjoittaa rinnakkaista laskentaa hyödyntävä toteutus, jossa olisi mahdollista jakaa kuvadatan rivien suodatus useammalle säikeelle näiden laskennan ollessa riippumattomia toisistaan. Ääritapauksessa laskenta olisi mahdollista jakaa niin, että jokaista kuvariviä kohti olisi neljä säiettä, joista jokainen laskee yhdelle suotimelle (poislukien None-suodin) estimaatin suotimen valintaa varten. Käänteissuodatuksessa kuvan purkamisen yhteydessä ei ole mahdollista hyödyntää rinnakkaisuutta yhtä laajalti, sillä osa suotimista vaatii, että käsiteltävän rivin yläpuolisen rivin tulee jo olla purettu alkuperäiseen muotoonsa. Purkunopeuden osalta PNG tosin pärjää jo ilman parannuksiakin hyvin kilpaileviin kuvaformaatteihin verrattuna, kuten luvun 4.5 purkunopeusvertailussa selviää. DEFLATE:a käyttävästä gzip:stä on vuodesta 2007 ollut olemassa pakkausvaiheessa rinnakkaisuutta hyödyntävä toteutus, Pigz [11], joka jakaa LZ77:lla pakattavan datan osittain lomittain oleviin osiin, joista jokainen on mahdollista pakata omalla säikeellään. Vastaavanlainen parannus olisi mahdollista toteuttaa myös PNG:n DEFLATEalgoritmiin. PNG:n virallisen referenssikirjaston libpng:n [12] tämänhetkisen version 1.2.35 versiolokista eikä dokumentaatiosta löydy viitettä minkäänlaisten rinnakkaisuutta hyödyntävien ratkaisujen olemassaoloon pakkaussuotimia tai DEFLATE:a varten, joten edellä esitetyt kehitysehdotukset ovat hyvin varteenotettavia. Käytettävissä olevien suoritinytimien määrästä riippuen nämä toteuttamalla voitaisiin jopa moninkertaistaa PNG:n pakkausnopeus ja hieman parantaa purkunopeutta. Moniytimiset suorittimet ovat tämän hetken uusissa tietokoneissa jo yleisempiä kuin yksiytimiset, joten toteutukselle olisi jo olemassa laaja laitteistotuki. Pakkaustehokkuutta ei ole pakkaus- ja purkunopeuden kaltaisesti mahdollista juurikaan parantaa nykyisen PNG:n standardin rajoissa. Vain pieniä hyötyjä voidaan saavuttaa optimoimalla pakkaussuotimien valitsemisesta ja LZ77:n liikkuvaa ikkunaa kasvattamalla. Sen sijaan PNG:n standardi varaa oikeuden uusien pakkausmenetelmien lisäämiseksi vanhojen rinnalle mahdollisissa tulevaisuuden versioissa. Tämä koskee sekä pakkaussuotimia että DEFLATE-algoritmia. [6]

18 4.KUVAFORMAATTIEN VERTAILU Tässä luvussa esitellään aluksi lyhyesti yleisimmät PNG:n kanssa kilpailevat kuvaformaatit ja näiden ominaisuudet, jonka jälkeen esitellään testikuvamateriaali ja lopuksi tarkastellaan formaattien välillä suoritettujen pakkaustehokkuus-, pakkausnopeus- ja purkunopeusvertailujen tuloksia. Nämä vertailut valittiin työhön, jotta saataisiin kattava kuva vertailtavien kuvaformaattien soveltuvuudesta eri tarkoituksiin. Pakkaustehokkuus on tärkeintä kuvia varastoitaessa tai internet-käytössä, pakkausnopeus korostuu kuvankäsittelyssä, jossa käsiteltävä kuva tallennetaan usein ja purkunopeus on merkityksekäs, kun halutaan selata suurikokoisia kuvia. 4.1.Vertailtavat kuvaformaatit 4.1.1.GIF GIF (Graphic Interchange Format) on häviötön kuvaformaatti, joka sai nykyisen muotonsa jo vuonna 1989. GIF:n kenties suurin rajoite on sen täysin puuttuva tuki RGB-kuvatyypille. Lisäksi GIF tukee enintään 8:n bitin harmaasävy- ja väripalettikuvia, ja siten rajoittaa käytettävän sävymäärän 256:een, mikä tekee siitä epäsoveliaan formaatin esimerkiksi valokuvien tallentamiseen. Web-grafiikan esittämiseen tämä värimäärä riittää tavallisesti hyvin ja GIF onkin ollut internetin alkuajoista asti hyvin suosittu ja yleisesti ohjelmistojen tukema kuvaformaatti tähän tarkoitukseen. [13] GIF mahdollistaa vain yhden täydellisen läpinäkyvyystason, joka toteutetaan varaamalla yksi värisävyistä läpinäkyvyyden esittämistä varten. GIF:n tarjoama lomitusominaisuus on havaittu toiminnaltaan heikommaksi kuin PNG:n vastaava, eikä GIF myöskään sisällä mahdollisuutta gamma- tai värikorjaukseen. PNG:stä puuttuvana ominaisuutena GIF tarjoaa mahdollisuuden animaatioon, joka toteutetaan tallentamalla useampi kuva yhteen GIF-tiedostoon, jolloin tiedosto esitetään luettaessa toistuvasti kuvia peräkkäin näyttäen. [13] Pakkausmenetelmänään GIF käyttää häviötöntä LZW-algoritmia, joka on LZ77:n johdannainen. Pakkausvaiheessa LZ77:sta poiketen LZW puskuroi tulevaa dataa jo pakatun datan sijasta ja vertailee tätä erilliseen merkkijonotaulukkoon, jota tarvittaessa täydennetään ja johon tallennetaan osoittimia datan pakkaamiseksi [14]. LZW-algoritmi on yhden säikeen toteutukseltaan erittäin nopea LZ77:n verrattuna ja myös sitä on mahdollista edelleen nopeuttaa useamman säikeen toteutuksella [15].

4.1.2.TIFF 19 Ensimmäinen versio TIFF-kuvaformaatin (Tagged Image File Format) määritelmästä valmistui jo vuonna 1986 sillä tarkoituksella, että siitä muodostuisi yleisesti tuettu ja yhteensopivuusongelmia vähentävä formaatti toimistolaitteita kuten fakseja, skannereita ja tulostimia varten. TIFF tukeekin käytännössä kaikkia värisävyjä ja -paletteja ja mahdollistaa sisältämänsä kuvadatan tallentamisen joko häviöttömässä tai häviöllisessä muodossa. Häviöttöminä pakkausmenetelminä TIFF tarjoaa joko RLE-, LZW tai DEFLATE-algoritmin sekä lisäksi useamman muun vaihtoehdon yhden bitin värisyvyyden kuville. [13] PNG:n tapaan TIFF sisältää gamma- ja värikorjauksen ja mahdollistaa useita läpinäkyvyystasoja kuviin, mutta tarjoaa lomitusmahdollisuuden vain häviöllisessä JPEG-pakkausvaihtoehdossa. Kenties merkittävin etu TIFF:ssä PNG:hen nähden on sen tuki kuvakerroksille (engl. layer). Kuvakerrokset ovat hyvin käytännöllisiä kuvankäsittelyssä esimerkiksi haluttaessa toteuttaa jokin muokkausoperaatio vain tietylle alueelle kuvassa. [16] 4.1.3.Häviötön JPEG Häviötön JPEG eli L-JPEG (Lossless JPEG) on häviötön pakkausmenetelmä, joka lisättiin jälkikäteen siihen asti vain häviöllistä pakkausta tukeneeseen JPEGkuvaformaattiin vuonna 1993. L-JPEG käyttää häviöllisestä JPEG:stä täysin erillistä kaksiosaista pakkausmenetelmää, jossa koko kuvadata suodatetaan ensin yhdellä seitsemästä, PNG:n vastaavia muistuttavista pakkaussuotimista ja tämän jälkeen pakataan Huffman-koodauksella. [17] L-JPEG ei JPEG:hen kuuluvana tue läpinäkyvyyttä, mutta sisältää gamma- ja värikorjauksen. Lomitusmahdollisuus tarjotaan vain häviöllisesti pakatuille JPEGkuville. [18] Myös JPEG 2000 -kuvaformaatissa on häviötön tallennusmenetelmä, mutta sitä ei käsitellä tässä työssä. Voidaan kuitenkin mainita, että se on havaittu pakkaustehokkuudeltaan valokuvissa suunnilleen yhtä hyväksi ja tietokonegrafiikkakuvissa huonommaksi kuin PNG [17]. 4.1.4.JPEG-LS JPEG-LS on alunperin vuonna 1999 esitelty häviöttömän ja lähes häviöttömän pakkauksen kuvaformaatti ja on täysin erillään JPEG- ja JPEG 2000 -kuvaformaateista. JPEG-LS käyttää sekä häviöttömän että lähes häviöttömän pakkaamisen toteuttamiseksi Hewlett-Packardin patentoimaa LOCO-I algoritmia, josta on luvattu olla perimättä lisenssimaksuja. JPEG-LS tukee kaikkia kuvatyyppejä, mutta ei sisällä mahdollisuutta läpinäkyvyyteen eikä lomitukseen. [19; 20] LOCO-I algoritmin toiminta koostuu yksinkertaistettuna kolmesta vaiheesta: ennustuksen laskennasta, kontekstimallin muodostamisesta ja ennustevirheiden

koodauksesta. Ensimmäisessä vaiheessa data suodatetaan suotimella, joka pyrkii ennustamaan käsiteltävän pikselin arvon naapuripikseleiden arvoja hyödyntäen. Toisen vaiheen ideana on hyödyntää käsiteltävän pikselin lähipikseleissä esiintyviä muotoja tai kuvioita, jotta ennustusvirheille voitaisiin luoda malli. Kolmannessa vaiheessa aiempien vaiheiden muotoilema data pakataan Golomb-Rice-koodauksella. [21] JPEG-LS:n ohjelmistotuki on tällä hetkellä niin huono, että käytännössä mikään kuvankäsittelyohjelmisto ei tue sitä, vaan sen käyttämiseksi on saatavilla vain joitain yksittäisiä pienohjelmia, joilla on mahdollista muuntaa kuvia JPEG-LS-formaattiin. 4.2.Testikuvamateriaali Kuvaformaattien vertailua varten luotiin testikuvamateriaali, joka koostuu kuudesta valokuvasta ja viidestä tietokonegrafiikkaa edustavasta kuvasta. Materiaali pyrittiin luomaan siten, että se edustaisi mahdollisimman hyvin tyypillisiä tilanteita, joissa käytetään häviötöntä pakkausta. Materiaalin valokuvat, poislukien v_plejadit, on otettu Canon 350D -järjestelmäkameralla ja pienimmällä kennon herkkyydellä (ISO 100) kohinan minimoimiseksi. Valokuvat pyrkivät vastaamaan ammattilaisvalokuvaajien kuvaamaa materiaalia, joka tavallisesti halutaan tallentaa häviöttömästi. Myös tietokonegrafiikkakuvat pyrittiin luomaan siten, että ne vastaavat useita eri tilanteita, joissa kuvatiedostot tavallisesti pakataan häviöttömästi. Testikuvamateriaalin tarkempi kuvaus ja itse kuvat pienennetyssä koossa löytyvät liitteestä 1. Työn kirjoittajalla on tekijänoikeudet kaikkiin testikuvamateriaalin kuviin. 20 4.3.Pakkaustehokkuusvertailu Pakkaustehokkuusvertailu toteutettiin kaikkien muiden kuvaformaattien paitsi JPEG- LS:n osalta Matlab(R2008b)-ohjelmiston [22] imwrite-funktiolla oletusasetuksia käyttäen. Oletusasetusten mukaisesti TIFF käytti pakkausmenetelmänään PackBits:iä, joka perustuu RLE:hen. JPEG-LS:ää varten käytettiin Hewlett-Packardin toteuttamaa pluginia [20] Photoshop-ohjelmistolle [23]. Myös JPEG-LS-formaattiin kuvia pakattaessa käytettiin oletusasetuksia. Pakattujen kuvien tiedostokokoja verrattiin täysin pakkaamattoman kuvadatan tiedostokokoihin ja vertailun tulokset koottiin taulukkoon 4.1. Vertailun tuloksista havaitaan, että JPEG-LS suoriutui testikuvamateriaalin pakkaamisessa keskimääräisesti parhaiten ollen myös PNG:n ohella ainoa kuvaformaatti, joka suoriutui sekä valokuvien että tietokonegrafiikan pakkaamisessa tasaisen hyvin. On huomion arvoista, että suurelta osin JPEG-LS:n keskiarvotuloksen suurta eroa PNG:hen selittää PNG:n huono suoriutuminen v_plejadit-kuvassa, joka on 16 bitin värisyvyyden harmaasävykuva. Huonoa suoriutumista selittänee osaltaan pakkaussuotimien heikentynyt toiminta, sillä ne operoivat tavutasolla, ja toisaalta se, että LZ77-algoritmin ikkuna ulottui pikselitasolla vain puoleen siitä etäisyydestä, mihin se ulottuu 8:n bitin värisyvyyden kuvissa.

Kaikkien kuvaformaattien huonohko pakkaussuhde w_painike-kuvalle selittyy kuvan hyvin pienellä koolla (31x31 pikseliä). Tämän seurauksena kuvaformaattien kehyksen, eli kaiken muun kuin pakatun kuvadatan, osuus tiedostokoosta on hyvin suuri verrattuna isompikokoisiin kuviin. TIFF oli vertailussa vaikeuksissa valokuvien kanssa, sillä RLE hyödyntää peräkkäisiä identtisiä arvoja ja tällaiset tilanteet ovat luonnollisissa kuvissa harvinaisia. L-JPEG:n huonoa menestystä tietokonegrafiikkakuvissa taas selittää juuri se, että sen pakkausmenetelmästä puuttuu mahdollisuus peräkkäisten identtisten arvojen tai toistuvien sekvenssien hyödyntämiseen. PNG:n paremmuus GIF:n verrattuna johtuu PNG:n pakkaussuodatuksesta ja LZ77:n jälkeisestä Huffman-koodauksesta. GIF:n käyttämä LZW ja PNG:n LZ77 ovat itsessään pakkaustehokkuudeltaan hyvin samantasoisia, mutta LZW on huomattavasti nopeampi, kuten seuraavassa luvussa havaitaan. Taulukko 4.1. tiedostokokoon. Testikuvien pakatun tiedostokokoon suhde pakkaamattomaan PNG GIF TIFF L-JPEG JPEG-LS v_kasvi 0,36-1,01 0,42 0,25 v_kirjahylly 0,42-1,01 0,53 0,30 v_maisema 0,34-1,01 0,39 0,23 v_muotokuva 0,37-1,01 0,43 0,26 v_plejadit 0,89-1,01 - - v_pylvas 0,66 1,04 1,00 0,76 0,61 w_liekki 0,22 0,40 0,48 0,65 0,17 w_logo 0,20 0,24 0,36 0,69 0,21 w_noppa 0,05 0,05 0,08 0,45 0,04 w_otsake 0,10 0,11 0,20 0,86 0,08 w_painike 1,06 1,03 1,96 1,26 0,78 keskiarvo 0,42 0,48 0,83 0,64 0,29 21 4.4.Pakkausnopeusvertailu Myös pakkausnopeusvertailun toteuttamiseen käytettiin Matlab-ohjelmistoa ja imwritefunktiota oletusasetuksia käyttäen, mutta tällä kertaa jokainen pakkaaminen toteutettiin kymmenen kertaa silmukan avulla ja samalla laskettiin yhteen pakkaamiseen kulunut keskimääräinen aika. Edellä esitetyllä tavalla saadut tulokset koostettiin taulukkoon 4.2. JPEG-LS jätettiin pakkausnopeusvertailun ulkopuolelle, sillä pakkaamiseen kulunutta aikaa ei onnistuttu mittaamaan Photoshop-ohjelmiston avulla. Pakkausnopeusvertailun tuloksista havaitaan, että PNG-kuvaformaatti on kilpaileviin kuvaformaatteihin verrattuna huomattavan hidas kuvien pakkaamisessa. Tätä havaintoa selittää LZ77-algoritmin laskennallinen raskaus identtisiä tavusekvenssejä etsittäessä. Vertailun tuloksista nähdään myös, että L-JPEG:n

pakkausnopeus on yllättävän huono tietokonegrafiikkakuvissa. Tämän vertailun ulkopuolelle jääneen JPEG-LS:n pakkausnopeuden on muissa tutkimuksissa havaittu olevan sekä L-JPEG:tä, että PNG:tä parempi [10]. TIFF-kuvaformaatin hyvä pakkausnopeus selittänee osittain sen suosiota ammattimaisen kuvankäsittelyn kuvaformaattina. 22 Taulukko 4.2. Testikuvien pakkaamiseen kulunut aika suhteessa PNG:llä kuluneeseen aikaan ja yhteen PNG-pakkaamiseen kulunut absoluuttinen aika sekunteina. PNG GIF TIFF L-JPEG PNG (abs) v_kasvi 1,00-0,09 0,19 2,149s v_kirjahylly 1,00-0,09 0,22 1,971s v_maisema 1,00-0,24 0,26 1,907s v_muotokuva 1,00-0,22 0,25 2,073s v_plejadit 1,00-0,17-0,035s v_pylvas 1,00 0,26 0,15 0,40 0,410s w_liekki 1,00 0,50 0,41 4,37 0,023s w_logo 1,00 0,56 0,49 4,00 0,013s w_noppa 1,00 0,80 0,71 7,82 0,010s w_otsake 1,00 0,78 0,76 4,76 0,006s w_painike 1,00 0,70 0,92 1,09 0,004s keskiarvo 1,00 0,60 0,39 2,34-4.5.Purkunopeusvertailu Purkunopeusvertailussa käytettiin Matlab-ohjelmiston imread-funktiota, jonka avulla eri kuvaformaatteihin pakattu testikuvamateriaali luettiin kymmenen kertaa silmukan avulla ja jokaiselle kuvalle laskettiin keskimäärin yhteen lukemiseen kulunut aika. JPEG-LS jäi myös tämän vertailun ulkopuolelle, mutta sen purkunopeuden on tavallisesti havaittu olevan keskimäärin hieman PNG:tä parempi [17]. Purkunopeusvertailun tulokset koostettiin taulukkoon 4.3. Taulukkoon 4.3. koostetuista tuloksista havaitaan, että PNG-kuvaformaatti pärjää purkunopeudessa muihin formaatteihin verrattuna huomattavasti paremmin kuin pakkausnopeutta vertailtaessa. L-JPEG on tässäkin vertailussa vaikeuksissa tietokonegrafiikkakuvien kanssa, mutta ei aivan yhtä pahasti kuin GIF. TIFF on jälleen joukon nopein yksinkertaisen RLE-algoritmin ansiosta. Yleisesti voidaan todeta, että pieni- ja keskikokoisilla kuvilla hitaimmillakin kuvaformaateilla purkuajat jäävät huomaamattoman pieniksi, mutta esimerkiksi suuria valokuvia nopeasti selattaessa purkuaika on hidastavana tekijänä vielä tämänkin hetken keskitehokkaalla kotitietokoneella.

Taulukko 4.3. Testikuvien purkamiseen kulunut aika suhteessa PNG:llä kuluneeseen aikaan ja yhteen PNG-purkamiseen kulunut absoluuttinen aika sekunteina. 23 PNG GIF TIFF L-JPEG PNG (abs) v_kasvi 1,00-0,32 0,95 0,2481s v_kirjahylly 1,00-0,28 0,95 0,2532s v_maisema 1,00-0,86 1,68 0,2418s v_muotokuva 1,00-0,87 1,71 0,2396s v_plejadit 1,00-0,75-0,0059s v_pylvas 1,00 3,95 0,34 1,57 0,0508s w_liekki 1,00 5,63 0,98 4,99 0,0039s w_logo 1,00 3,68 0,72 3,39 0,0031s w_noppa 1,00 4,41 0,67 4,76 0,0035s w_otsake 1,00 3,22 0,82 3,22 0,0019s w_painike 1,00 1,91 1,04 1,00 0,0011s keskiarvo 1,00 3,80 0,70 2,42 -

24 5.JOHTOPÄÄTÖKSET PNG havaittiin ominaisuuksiltaan monipuoliseksi ja suorituskyvyltään sekä pakkaustehokkuuden, että purkunopeuden osalta tasaisen hyvin menestyväksi kuvaformaatiksi. PNG:n heikkous muihin kuvaformaatteihin verrattuna oli sen hidas pakkausnopeus, jonka seurauksena esimerkiksi kymmenen megapikselin valokuvan tallentamisessa PNG-kuvaformaattiin kestää keskitehokkaalla kotitietokoneella lähestulkoon kymmenen sekuntia. Työssä esiteltiin PNG-kuvaformaatin tämänhetkisen standardin kanssa yhteensopivia kehitysehdotuksia pakkausnopeuden parantamiseksi rinnakkaista laskentaa hyödyntämällä. Ehdotukset toteuttamalla pakkausnopeus olisi mahdollista jopa moninkertaistaa, mikäli käytettävissä on useita suorittimia. Tämänhetkisen hitaan pakkausnopeuden seurauksena PNG ei sovellu nopeutta eniten arvostavan ammattimaisen kuvankäsittelyn kuvaformaatiksi yhtä hyvin kuin useamman eri pakkausmenetelmän tarjoava TIFF. Suosituin käyttökohde PNG-kuvaformaatilla on aina ollut internet-sivustoilla esiintyvien pienten ja keskisuurten kuvien tallennusmuotona, mikä olikin tarkoituksena kun se alunperin kehitettiin GIF:in syrjäyttäjäksi. PNG:n etuna vieläkin internetkäytössä suosittuun GIF:iin nähden on sen tuki usealle läpinäkyvyysasteelle, mikä mahdollistaa saman kuvatiedoston tyylikkään hyödyntämisen minkä tahansa taustan päällä. GIF:n etuna taas on PNG:stä puuttuva mahdollisuus animaation toteuttamiseen, jonka hyödyllisyyttä toisaalta nykyään on vähentänyt interaktiivisuuden mahdollistavien flash-animaatioiden käytön yleistyminen internet-sivustoilla. Sekä GIF:n että PNG:n vahvimpana etuna internet-käytössä kaikkiin tulevaisuudessa niitä haastaviin kuvaformaatteihin verrattuna on niiden ajan mittaan kasvattama, äärimmäisen laajamittainen ohjelmistotuki. Kaupallisille internet-sivustoille pienempien kuvatiedostojen ansiosta säästettyä levytilaa ja saavutettuja tiedonsiirtokustannuksien säästöjäkin tärkeämpää on se, että vanhojenkin internetselainten käyttäjät saavat sivuston näkyviin ilman virheitä. Pakkaustehokkuuden kannalta tässä työssä tehtyjen vertailujen pohjalta parhaimmaksi kuvaformaatiksi havaittiin JPEG-LS. Edellä esitettyjen näkökulmien pohjalta ja ottaen huomioon sen, että JPEG-LS:n käyttämän algoritmi on patentoitu, on syytä epäillä onko JPEG-LS:stä kuitenkaan suosittujen kuvaformaattien haastajaksi. Ottaen huomioon, että JPEG-LS esiteltiin jo vuonna 1999 ja sen suosio on pysynyt tähänkin asti hyvin vaisuna niin voidaan todeta, että se tuskin tulee pystymään tähän.

LÄHTEET 25 [1] J. Scharcanski, Lossless and Near-Lossless Compression for Mammographic Digital Images, Proc. IEEE International Conference on Image Processing, s. 2253 2256, 08 11 lokakuuta 2006. [2] D. Acevedo and A. Ruedin, Reduction of Interband Correlation for Landsat Image Compression, Proc. XVIII Brazilian Symposium on Computer Graphics and Image Processing (SIBGRAPI 05), s. 390 396, 09 12 lokakuuta 2005. [3] C.E. Shannon, A Mathematical Theory of Communication, Bell System Technical Journal, vol. 27, s. 379 423 heinäkuu, s. 623 656 lokakuu 1948. [4] F. Tupin, M. Sigelle and H. Maître, Definition of a spatial entropy and its use for texture discrimination, Proc. 2000 International Conference on Image Processing, vol. 1, s. 725 728, 2000. [5] K. Sayood, Lossless compression handbook, Illustrated edition, 455 s. Academic Press, 2003. [6] ISO/IEC 15948:2003. Portable Network Graphics (PNG): Functional specification [WWW]. [Viitattu 5.3.2009]. Saatavissa: http://www.libpng. org/pub/png/spec/iso/index-noobject.html. [7] P. Deutsch, DEFLATE Compressed Data Format Specification version 1.3 [WWW]. [Viitattu 6.3.2009]. Saatavissa: http://www.gzip.org/zlib/rfcdeflate.html. [8] J. Ziv and A. Lempel, A Universal Algorithm for Sequential Data Compression, IEEE Transactions on Information Theory, vol. 23, no. 3, s. 337 343, 1977. [9] G. Roelofs, PNG: The Definitive Guide, Second Edition, 344 s. Greg Roelofs, internetjulkaisu 2003 [WWW]. [Viitattu 21.03.2009]. Saatavissa: http://www.libpng.org/pub/png/book/. [10] G. Schaefer, R. Starosolski and S. Zhu, An evaluation of lossless compression algorithms for medical infrared images, Proc. 2005 IEEE Engineering in Medicine and Biology 27th Annual Conference, s. 1673 1676, Kiina, 01 04 syyskuuta 2005.

[11] M. Adler, Pigz homepage [WWW]. [Viitattu 10.3.2009]. Saatavissa: http://zlib. net/pigz/ [12] G. Roelofs, LibPNG homepage [WWW]. [Viitattu 10.3.2009]. Saatavissa: http://www.libpng.org/pub/png/libpng.html. 26 [13] R.H.3rd Wiggins, H.C. Davidson, H.R. Harnsberger, J.R. Lauman and P.A. Goede, Image File Formats: Past, Present, and Future, RadioGraphics, vol. 21, no. 3, s. 789 798, 2001. [14] T.A. Welch, A Technique for High-Performance Data Compression, Computer, vol. 17, no. 6, s. 8 19, 1984. [15] S.T. Klein and Y. Wiseman, Parallel Lempel Ziv Coding, Discrete Applied Mathematics, vol. 146, no. 2, s. 180 191, 2005. [16] Adobe. Tagged Image File Format Developer Resources [WWW]. [Viitattu 01.04.2009]. Saatavissa: http://partners.adobe.com/public/developer/tiff/index. html. [17] D. Santa-Cruz, T. Ebrahimi, J. Askelöf, M. Larsson and C.A. Christopoulos, JPEG 2000 still image coding versus other standards, Proc. SPIE's 45th annual meeting, Applications of Digital Image Processing XXIII, vol. 4115, s. 446 454, 30. heinäkuuta 4. elokuuta 2000. [18] Wikipedia. Comparison of graphics file formats [WWW]. [Viitattu 1.4.2009]. Saatavissa: http://en.wikipedia.org/wiki/comparison_of_graphics_file_formats. [19] Joint Photographic Experts Group. JPEG-LS [WWW]. [Viitattu 13.4.2009]. Saatavissa: http://www.jpeg.org/jpeg/jpegls.html. [20] Hewlett-Packard. HP Labs LOCO-I/JPEG-LS Home Page [WWW]. [Viitattu 20.4.2009]. Saatavissa: http://www.hpl.hp.com/loco/. [21] M. Weinberger, G. Seroussi and G. Sapiro, The LOCO-I Lossless Image Compression Algorithm: Principles and Standardization into JPEG-LS, IEEE Transactions on Image Processing, vol. 9, no. 8, s. 1309 1324, 2000. [22] The MathWorks. Matlab homepage [WWW]. [Viitattu 20.4.2009]. Saatavissa: http://www.mathworks.com/products/matlab/.

[23] Adobe. Adobe Photoshop family [WWW]. [Viitattu 20.4.2009]. Saatavissa: http://www.adobe.com/products/photoshop/family/. 27

LIITE 1: TESTIKUVAMATERIAALI 28 Kuvan nimi v_kasvi Kuvan nimi v_kirjahylly Tyyppi valokuva Tyyppi valokuva Koko 1152 x 1728 Koko 1152 x 1728 Kuvatyyppi RGB Kuvatyyppi RGB Värisyvyys 3 x 8 bittiä Värisyvyys 3 x 8 bittiä Kuvaus: Tyypillinen lähikuva järjestelmäkameralla. Kuvaus: Tyypillinen sisäkuva salamavalon kanssa. Kuvan nimi v_maisema Kuvan nimi v_muotokuva Tyyppi valokuva Tyyppi valokuva Koko 1728 x 1152 Koko 1728 x 1152 Kuvatyyppi RGB Kuvatyyppi RGB Värisyvyys 3 x 8 bittiä Värisyvyys 3 x 8 bittiä Kuvaus: Tyypillinen maisemakuva. Kuvaus: Tyypillinen henkilökuva salamavalon kanssa Kuva L1. Testikuvamateriaalin ensimmäiset neljä kuvaa.

29 Kuvan nimi v_plejadit Kuvan nimi v_pylvas Tyyppi valokuva Tyyppi valokuva Koko 320 x 240 Koko 1152 x 1728 Kuvatyyppi harmaasävy Kuvatyyppi harmaasävy Värisyvyys 16 bittiä Värisyvyys 8 bittiä Kuvaus: Osa Plejadeista. Kuvattu kaukoputkeen liitetyllä CCD-kameralla. Tyypillinen tähtitieteellinen kuva. Kuvaus: Lähikuva pylväästä. Simuloi tyypillistä mikroskooppikuvaa tai kuvaa planeetan pinnasta. Kuvan nimi w_liekki Kuvan nimi w_logo Tyyppi tietokonegrafiikka Tyyppi tietokonegrafiikka Koko 994 x 226 Koko 384 x 307 Kuvatyyppi väripaletti Kuvatyyppi väripaletti Värimäärä 256 Värimäärä 256 Kuvaus: Tyypillinen internet-sivuston nk. banneri. Kuvaus: Tyypillinen internet-sivuston logo. Kuva L2. Testikuvamateriaalin seuraavat neljä kuvaa.

30 Kuvan nimi w_noppa Kuvan nimi w_otsake Tyyppi tietokonegrafiikka Tyyppi tietokonegrafiikka Koko 439 x 467 Koko 384 x 179 Kuvatyyppi väripaletti Kuvatyyppi väripaletti Värimäärä 256 Värimäärä 22 Kuvaus: Tyypillinen tietokonegrafiikkakuvio. Kuvaus: Tyypillinen tyylitelty otsake web-sivustolla. Kuvan nimi w_painike Tyyppi tietokonegrafiikka Koko 31 x 31 Kuvatyyppi Väripaletti Värimäärä 105 Kuvaus: Tyypillinen internet-sivuston painike. Kuva L3. Testikuvamateriaalin viimeiset kolme kuvaa.