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

Samankaltaiset tiedostot
Luku 8. Aluekyselyt. 8.1 Summataulukko

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

Haviollisten kuvanpakkausmenetelmien vertailu

S Laskennallinen Neurotiede

Laskuharjoitus 9, tehtävä 6

Määrittelydokumentti

DC-moottorin pyörimisnopeuden mittaaminen back-emf-menetelmällä

Gimp JA MUUT KUVANKÄSITTELYOHJELMAT

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

KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA

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

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

VÄRISPEKTRIKUVIEN TEHOKAS SIIRTO TIETOVERKOISSA

LAS-TIEDOSTON SISÄLTÖ LIITE 2/1

Datatähti 2019 alku. task type time limit memory limit. A Kolikot standard 1.00 s 512 MB. B Leimasin standard 1.00 s 512 MB

Datatähti 2019 loppu

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

Videon tallentaminen Virtual Mapista

Kuvan pakkaus JPEG (Joint Photographic Experts Group)

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

ALVin käyttöohjeet. Kuvaus, rajaus ja tallennus puhelimella ALVin -mobiilisovelluksen avulla dokumentit kuvataan, rajataan ja tallennetaan palveluun.

Kuvan pienentäminen Paint.NET-kuvankäsittelyohjelmalla

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

Algoritmit 2. Luento 6 To Timo Männikkö

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

DumpDbox-ohjelmiston asennus- ja käyttöohjeet Sisällys

Luku 7 Uusien Mallien Tiedostot

811120P Diskreetit rakenteet

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

Tarina-tehtävän ratkaisu

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

Asiointipalvelun ohje

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

Algoritmit 2. Luento 9 Ti Timo Männikkö

ELOKUVATYÖKALUN KÄYTTÖ ANIMAATION LEIKKAAMISESSA. Kun aloitetaan uusi projekti, on se ensimmäisenä syytä tallentaa.

S Havaitseminen ja toiminta

KVPS Tukena Oy Graafinen ohjeisto 04/2018


Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Kenguru 2019 Benjamin 6. ja 7. luokka

Valokuvien matematiikkaa

Basic Raster Styling and Analysis

Tekstieditorin käyttö ja kuvien käsittely

KUVAN TUOMINEN, MUOKKAAMINEN, KOON MUUTTAMINEN JA TALLENTAMINEN PAINTISSA

Algoritmit 2. Luento 13 Ti Timo Männikkö

Pikaopas KUBO CODING+

Operatiiviset päivät Ohjeita luennoitsijoille AV-tekniikasta

Toinen harjoitustyö. ASCII-grafiikkaa

Evoluutiopuu. Aluksi. Avainsanat: biomatematiikka, päättely, kombinatoriikka, verkot. Luokkataso: luokka, lukio

Tilauspalveluun pääsee osoitteessa

Transkribuksen pikaopas

Ratamestarin analyysiä muutamista avainväleistä eri radoilta

Tekijä Pitkä Matematiikka 11 ratkaisut luku 2

3 Raja-arvo ja jatkuvuus

Käytin tehtävän tekemiseen Xubuntu käyttöjärjestelmää aikaisemmin tekemältäni LiveUSB-tikulta.

Syötteen ainoalla rivillä on yksi positiivinen kokonaisluku, joka on alle = Luvussa ei esiinny missään kohtaa numeroa 0.

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

Algoritmit 1. Luento 10 Ke Timo Männikkö

kertaa samat järjestykseen lukkarissa.

FOTONETTI BOOK CREATOR

Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana

Entiteetit erotetaan muusta tekstistä & ja puolipiste. esim. copyright-merkki näkyy sivulla

REITTIANALYYSI MILA SPECIAL 1 SÖRNÄINEN, KATRI VALAN PUISTO

1 Määrittelyjä ja aputuloksia

Matematiikka ja teknologia, kevät 2011

INDUKTIIVISEN PÄÄTTELYN HARJOITUSPAKETTI ENSIMMÄISELLE LUOKALLE

VERKOSTO GRAAFINEN OHJE

v 8 v 9 v 5 C v 3 v 4

LUKUTEORIA johdantoa

Kenguru Student (lukion 2. ja 3. vuosi) sivu 1 / 6

8 Multimedian elementtejä: kuva

Text Mining. Käyttöopas

Task list Submit code Submissions Messages Scoreboard View queue Edit contest

Kirjan toteutus BoD easybook -taittotyökalun avulla

A* Reitinhaku Aloittelijoille

Päivitetty Text Mining -käyttöopas

JARKKO PEKKARINEN PNG-KUVAFORMAATTI JA SEN TULEVAISUUS

Kuvankäsittely. DigiReWork Annamari Mäenhovi Kati Nieminen

Ohjelmointi 1. Kumppanit

Algoritmit 2. Luento 3 Ti Timo Männikkö

RES - REAL ESTATE SYSTEM

1. Skannaus ja tekstintunnistus (OCR) verkkoskannerilta

Kiipulan ammattiopisto. Liiketalous ja tietojenkäsittely. Erja Saarinen

Algoritmit 2. Luento 3 Ti Timo Männikkö

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

Reittianalyysi Osakilpailu 8 Eurajoki, Kaharinmäki. RTM Riku Juhala ja Saku Asikainen

Kenguru 2012 Junior sivu 1 / 8 (lukion 1. vuosi)

Tiedostomuodon valitseminen kuville

2.3 Voiman jakaminen komponentteihin

1 Raja-arvo. 1.1 Raja-arvon määritelmä. Raja-arvo 1

Algoritmit 2. Luento 8 To Timo Männikkö

Ohjelmoinnin peruskurssi Y1

GDAL ja WFS: suora muunnos ogr2ogr-ohjelmalla

Sinulle on annettu bittijono, ja tehtäväsi on muuttaa jonoa niin, että jokainen bitti on 0.

Epooqin perusominaisuudet

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

Ohjelmoinnin perusteet Y Python

Transkriptio:

Häviötön kuvanpakkausalgoritmi lomituksella ja sen tehokkuuden vertailu PNG-formaattiin Tietojenkäsittelytiede Topi Talvitie Helsingin matematiikkalukio 19.11.2009

Tiivistelmä Nykyisin PNG on yleisimmin käytetty ja esimerkiksi www-selaimissa käytännössä ainoa tuettu ominaisuuksiltaan riittävä häviötön kuvanpakkausmenetelmä. Tutkimuksessa tutkitaan, onko PNG aina hyvä valinta häviöttömään kuvanpakkaukseen, vai voitaisiinko kuvat pakata yksinkertaisemmilla mutta tehokkaammilla menetelmillä. Tutkimuksessa esitellään häviötön rasterikuvanpakkausmenetelmä IIC, ja tutkitaan sen tehokkuutta PNG-kuvanpakkausmenetelmään verrattuna. Erityisesti keskitytään tilanteeseen, jossa halutaan tuki lomitukselle. Vertailu suoritetaan pakkaamalla internetistä haettuja kuvia eri menetelmillä. Kuvat jaotellaan eri kategorioihin. Pakkaussuhdetta ja -aikaa vertaamalla voidaan verrata algoritmien tehokkuutta. Käy ilmi, että IIC pärjää PNG:tä paremmin esimerkiksi valokuvissa ja vastaavissa kuvissa, joissa ei ole selkeitä alueita tai värinvaihdoksia, ja on oikeilla asetuksilla nopeampi. PNG:n tapauksessa lomitus heikentää pakkaussuhdetta, mutta aina lomitettu IIC pakkaa tietyt kuvat, esimerkiksi valokuvat keskimäärin paremmin kuin PNG, vaikka PNG:ssä olisikin lomitus pois käytöstä. PNG:n käyttöä ainoana webin standardityyppinä häviöttömille kuville kuuluisi siis kyseenalaistaa, ja myös IIC-tyyppisten menetelmien mahdollisuuksia tutkia syvemmin.

Sisällys 1 Johdanto 1 2 Teoriaa 1 2.1 Rasterikuvat......................................... 1 2.2 DEFLATE.......................................... 2 2.3 PNG.............................................. 2 3 Pakkausmenetelmä IIC 3 3.1 Pakkauksen suorittaminen.................................. 3 3.1.1 Virtojen muodostaminen............................... 3 3.1.2 Suodattaminen.................................... 5 3.1.3 Pakkaaminen ja tallentaminen............................ 5 3.2 Mihin pakkausteho perustuu................................. 6 4 Mittaukset 8 4.1 Käytetyt menetelmät..................................... 9 4.2 Käytetyt kategoriat...................................... 10 4.3 Mittaaminen......................................... 10 5 Tulokset 11 5.1 Kategoria 1: pienet www-sivujen kuvat........................... 11 5.2 Kategoria 2: suuremmat www-sivujen kuvat........................ 11 5.3 Kategoria 3: pienet valokuvat................................ 12 5.4 Kategoria 4: suuret valokuvat................................ 13 5.5 Kategoria 5: yksinkertaiset piirrokset............................ 15 5.6 Kategoria 6: epätasaiset piirrokset tai maalaukset..................... 15 5.7 Virhelähteet.......................................... 16 5.8 Johtopäätökset........................................ 17

1 JOHDANTO 1 1 Johdanto Kuvat ovat nykyisin keskeisessä asemassa viestinnässä. Etenkin www-sivuilla käytetään paljon kuvia. Vaikka verkkoyhteydet ovat huomattavasti nopeutuneet viime aikoina, on kuvien pakkaamiseen edelleen tarvetta, sillä esimerkiksi mobiiliyhteydet ovat hyvin hitaita. Nykyisiä paremmat pakkausmenetelmät mahdollistavat myös yhä suuriresoluutioisempien kuvien siirtämisen. WWW-selaimet tukevat kuvaformaateista yleensä vain PNG:tä, GIF:iä ja JPEG:iä [1]. Niistä JPEG on häviöllinen ja GIF tukee vain 256 väriä. Kuitenkin monesti halutaan siirtää kuvia, joissa on yli 256 väriä siten, että niihin ei tule ylimääräisiä häviöllisestä pakkauksesta johtuvia sotkuja esimerkiksi valokuvien häviöttömässä siirrossa. Tällaiseen käyttöön ainoaksi vaihtoehdoksi jää nykyselaimissa PNG. On kuitenkin mahdollista, että PNG ei ole tehokkuudeltaan riittävä. Jos voidaan osoittaa, että PNG:hen verrattuna kevyt ja yksinkertainen algoritmi on edes joissain tapauksissa tehokkaampi, on syytä kyseenalaistaa selaimien rajoitetun häviöttömien formaattien tuen riittävyys. Siksi tässä esitellään erittäin yksinkertaiseksi ja helposti toteutettavaksi tarkoitettu menetelmä IIC ja verrataan sen tehokkuutta PNG:hen. 2 Teoriaa 2.1 Rasterikuvat Rasterikuvantallennuksella tarkoitetaan kuvan jakamista pieniin kuvapisteisiin (pikseleihin), jotka muodostavat ruudukon [5]. Jokaisesta ruudusta tallennetaan ruudun väri, joka useimmiten esitetään kolmen luvun muodossa. Jos väri on RGB-formaatissa, niin ne kuvaavat punaisen, vihreän ja sinisen määrää värissä [8]. Yleisimmin nämä väriarvot ovat 8-bittisiä eli yhden tavun kokoisia, jolloin koko väri on kolmen tavun pituinen. Tällöin sanotaan kuvan värisyvyyden olevan 24-bittinen. Tavuja voidaan käsitellä kokonaislukuina väliltä 0 - (2 8 1) eli 0-255. Rasterikuvat ovat pakkaamattomina erittäin suuria. Esimerkiksi kun tallennetaan kuva, jonka leveys on 640, korkeus 480 pikseliä ja värit ovat kolmitavuisia, tulee kooksi 640 480 3 = 921600 tavua = 922 kilotavua. Koko on siis melkein megatavu, vaikka 640 480 -kuva on nykykäsityksen mukaan erittäin pieni. Näin kuvan lataamiseen menee 512 kbps yhteydellä 14 sekuntia, mikä on liikaa mukavaa käyttöä ajatellen. Siksi kuvat tallennetaan yleensä pakattuna. Pakkausmenetelmät jaetaan häviöllisiin ja häviöttömiin menetelmiin [6][7]. Häviöllisissä menetelmillä pakattu kuva näyttää likimain samalta, mutta pakkauksen takia jotkin väriarvot ovat hiukan muuttuneet. Useiden muokkausten ja tallennusten jälkeen laatu alkaa siis heiketä. Häviöttömistä formaateista purettu kuva on taas väriarvoiltaan täsmälleen sama kuin alkuperäinen, eli laatu ei heikkene lainkaan.

2 TEORIAA 2 Molemmat tässä tutkimuksessa vertailtavat menetelmät, luvussa 3 esiteltävä menetelmä IIC ja PNG [13], ovat häviöttömiä menetelmiä. 2.2 DEFLATE DEFLATE on datanpakkausmenetelmä, joka on kahden pakkausmenetelmän, Humanin koodauksen ja LZ77-pakkauksen, yhdistelmä [2]. DEFLATE:a käytetään sekä PNG:ssä [13] että esiteltävässä IICmenetelmässä tiedon pakkaamiseen sopivan käsittelyn jälkeen. Humanin koodauksessa datassa esiintyville tavuille tehdään oma lyhennysmerkintäbittisarja. Lyhennysmerkinnät ovat ns. prex-koodeja, joka tarkoittaa sitä, että mikään lyhennysmerkintä ei ole toisen lyhennysmerkinnän alkuosa. Data kirjoitetaan näiden lyhennysmerkintöjen sarjana. Mikäli lyhennysmerkinnät on valittu oikein ja data on sellaista, että siinä esiintyy joitakin tavuja useammin kuin toisia, tuottaa koodaus pakkaamatonta lyhyemmän pakatun datan. Lisäksi pakattuun dataan kirjoitetaan sanakirja, jonka avulla lyhennysmerkinnät voidaan muuntaa takaisin niitä vastaaviksi tavuiksi. Lyhennysmerkinnät voidaan melko yksinkertaisesti valita optimaalisesti. LZ77-pakkauksessa taas usein esiintyvät tavujonot korvataan viittauksilla niiden edellisiin esiintymiin. DEFLATE yhdistelee näitä saadakseen parhaan tuloksen. [2] DEFLATE-pakkaajia on monia, mutta zlib on melko yleisesti käytetty ja vapaasti saatavilla oleva kirjasto. Sen takia sitä käytetään myös luvussa 3 esiteltävässä IIC-menetelmässä. DEFLATE:lla zlibiä käyttäen pakatessa voidaan antaa kaksi pakkausparametria: pakkauksen taso (kokonaisluku väliltä 1-9, mitä suurempi, sitä parempi ja hitaampi pakkaus) ja pakkausstrategia. Strategioita on kolme: ltered, human only ja oletusstrategia. Filtered-strategia on tarkoitettu suodatetulle datalle, jossa pakattavat tavut on pyritty saamaan pienelle välille. Human only -strategia käyttää ainoastaan Humanin koodausta. Oletusstrategia painottaa enemmän LZ77-pakkausta, ja siten soveltuu dataan, joissa esiintyy jonkinlaista rakennetta ja toistuvia osia. [4] DEFLATE siis pakkaa tiiviiksi sellaisen datan, jossa esiintyy joitakin tavuja useammin kuin toisia ja joissa esiintyy samoja tavujonoja toistuvasti. Kuvanpakkauksessa etenkin ensiksi mainittu on tärkeä ominaisuus, sillä jos data saadaan suodatettua siten, että siinä esiintyy lähinnä tietyllä lukualueella (esim. 251-255 ja 0-5) olevia tavuja, niin DEFLATE pakkaa datan hyvin tiiviisti. 2.3 PNG PNG on monipuolinen ja hyvin yleinen häviötön rasterikuvanpakkausmenetelmä. Kuten häviöttömissä kuvanpakkausmenetelmissä yleensäkin, PNG:ssä suodatetaan väriarvot siten että DEFLATE pakkaa ne tiiviisti tekemällä erilaisia arvauksia pikselien sisällöstä ja tallentamalla arvauksen ja todellisen väriarvon erotus. PNG tukee myös Adam7-lomitusta, jossa kuva tallennetaan seitsemässä osassa siten, että se avatessa tarkentuu pikkuhiljaa kuvan 1 mukaisesti. Kun PNG:ssä on Adam7-lomitus käytössä,

3 PAKKAUSMENETELMÄ IIC 3 tehdään suodatus erikseen Adam7:n seitsemälle eri vaiheelle, minkä takia pakkaussuhde huononee, koska pakkaus täytyy aloittaa alusta niin monta kertaa. [13] (a) (b) (c) (d) (e) (f) (g) Kuva 1: Adam7-lomitus 16x16-kuvalle. Sininen väri tarkoittaa aina kyseisellä kierroksella lisättäviä pikseleitä, jotka tallennetaan aina riveittäin. Kuvan pohjana kuva Wikipediasta [9]. 3 Pakkausmenetelmä IIC Tässä esitellään pakkausmenetelmä IIC, jota verrataan PNG:hen kokeellisessa osiossa luvussa 4. Sen nimi IIC tulee sanoista Interlaced Image Compression. Määritellään kuva seuraavasti: Kuvan leveys on w ja korkeus h, missä w, h Z +, ja siinä on yksinkertaisuuden vuoksi 3 värikanavaa (kuten yleisimmissä värikoodauksissa, esimerkiksi RGB ja YCbCr). Luku c(x, y, i) on kohdassa (x, y) olevan kanavan i väriarvo (kohdalla (x, y) tarkoitetaan tässä pistettä, joka on y pikseliä yläreunasta ja x vasemmasta reunasta), määritelty siis kun x, y, i Z, 0 x < w, 0 y < h, 0 i < 3. Yksinkertaisuuden vuoksi käsitellään vain 8-bittisiä väriarvoja, joten c(x, y, i) Z ja 0 c(x, y, i) < 256 kaikilla x, y, i, joilla c määritelty. Pakkauksen parametreina annetaan johtava kanava L Z, 0 L < 3 ja DEFLATE:n parametrit strategia (oletus, ltered tai human only) sekä pakkaustaso (kokonaisluku väliltä 0-9). 3.1 Pakkauksen suorittaminen 3.1.1 Virtojen muodostaminen Ensimmäiseksi pakkauksessa kirjoitetaan kuvadata virtoihin. Virrat ovat tavusarjoja, yksi jokaista kanavaa kohti. Virrassa tallennetaan kanavan pikselit käymällä läpi ensin harva ruudukko kuvasta, ja sitten aina lisäämällä väleihin pikseleitä. Pikselien tallennusjärjestys esitetään algoritmissa 1. Jokaisesta pikselistä ei tallenneta sen väriarvoa, vaan väriarvon erotus arvaukseen, joka muodostetaan algoritmin 2 mukaisesti, ottamalla aina ympärillä olevien lähimpien jo tallennettujen pikseleiden väriarvojen keskiarvo. Erotus arvaukseen ei aina kuulu välille 0-255, joten erotuksesta tallennetaan jakojäännös 256:lla jaettaessa. Tämä riittää yksilöimään oikean väriarvon, kun tunnetaan tallennetun arvon jakojäännös 256:lla jaettaessa ja arvaus, sillä se on varmasti välillä 0-255.

3 PAKKAUSMENETELMÄ IIC 4 (a) d = 6, X = 0, Y = 0 (b) d = 5, X = 2 d 1, Y = 0 (c) d = 5, X = 0, Y = 2 d 1 (d) d = 5, X = 2 d 1, Y = 2 d 1 (e) d = 4, (f) d = 4, (g) d = 4, (h) d = 3, X = 2 d 1, Y = 0 X = 0, Y = 2 d 1 X = 2 d 1, Y = 2 d 1 X = 2 d 1, Y = 0 (i) d = 3, (j) d = 3, (k) d = 2, (l) d = 2, X = 0, Y = 2 d 1 X = 2 d 1, Y = 2 d 1 X = 2 d 1, Y = 0 X = 0, Y = 2 d 1 (m) d = 2, (n) d = 1, (o) d = 1, (p) d = 1, X = 2 d 1, Y = 2 d 1 X = 2 d 1, Y = 0 X = 0, Y = 2 d 1 X = 2 d 1, Y = 2 d 1 Kuva 2: 20x17-kuvan pakkausjärjestys. Siniset pisteet tarkoittavat kyseisellä kierroksella tallennettavia pikseleitä (tallennus tapahtuu aina riveittäin vasemmalta oikealle), harmaat jo tallennettuja. Siniseen pikseliin tulevat nuolet lähtevät pikseleistä, jotka vaikuttavat kyseisen pikselin arvaukseen.

3 PAKKAUSMENETELMÄ IIC 5 1: olkoon D sellainen, että 2 D > w ja 2 D > h 2: kaikille d (D, D 1,..., 1) suorita 3: kaikille Y (0, 2 d 1 ) suorita 4: kaikille X (0, 2 d 1 ) suorita 5: jos d = D tai X 0 tai Y 0 niin 6: kaikille y (Y, Y + 2 d, Y + 2 2 d, Y + 3 2 d,...), y < h suorita 7: kaikille x (X, X + 2 d, X + 2 2 d, X + 3 2 d,...), x < w suorita 8: kirjoita((c(x, y, i) arvaus(x, y, X, Y, i, d)) mod 256) 9: loppu 10: loppu 11: loppu 12: loppu 13: loppu 14: loppu Algoritmi 1: Virran muodostamiseen käytettävä algoritmi, kun i on tähän virtaan pakattavan kanavan numero ja kirjoita(t) on aliohjelma, jolla virtaan saadaan kirjoitettua seuraava tavu t virtaan. Esimerkki toiminnasta kuvassa 2. arvaus(x, y, X, Y, i, d):n laskeminen algoritmissa 2. 3.1.2 Suodattaminen Jotta RGB-värien toisistaan riippumisen takia (tästä enemmän kohdassa 3.2) ei tallennettaisi samaa dataa monta kertaa, suodatetaan tämä päällekkäinen informaatio pois ei-johtavista kanavista vähentämällä kaikkien muiden kuin johtavan kanavan virtojen arvot johtavan kanavan virran vastaavan kohdan arvosta, jälleen tallentamalla vain erotuksen jakojäännös 256:lla jaettaessa. Mikäli kuvassa vastaavien kohtien arvot ovat lähellä toisiaan, palautuvat kaikki nämä erotukset lähelle nollaa siten, että DEFLATE pakkaa sen tehokkaasti. 3.1.3 Pakkaaminen ja tallentaminen Saadut virrat pakataan yksittäin DEFLATE:lla annetulla pakkaustasolla ja -strategialla, jolloin saadaan kolme pakattua virtaa. Pakatut virrat tallennetaan lomittain siten, että kaikki virrat edistyvät samaan tahtiin kun kuvaa ladataan. Tiedostoon siis tallennetaan vuorotellen johtavan kanavan ja kahden ei-johtavan kanavan virtoja lyhyissä osissa. Tätä jatketaan kunnes kaikki virrat on saatu kirjoitettua. Johtavan kanavan kerralla kirjoitettavan osan pituus on aina 128 tavua, ja muiden kanavien virtojen kerralla kirjoitettavien palojen pituudet suhteutetaan johtavan kanavan pituuteen siten, että virrat valmistuvat suunnilleen samaan aikaan. Virtojen kirjoittaminen tehdään algoritmin 3 mukaisesti (esimerkki kuvassa 3)

3 PAKKAUSMENETELMÄ IIC 6 1: g tyhjä lista 2: jos X 0 niin 3: jos x 2 d 1 [0, w[ niin 4: g.lisää(x 2 d 1, y) 5: loppu 6: jos x + 2 d 1 [0, w[ niin 7: g.lisää(x + 2 d 1, y) 8: loppu 9: loppu 10: jos Y 0 niin 11: jos y 2 d 1 [0, h[ niin 12: g.lisää(x, y 2 d 1 ) 13: loppu 14: jos y + 2 d 1 [0, h[ niin 15: g.lisää(x, y + 2 d 1 ) 16: loppu 17: loppu 18: arvaus(x, y, X, Y, i, d) g.keskiarvo Algoritmi 2: arvaus(x, y, X, Y, i, d):n muodostamiseen käytettävä algoritmi 3.2 Mihin pakkausteho perustuu Pakkausmenetelmän teho perustuu siihen, että monissa kuvissa esiintyy väriliukuja tai tasaisia alueita, DEFLATE:lla pakattava datassa ainakin loppua kohti mennessä (eli pienemmän alueen korjauksissa) värialueet alkavat muuttua tasaisemmiksi, ja siksi keskiarvoilla tehtävät arvaukset alkavat olla yhä parempia. Siispä virtoihin tallennetut oikean arvon erotukset arvauksesta ovat lähellä arvoja 0 ja 255, jolloin Humanin koodauksen pitäisi pakata virta tiiviisti. Kohdassa 3.1.2 esitellystä värikanavien toisistaan vähentämisestä on hyötyä, sillä on yleistä, että kuvissa esiintyy värin kokonaiskirkkauden muutoksia ilman että itse väri muuttuu. Eri värikanavat käyttäytyvät samalla tavalla, joten ympärillä olevien pikselien keskiarvosta saatavat arvaukset eroavat samaan suuntaan kaikilla kanavilla. Kun muiden kanavien erotusarvoista vähennetään johtavan kanavan erotusarvo, jälleen ottamalla jakojäännös modulo 256, saadaan muiden kanavien arvot lähemmäs arvoja 0 ja 255, jolloin DEFLATE pakkaa ne paremmin. Erityisen hyvin tämä toimii harmaasävykuvilla, joilla kanavat ovat täsmälleen samat, minkä takia suodatus saa ei-johtavien kanavien virrat sisältämään lähinnä nollaa. Myös DEFLATE:n LZ77-pakkauksesta voi olla hyötyä esimerkiksi, jos virtaan tulee useita samoja arvoja peräkkäin tai jos virtaan tulee muita samoja tavujonoja johtuen kuvan rakenteesta, jolloin LZ77 lyhentää myöhemmät samanlaiset ketjut. Kuitenkin DEFLATE:n mukautuva Humanin koodaus on tärkeämpi kuin LZ77 ainakin epätasaisia kuvia pakattaessa.

3 PAKKAUSMENETELMÄ IIC 7 1: kaikille i (0, 1, 2) suorita 2: I i 0 3: L i 128 #S(i) #S 4: loppu 5: niin kauan kuin I 0 < #(S) tai I 1 < #(S ) tai I 2 < #(S ) suorita 6: kaikille i (0, 1, 2) suorita 7: jos I i < #(S (i) ) niin 8: L min(l i, #(S (i) ) I i ) 9: kirjoita(s (i) i, S (i) i+1, S(i) i+2,..., S(i) i+l 1 ) 10: I i I i + L 11: loppu 12: loppu 13: loppu Algoritmi 3: Virtojen kirjoittamiseen käytettävä algoritmi, kun S on johtavan kanavan virta, S ja S ovat muiden kanavien virrat, virran x pituutta merkitään #(x), tavua nro. k x k ja tavut t 0, t 1,..., t n 1 tallennetaan aliohjelma kirjoita(t 0, t 1,..., t n 1 ). Merkintä x tarkoittaa pienintä lukua a Z siten, että x a. Esimerkki kuvassa 3. 743 524 604 128 91 105 128 91 105 128 91 105 128 91 105 128 91 105 103 69 79 Kuva 3: Virtojen pakkaaminen. Punainen, vihreä ja sininen tarkoittavat eri virtoja, joista tässä tapauksessa punainen on johtavan kanavan virta. Kuvassa ylhäällä ovat virrat kirjoitettuna vain peräkkäin, ja alhaalla kanavat kirjoitettuna lomittain siten kuin IIC ne tallentaisi. Merkinnät algoritmin 3 mukaisesti: #(S) = 743, #(S ) = 524, #(S ) = 604 L 0 = 128, L 1 = 91, L 2 = 105

8 4 MITTAUKSET Eräs IIC:n etu on myös se, että siinä pakkaus sisältää aina lomitustuen (interlacing). Kuvasta tallennetaan aina aluksi epätarkka kuva, sitten tarkennetaan asteittain tarkentamalla välejä. Tämä on hyödyllistä esimerkiksi www-sivuilla. Monet formaatit, kuten PNG, tukevat lomitusta, mutta usein erillisenä ominaisuutena, joka huonontaa pakkaustehoa. Kuvassa 4 on esimerkki PNG:n ja IIC:n lomituksen toimivuudesta. (a) 1% ladattu (b) 3% ladattu (c) 10% ladattu (d) 100% ladattu Kuva 4: Esimerkki lomitetun kuvan latautumisesta. IIC:n latauksen (ylemmät kuvat) katkaisu toteutettu purkajaohjelman ominaisuudella, joka jättää huomiotta tiedostossa haluttua kohtaa myöhemmin olevat väriarvot, PNG:n latauksen (alemmat kuvat) katkaisu katkaisemalla Adam7lomitettu tiedosto kesken ja näyttämällä se Firefox 3.5.4 -selaimella. Kuvan lähde Wikipedia [3]. 4 Mittaukset Tutkimuksen kokeellisessa osassa verrattiin IIC:n ja PNG:n pakkaustehokkuutta. Häviöttömissa formaateissa kuvan laatu pysyy aina samana, koska pakkauksen ja purkamisen jälkeen kuvadata ei muutu, mutta pakatun tiedoston koossa ja pakkaus- ja purkunopeuksissa on eroja. Tässä tutkimuksessa keskityttiin pakatun tiedoston pakkaussuhteeseen1 ja pakkausnopeuteen. Jokaisesta kategoriasta pakattiin jokaisella viidestä menetelmästä kaikki kuvat. Pakkaussuhteista laskettiin keskiarvot ja keskihajonnat (σ ) eri kategorioille erikseen. Kaikille kuville laskettiin myös jokaisella menetelmän pakatun kuvan koon suhde menetelmällä 1 pakatun kuvan kokoon, jotta voitaisiin 1 Pakkaussuhteella tarkoitetaan pakatun ja pakkaamattomien tiedostojen kokojen suhdetta.

4 MITTAUKSET 9 verrata menetelmiä suoraan menetelmään 1 helpommin. Se myös pienentää hajontoja, sillä jotkin kuvat pakkautuvat yleensäkin huonommin kuin toiset. Nopeuden vertailun mahdollistamiseksi laskettiin jokaiselta menetelmältä jokaisesta kategoriasta pakkaamiseen yhteensä kuluva aika. Pakkaustehokkuuserojen merkitsevyyden selvittämiseksi käytettiin riippuvien otosten keskiarvojen vertailutestiä [12]. 4.1 Käytetyt menetelmät 1. Adam7-lomitettu PNG, käyttäen pakkaustasoa 9 ja mukautuvaa (adaptive 2 ) suodatusta 2. Adam7-lomitettu PNG, käyttäen pelkkää Humanin koodausta ja mukautuvaa (adaptive 3 ) suodatusta 3. Oletusasetuksilla PNGOUTilla pakattu PNG 4. IIC ltered-strategialla tasolla 9 5. IIC Humanin koodauksella PNG-pakkaukseen menetelmissä 1 ja 2 käytetään ImageMagickia, joka on kuvien muunnostyökalu. ImageMagick käyttää libpng:tä kuvien pakkaamiseen. Koska libpng on PNG:n ominaisuuksien virallinen C-toteutus, sen pitäisi edustaa melko hyvin yleisesti käytettyjen PNG-pakkaajien tehokkuutta. [11][14] Menetelmät 1 ja 4 edustavat PNG:n ja IIC:n parasta tehoa silloin, kun halutaan melko nopea pakkausnopeus. Menetelmät 2 ja 5 ovat PNG:n ja IIC:n vielä nopeammat versiot, sillä niissä on jätetty LZ77-pakkaus pois kokonaan. Menetelmässä 3 PNG pakataan PNGOUT-työkalulla, joka on työkalu PNG:iden äärimmilleen optimointiin, ja on siten hyvin hidas. Pakkaus tehdään PNGOUT:in oletustilassa, jolloin se kokeilee pakata kuvan monella tavalla ja valitsee niistä parhaan. Siksi se pakkaa PNG:t todella tiiviisti. PNGOUT ei tue lomitusta, ja on nopeudeltaan paljon hitaampi, joten se ei ole vertailukelpoinen muiden kanssa, mutta edustaa PNG:n pakkaustehoa äärimmillään. [15] Molemmissa IIC-menetelmissä, siis menetelmissä 4 ja 5, käytetään johtavana kanavana kanavaa 0 eli punaista kanavaa. 2 adaptive-suodatus tarkoittaa suodatusta, jossa päätellään jokaiselle pikseliriville käytettävä suodatus erikseen pyrkien siihen, että lopputulos olisi mahdollisimman hyvin pakkautuva. [13] [10] 3 Menetelmässä 2 käytetään ImageMagickin tavallisen adaptive-suodatuksen sijaan minimum-sum-of-absolute-valuessuodatusta, sillä pelkällä Humanin koodauksella pakattaessa tavallista adaptive-suodatusta ei voida ImageMagickissa käyttää. [10]

4 MITTAUKSET 10 4.2 Käytetyt kategoriat Koska erityyppiset kuvat pakkautuvat eri tavoilla, kuvat jaettiin ominaisuuksiensa mukaan seuraaviin kategorioihin: 1. WWW-sivujen pieniä kuvia, kuten logoja, palkkeja ja vastaavia, joita pitää usein ladata wwwsivuja katsellessa. Kokoa 200 150 = 30000 pikseliä pienempiä 2. WWW-sivujen suurempia kuvia, kuten isommat logot ja mainokset ja myös kartat (ei valokuvia). Kokoa 200 150 = 30000 pikseliä tai suurempia 3. Pienet valokuvat, yleisiä esim. internet-käytössä, kokoa 1024 768 = 786432 pikseliä pienempiä 4. Suuret valokuvat, kokoa 1024 768 = 786432 pikseliä tai suurempia 5. Yksinkertaisia piirroksia, joissa on laajoja melko samanvärisiä alueita 6. Epätasaisia tai maalauksia, joissa ei ole niin paljon samanvärisiä alueita Jokaiseen kategoriaan valittiin 22 kuvaa. Kuvat olivat täysin muokkaamattomia, edes kokoa ei muutettu. Huomattavan huonolaatuiset kuvat esimerkiksi häviöllisen pakkauksen takia jätettiin pois. Myös kuvien mahdollinen läpinäkyvyys poistetiin käyttämällä valkoista taustaa. 4.3 Mittaaminen Kaikki pakattavat kuvat muunnettiin ensiksi ImageMagickin convert-komennolla raaka-rgb:ksi, eli pakkaamattomaan kuvatiedostomuotoon, jossa on vain listattu pikselien väriarvot. Kuvat pakattiin testissä pakkaamattomasta datasta, sillä silloin kuvan lukemiseen kuluvan ajan ei pitäisi vaikuttaa tuloksiin kovin paljoa. Kaikkien pakkauksien häviöttömyys tarkastettiin muuntamalla kuvat takaisin raaka-rgb:hen ja tarkistamalla, että se on täsmälleen sama kuin alkuperäinen. Pakkaamiseen kuluva aika mitatiin käyttäen GNU/Linuxin time-komentoa (GNU time 1.7), ja komennon käyttämä aika laskettiin pakkausohjelman käyttämän user- ja system-ajan summana. Tällöin aikaan lasketaan itse prosessin ja sen käyttämien järjestelmäkutsujen käyttämä aika, jolloin muiden prosessien kuluttama aika ei vaikuta lukemaan.

5 TULOKSET 11 5 Tulokset Kategorioiden mittaustulokset esitetään taulukoissa 1-12 ja kuvissa 5-10. 5.1 Kategoria 1: pienet www-sivujen kuvat Tässä kategoriassa kuvat ovat erittäin pieniä, mutta vaihtelevat monimutkaisuudessaan suuresti. Tulos on sen mukainen: hajonnat ovat erittäin suuria. Menetelmä 3 on vahvoilla tässä kategoriassa: se pakkaa kuvat keskimäärin puoleen siitä, mitä ne vievät tavallisesti PNG:llä pakattaessa menetelmällä 1. On kuitenkin otettava huomioon PNGOUT:in lomitustuen puute. Menetelmä 3 on tehokkaampi kuin menetelmä 1 tilastollisesti erittäin merkitsevästi (p = 0,0000000020), tosin menetelmä 3 käyttää reilusti enemmän aikaa kategorian pakkaamiseen kuin menetelmä 1. Kuitenkin kevyemmillä versioilla eroa ei ole niin paljon: keskimäärin menetelmä 5 on hiukan tehokkaampi kuin menetelmä 2, mutta ei tilastollisesti merkitsevästi (p = 0,25). IIC ei pärjää kovin hyvin tässä kategoriassa. Tässä kategoriassa suurin osa kuvista sisältää tasaisia samaa väriä sisältäviä alueita, jolloin PNG:n mukautuva suodatus pystyy suodattamaan tällaiset kuvat erittäin hyvin. Tasaisten värialueiden tapauksessa sellainenkin suodatus, jossa vähennetään jokaisen pikselin väriarvosta sen vasemmalla puolella olevan pikselin väriarvo, on jo todella tehokas. IIC:n suodatus sitä vastoin tuottaa tasaisten värialueiden äkkinäisissä muutoksissa paljon hajontaa pakattaviin erotusarvoihin. Suhde 0,35 0,45 0,19 0,4 0,44 σ 0,18 0,17 0,14 0,16 0,15 Suhde 1 1,39 0,51 1,24 1,42 σ,18 0,17 0,34 0,44 Taulukko 1: Kategorian 1 pakkaussuhteet Aika 0:00.69:00.33:13.569 0:00.34:00.099 Taulukko 2: Kategorian 1 pakkaamiseen kuluvat ajat (minuutit:sekuntit.millisekuntit) 5.2 Kategoria 2: suuremmat www-sivujen kuvat Kategoria on samankaltainen kuin kategoria 1, joten tuloksetkin ovat samansuuntaisia. Menetelmä 4 on kuitenkin jo hiukan lähempänä menetelmän 1 tehokkuutta. Tämä saattaa johtua siitä että jotkin kuvat ovat epätasaisempia ja monimutkaisempia kuin kategoriassa 1, jolloin PNG:n mukautuvasta

5 TULOKSET 12 0,7 0,7 2 2 0,6 0,6 1,8 1,8 1,6 1,6 0,5 0,5 1,4 1,4 0,4 0,4 0,3 0,3 1,2 1,2 1 1 0,8 0,8 0,2 0,2 0,6 0,6 0,1 0,1 0,4 0,4 0,2 0,2 Kuva 5: Kategorian 1 pakkaussuhteiden kuvaajat suodatuksesta ei ole enää niin paljoa hyötyä. Menetelmä 3 on edelleen tehokkain, pakaten keskimäärin puoleen menetelmän 1 pakkaussuhteesta. Menetelmä 3 onkin tilastollisesti erittäin merkitsevästi (p = 0,000000079) tehokkaampi kuin menetelmä 1. Tosin PNGOUT pakkaa kuvat todella hitaasti verrattuna muihin, eikä lomita niitä. Humanin koodattujen menetelmien 2 ja 5 hajonnat ovat huomattavasti suurempia kuin kategoriassa 1. Tämä saattaa johtua siitä, että tässä kategoriassa on sekä tasaisia värialueita sisältäviä kuvia, joissa LZ77 on erittäin tehokas, että myös epätasaisia kuvia, joista LZ77 ei löydä toistuvia jaksoja. Menetelmä 5 on keskimäärin hiukan tehokkaampi kuin menetelmä 2, muttei tilastollisesti merkitsevästi (p = 0,081). Se on lisäksi hiukan nopeampi kuin menetelmä 2. Suhde 0,26 0,38 0,16 0,27 0,35 σ 0,18 0,17 0,16 0,16 0,15 Suhde 1 2,03 0,51 1,16 1,93 σ 0 1,65 0,22 0,34 1,78 Taulukko 3: Kategorian 2 pakkaussuhteet Aika 0:04.14:01.890 3:17.459 0:04.939 0:00.730 Taulukko 4: Kategorian 2 pakkaamiseen kuluvat ajat (minuutit:sekuntit.millisekuntit) 5.3 Kategoria 3: pienet valokuvat Pienillä valokuvilla IIC-menetelmät ja PNGOUT ovat vahvoilla, IIC:t ovat keskimäärin vielä hiukan tehokkaampia kuin PNGOUT. Menetelmä 4 on tilastollisesti erittäin merkitsevästi (p = 0,00000000039)

5 TULOKSET 13 0,6 0,6 4 4 0,5 0,5 3,5 3,5 0,4 0,4 3 3 0,3 0,3 0,2 0,2 2,5 2,5 2 2 1,5 1,5 0,1 0,1 1 1 0,5 0,5-0,1-0,1 Kuva 6: Kategorian 2 pakkaussuhteiden kuvaajat tehokkaampi kuin menetelmä 1 ja tilastollisesti merkitsevästi (p = 0,0027) tehokkaampi kuin menetelmä 3. Myös menetelmä 5 on tilastollisesti erittäin merkitsevästi (p = 0,000000036) tehokkaampi kuin menetelmä 1, muttei tilastollisesti merkitsevästi (p = 0,066) tehokkaampi kuin menetelmä 3. Se siis pärjää melkein yhtä hyvin kuin menetelmä 4, mutta on selvästi koko kategorian nopein. Suhde 0,54 0,61 0,43 0,4 0,41 σ 0,16 0,13 0,17 0,14 0,13 Suhde 1 1,16 0,79 0,74 0,77 σ,17 0,1 0,09 0,11 Taulukko 5: Kategorian 3 pakkaussuhteet Aika 0:14.869 0:05.720 7:39.219 0:22.169 0:02.789 Taulukko 6: Kategorian 3 pakkaamiseen kuluvat ajat (minuutit:sekuntit.millisekuntit) 5.4 Kategoria 4: suuret valokuvat Suurten kuvien tulokset ovat odotetusti hyvin samankaltaisia kuin pienillä valokuvilla. Tässä kategoriassa menetelmä 5 on tilastollisesti merkitsevästi (p = 0,0099) tehokkaampi kuin menetelmä 4 - siis nopeampi versio on tehokkaampi. Lisäksi se on tilastollisesti erittäin merkitsevästi tehokkaampi kuin menetelmä 1 (p = 0,000000000057) ja menetelmä 3 (p = 0,00029).

5 TULOKSET 14 0,8 0,8 1,4 1,4 0,7 0,7 1,2 1,2 0,6 0,6 1 1 0,5 0,5 0,4 0,4 0,3 0,3 0,8 0,8 0,6 0,6 0,2 0,2 0,4 0,4 0,1 0,1 0,2 0,2 Kuva 7: Kategorian 3 pakkaussuhteiden kuvaajat Suhde 0,52 0,56 0,42 0,38 0,37 σ 0,14 0,12 0,15 0,11 0,11 Suhde 1 1,1 0,79 0,73 0,72 σ,11 0,08 0,06 0,06 Taulukko 7: Kategorian 4 pakkaussuhteet Aika 3:55.819 0:48.160 93:04.130 7:13.129 0:29.209 Taulukko 8: Kategorian 4 pakkaamiseen kuluvat ajat (minuutit:sekuntit.millisekuntit) 0,8 0,8 1,4 1,4 0,7 0,7 1,2 1,2 0,6 0,6 1 1 0,5 0,5 0,4 0,4 0,3 0,3 0,8 0,8 0,6 0,6 0,2 0,2 0,4 0,4 0,1 0,1 0,2 0,2 Kuva 8: Kategorian 4 pakkaussuhteiden kuvaajat

5 TULOKSET 15 5.5 Kategoria 5: yksinkertaiset piirrokset Tässä kategoriassa on kuvia, joissa on paljon yksivärisiä alueita, eli se on yhdistelmä edellisistä kategorioista. Tulokset ovat myös sen mukaiset. Menetelmä 4 pärjää keskimäärin hiukan paremmin kuin menetelmä 1, kuitenkin vain tilastollisesti melkein merkitsevästi (p = 0,029). PNG:n ja IIC:n kevytversioissa menetelmä 5 on kuitenkin tilastollisesti erittäin merkitsevästi (p = 0,00067) tehokkaampi kuin menetelmä 2. Menetelmä 3 on vain tilastollisesti melkein merkitsevästi (p = 0,022) tehokkaampi kuin menetelmä 4. Suhde 0,33 0,42 0,26 0,29 0,34 σ 0,24 0,22 0,23 0,18 0,15 Suhde 1 1,6 0,71 1,02 1,39 σ,55 0,2 0,38 0,66 Taulukko 9: Kategorian 5 pakkaussuhteet Aika 0:09.92:04.380 15:35.49:13.62:02.300 Taulukko 10: Kategorian 5 pakkaamiseen kuluvat ajat (minuutit:sekuntit.millisekuntit) 0,7 0,7 2,5 2,5 0,6 0,6 2 2 0,5 0,5 0,4 0,4 1,5 1,5 0,3 0,3 1 1 0,2 0,2 0,1 0,1 0,5 0,5 Kuva 9: Kategorian 5 pakkaussuhteiden kuvaajat 5.6 Kategoria 6: epätasaiset piirrokset tai maalaukset Tämän kategorian kuvat muistuttavat enemmän valokuvia kuin kategorioita 1-2. Siksi tässä kategoriassa IIC näyttää olevan taas tehokkain. Menetelmä 4 on tilastollisesti erittäin merkittävästi parempi kuin menetelmä 1 (p = 0,000000000013) ja menetelmä 3 (p = 0,000081), mutta se on paljon hitaampi kuin ne. Koko kategorian nopein IIC:n kevyempi versio 5 pärjää tässä kategoriassa aivan yhtä hyvin,

5 TULOKSET 16 ollen myös tilastollisesti erittäin merkitsevästi parempi kuin menetelmä 1 (p = 0,000000000051) ja menetelmä 3 (p = 0,00025). Suhde 0,62 0,67 0,5 0,44 0,44 σ 0,14 0,12 0,16 0,11 0,11 Suhde 1 1,11 0,79 0,71 0,71 σ,19 0,09 0,09 0,08 Taulukko 11: Kategorian 6 pakkaussuhteet Aika 0:25.77:11.679 11:46.050 1:07.71:06.529 Taulukko 12: Kategorian 6 pakkaamiseen kuluvat ajat (minuutit:sekuntit.millisekuntit) 0,9 0,9 1,4 1,4 0,8 0,8 1,2 1,2 0,7 0,7 0,6 0,6 1 1 0,5 0,5 0,8 0,8 0,4 0,4 0,6 0,6 0,3 0,3 0,2 0,2 0,1 0,1 0,4 0,4 0,2 0,2 Kuva 10: Kategorian 6 pakkaussuhteiden kuvaajat 5.7 Virhelähteet On mahdollista, että itse menetelmien toteutukset eivät edustaneet sitä, mihin menetelmät pystyvät hyvillä toteutuksilla. Esimerkiksi on todennäköistä että olisi parempiakin toteutuksia PNGpakkaukseen kuin ImageMagick. On myös mahdollista, että joillakin pakkausmenetelmien parametreilla olisi voitu saada parempia tuloksia. Esim IIC:llä pakatessa käytettiin johtavana kanavana vain punaista kanavaa, mutta monissa kuvissa punainen kanava ei ole niin vahvasti liitoksissa muihin kanaviin. IIC:iä kannattaisi siis myös testata jollain muulla johtavalla kanavalla tai aina pakattavan kuvan mukaan päätellyllä johtavalla kanavalla. DEFLATE:n tason 9 käyttö saattaa vääristää tuloksia nopeuden suhteen, jos esimerkiksi PNG:n käyttö heikommilla pakkausasetuksilla toisi merkittävästi suurempaa nopeutta vaikka pakkaussuhde ei heikkenisi merkittävästi.

5 TULOKSET 17 Myös PNGOUT voisi päästä parempiin tuloksiin hieman kevyemmillä asetuksilla kuin oletusasetuksilla, jolloin sen ajamiseen ei menisi aivan niin kauan. Tämä ei kuitenkaan vaikuttaisi siihen, että se ei ole vertailukelpoinen muiden algoritmien kanssa siksi, että se poistaa kuvista aina lomituksen. Itse tehty IIC:n toteutus C:llä ei myöskään ole aivan äärimmilleen optimoitu, joten on mahdollista että olisi mahdollista päästä nopeampiin tuloksiin myös IIC:llä. Kuvien jako kategorioihin on joskus subjektiivista, sillä jotkin kuvat ovat kategorioiden rajoilla. Se voi aiheuttaa jonkin verran vääristymistä tuloksiin eri menetelmien vahvoista kategorioista. Kuitenkin saatujen tulosten voidaan katsoa antavan suuntaa siitä, miten hyvin IIC:n kaltainen yksinkertainen menetelmä pärjää yleisten formaattien rinnalla. 5.8 Johtopäätökset Kaikkia kategorioita yhdessä tarkastellessa voi huomata, että IIC pärjää hyvin kuvissa, jotka eivät sisällä tasaisia värialueita, kuten valokuvat ja maalaukset, kun taas PNG on selvästi tätä parempi hyvin yksinkertaisissa kuvissa, joissa on selviä värinvaihdoksia ja tasaisia alueita. Kategorioissa, joilla IIC on tehokkaampi kuin PNG:n normaaliversiot, on se yleensä hiukan parempi kuin PNGOUT joka käyttää moninkertaisesti aikaa eikä edes tue lomitusta. Lisäksi näissä kategorioissa IIC:n käyttäminen pelkällä Humanin koodauksella on nopeampaa ja myös tehokkaampaa kuin raskaammalla ltered-strategialla. PNG pelkällä Humanin koodauksella osoittautuu melko kilpailukyvyttömäksi kaikissa suhteissa. IIC pelkällä Humanin koodauksella pärjää yleensä melkein yhtä hyvin kuin IIC parhaalla tasolla lteredstrategiallakin. IIC ltered-strategialla on kuitenkin vielä hitaampi kuin PNG, kun taas IIC pelkällä Humanin koodauksella on lähes aina nopein. Vaikuttaisi siltä, että IIC:ssä Humanin koodaus riittää niissä kategorioissa, joissa IIC pärjää muutenkin parhaiten, kun taas LZ77-pakkauksesta ei ole paljoakaan apua. PNG:n käyttö www-sivujen pienissä kuvissa, kuten erilaisissa palkeissa ja yksinkertaisissa logoissa on edelleen tehokkaampaa kuin IIC:llä. Kuitenkin valokuvilla ja monimutkaisilla, epätasaisilla piirroksilla PNG osoittautuu tehottomaksi suhteessa IIC:iin, etenkin sen nopeaan human only -versioon.

LÄHTEET 18 Lähteet [1] Comparison of web browsers: image format support. Wikipedia. http://en.wikipedia.org/wiki/comparison_of_web_browsers#image_format_support (ladattu 12.11.2009) [2] Deutsch, L. P. 1996. RFC 1951 DEFLATE Compressed Data Format Specication ver 1.3. http://www.gzip.org/zlib/rfc-deate.html (ladattu 10.10.2009) [3] Felis Margarita. Wikipedia. http://en.wikipedia.org/wiki/file:felis_margarita_10.jpg (ladattu 14.11.2009) [4] Gailly, J. & Adler, M. 2002. zlib 1.1.4 Manual: deateinit2. http://zlib.net/manual.html#deateinit2 (ladattu 12.10.2009) [5] Howe, D. 1995. FOLDOC: raster graphics. Imperial College Department of Computing, Lontoo. http://foldoc.org/raster+graphics (ladattu 11.11.2009) [6] Howe, D. 1995. FOLDOC: lossy. Imperial College Department of Computing, Lontoo. http://foldoc.org/lossy (ladattu 11.11.2009) [7] Howe, D. 1995. FOLDOC: lossless. Imperial College Department of Computing, Lontoo. http://foldoc.org/lossless (ladattu 11.11.2009) [8] Howe, D. FOLDOC: RGB. Imperial College Department of Computing, Lontoo. http://foldoc.org/raster+graphics (ladattu 11.11.2009) [9] 2007. Illustration of the 7 passes of the Adam7 algorithm, running over a 16x16 image. http://en.wikipedia.org/wiki/file:adam7_passes.gif (ladattu 11.11.2009). Lisenssi public domain. [10] ImageMagick: Command line options: -quality. ImageMagick. http://www.imagemagick.org/script/command-line-options.php#quality (ladattu 14.11.2009) [11] ImageMagick: Formats. ImageMagick. http://www.imagemagick.org/script/formats.php (ladattu 15.11.2009) [12] Mellin, I. 1996. Johdatus tilastotieteeseen, 2. kirja: tilastotieteen jatkokurssi, sivut 215-216. Helsingin yliopisto, tilastotieteen laitos. Yliopistopaino, Helsinki 2003. [13] Randers-Pehrson, G. & Boutell, T. et al. 1999. PNG (Portable Network Graphics) Speci- cation Version 1.2. http://www.libpng.org/pub/png/spec/1.2/png-contents.html (ladattu 11.11.2009)

LÄHTEET 19 [14] Randers-Pehrson, G. et al. libpng. http://libpng.org/pub/png/libpng.html (ladattu 15.11.2009) [15] Silverman, K. Ken Silverman's Utility Page. http://advsys.net/ken/utils.htm (ladattu 15.11.2009)