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

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

Kompleksiluvut signaalin taajuusjakauman arvioinnissa

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

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

Algoritmit 2. Luento 9 Ti Timo Männikkö

Epäyhtälöt ovat yksi matemaatikon voimakkaimmista

Koodausteoria, Kesä 2014

Häviötön tiedon pakkaaminen

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

Diskreetin satunnaismuuttujan odotusarvo, keskihajonta ja varianssi

T Luonnollisten kielten tilastollinen käsittely

T Privacy amplification

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

SGN-1200 Signaalinkäsittelyn menetelmät, Tentti

MICHAEL SITTIG ÄÄNEN HÄVIÖTÖN PAKKAAMINEN. Kandidaatintyö

5/11 6/11 Vaihe 1. 6/10 4/10 6/10 4/10 Vaihe 2. 5/11 6/11 4/11 7/11 6/11 5/11 5/11 6/11 Vaihe 3

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

Mat Sovellettu todennäköisyyslasku A

SGN-1200 Signaalinkäsittelyn menetelmät, Tentti

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

JUHO BLANKENSTEIN MITTAUSSIGNAALIN PAKKAAMINEN, SELVITYS PAKKAUSALGORITMEISTA

MS-A0502 Todennäköisyyslaskennan ja tilastotieteen peruskurssi

Matematiikka ja teknologia, kevät 2011

1. Esitä rekursiivinen määritelmä lukujonolle

Harjoitus 2: Matlab - Statistical Toolbox

2. Jatkoa HT 4.5:teen ja edelliseen tehtavään: Määrää X:n kertymäfunktio F (x) ja laske sen avulla todennäköisyydet

Kuvan pakkaus JPEG (Joint Photographic Experts Group)

811120P Diskreetit rakenteet

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

Shannonin ensimmäinen lause

T Luonnollisten kielten tilastollinen käsittely Vastaukset 11, ke , 12:15 14:00 Puheentunnistus ja kielimallien evaluointi Versio 1.

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

1 Aritmeettiset ja geometriset jonot

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

MTTTP5, luento Otossuureita ja niiden jakaumia (jatkuu)

30A02000 Tilastotieteen perusteet

3. laskuharjoituskierros, vko 6, ratkaisut

VÄRISPEKTRIKUVIEN TEHOKAS SIIRTO TIETOVERKOISSA

Jatkuvat satunnaismuuttujat

P (A)P (B A). P (B) P (A B) = P (A = 0)P (B = 1 A = 0) P (B = 1) P (A = 1)P (B = 1 A = 1) P (B = 1)

Sovellettu todennäköisyyslaskenta B

Signaalien generointi

Matematiikan tukikurssi

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

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

Osa 2: Otokset, otosjakaumat ja estimointi

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

Juuri 10 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty

6. laskuharjoitusten vastaukset (viikot 10 11)

Algebralliset menetelmät virheenkorjauskoodin tunnistamisessa

Tilastotieteen kertaus. Vilkkumaa / Kuusinen 1

Estimointi. Vilkkumaa / Kuusinen 1

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

dx=5&uilang=fi&lang=fi&lvv=2014

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

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

HY, MTL / Matemaattisten tieteiden kandiohjelma Todennäköisyyslaskenta IIb, syksy 2017 Harjoitus 1 Ratkaisuehdotuksia

FoA5 Tilastollisen analyysin perusteet puheentutkimuksessa. 6. luento. Pertti Palo

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

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

Odotusarvo. Odotusarvon ominaisuuksia Satunnaismuuttujien ominaisuuksia 61

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

Algoritmit 2. Luento 10 To Timo Männikkö

Keskinäisinformaatiosta

v 8 v 9 v 5 C v 3 v 4

3.7 Todennäköisyysjakaumia

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

T Luonnollisen kielen tilastollinen käsittely Vastaukset 8, ti , 8:30-10:00 Tilastolliset yhteydettömät kieliopit, Versio 1.

Suodatus ja näytteistys, kertaus

MS-A0501 Todennäköisyyslaskennan ja tilastotieteen peruskurssi

Sovellettu todennäköisyyslaskenta B

Matematiikan tukikurssi

Moniulotteisia todennäköisyysjakaumia

811120P Diskreetit rakenteet

2 exp( 2u), kun u > 0 f U (u) = v = 3 + u 3v + uv = u. f V (v) dv = f U (u) du du f V (v) = f U (u) dv = f U (h(v)) h (v) = f U 1 v (1 v) 2

Koodausteoria, Kesä 2014

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

4 LUKUJONOT JA SUMMAT

MS-A0003/A0005 Matriisilaskenta Malliratkaisut 5 / vko 48

Johdatus tilastotieteeseen Estimointi. TKK (c) Ilkka Mellin (2005) 1

Tehtävät. 1. Ratkaistava epäyhtälöt. a) 2(4 x) < 12, b) 5(x 2 4x + 3) < 0, c) 3 2x 4 > 6. 1/10. Sukunimi (painokirjaimin)

Koodausteoria, Kesä 2014

Estimointi. Estimointi. Estimointi: Mitä opimme? 2/4. Estimointi: Mitä opimme? 1/4. Estimointi: Mitä opimme? 3/4. Estimointi: Mitä opimme?

Luku 8. Aluekyselyt. 8.1 Summataulukko

Mallipohjainen klusterointi

Inversio-ongelmien laskennallinen peruskurssi Luento 7

χ = Mat Sovellettu todennäköisyyslasku 11. harjoitukset/ratkaisut

Matematiikan tukikurssi, kurssikerta 3

SGN Signaalinkäsittelyn perusteet Välikoe Heikki Huttunen

Harjoitus 7: NCSS - Tilastollinen analyysi

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

Sovellettu todennäköisyyslaskenta B

Vaihtoehtoinen tapa määritellä funktioita f : N R on

MS-A0501 Todennäköisyyslaskennan ja tilastotieteen peruskurssi

S Laskennallinen Neurotiede

10. Esitys ja kuvaus

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

MATEMATIIKAN KOE LYHYT OPPIMÄÄRÄ

tilastotieteen kertaus

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Transkriptio:

Matias Sumanen Mittaussignaalin häviötön pakkaaminen Kandidaatintyö Tarkastaja: Yliopistonlehtori Heikki Huttunen Jätetty tarkastettavaksi: 17.5.2015

2 TIIVISTELMÄ TAMPEREEN TEKNILLINEN YLIOPISTO Signaalinkäsittelyn ja tietoliikennetekniikan koulutusohjelma SUMANEN, MATIAS: Mittaussignaalin häviötön pakkaaminen Kandidaatintyö, 19 sivua Toukokuu 2015 Pääaine: Signaalinkäsittely Tarkastaja: Yliopistonlehtori Heikki Huttunen Avainsanat: Tiedon pakkaus, Entropia, Huffman-koodaus, Aritmeettinen koodaus, Häviötön pakkaus Tämä työ käsittelee mittaussignaalin häviötöntä pakkaamista ja siihen liittyviä pakkausmenetelmiä. Näistä erityisesti Huffman-koodaus ja aritmeettinen koodaus ovat keskeisiä menetelmiä, joita nykyään sovelletaan häviöttömässä tiedonpakkauksessa. Erityisesti tietoliikennetekniikassa signaalin häviötön pakkaaminen on tärkeää, jotta tiedonsiirto olisi mahdollisimman tehokasta. Teoriaosuudessa käsitellään informaatioteoriasta entropiaa, Huffman-koodausta, aritmeettista koodausta sekä differenssikoodausta. Toteutusosassa puolestaan kerrotaan, millaisia tuloksia on saatu, kun erilaisista signaaleista on laskettu niiden entropiat sekä arvioitu niiden kokonaistilantarve histogrammien avulla. Yhteenvedossa tiivistetään sitten saadut tulokset yhteen ja arvioidaan näiden vastaavuutta odotuksiin nähden. Teoriaosuudessa kerrotaan työn aihepiiriin liittyvät keskeiset menetelmät sekä esitetään niistä asiaa havainnollistavia esimerkkejä.

3 ALKUSANAT Tämä kandidaatintyö on toteutettu signaalinkäsittelyn laitoksen kandidaatintyöseminaarissa tammikuun ja toukokuun 2015 välisenä aikana. Haluaisin kiittää lämpimästi arvokkaista neuvoista työn ohjaajaa yliopistonlehtori Heikki Huttusta, joka vaikutti merkittävästi tämän työn asiasisältöön ja etenemiseen kevään aikana. Ajatus juuri tähän aihevalintaan syntyi keskusteltuani asiasta Heikki Huttusen kanssa. Haluaisin kiittää myös perheenjäseniäni, jotka hekin tukivat minua vaikeina hetkinä ja auttoivat omalta osaltaan tämän työn loppuunsaattamisessa. Kangasalla toukokuussa 2015 Matias Sumanen

4 SISÄLTÖ 1. Johdanto 6 2. Teoriaa 8 2.1 Taustaa.................................. 8 2.2 Entropia.................................. 8 2.3 Huffman-koodaus............................. 10 2.4 Aritmeettinen koodaus.......................... 12 2.5 Differenssikoodaus............................ 14 3. Toteutus ja tulokset 15 3.1 Taustaa Huffman-koodauksen toteutuksesta.............. 15 3.2 Taustaa aritmeettisen koodauksen toteutuksesta............ 15 3.3 Tulosten laskenta signaaleille....................... 16 4. Yhteenveto 18 Lähteet 18

5 TERMIT JA MÄÄRITELMÄT H X P(X) E I(X) MLE LZ PKZIP N Deflate Entropia Diskreetti satunnaismuuttuja Pistetodennäköisyysfunktio Odotusarvo Satunnaismuuttujan X informaatiosisältö Suurimman uskottavuuden estimointi Lempel-Ziv-pakkausmenetelmä Tiedonpakkausohjelma Suotimen pituus Häviötön tiedonpakkausmenetelmä

6 1. JOHDANTO Mittaussignaalin pakkaamisen tavoitteena on kompressoida digitaalinen signaali mahdollisimman pieneen tilaan. Tähän tavoitteeseen päästään poistamalla signaalista tarpeeton, toistuva informaatio sekä pakkaamalla sitä häviöttömillä pakkausmenetelmillä, kuten Huffman-koodauksella. Jonkin tietoaineksen kuvaus pyritään siis korvaamaan lyhyemmällä kuvauksella. Häviöllisessä pakkauksessa tiedon muuttuminen sen sijaan sallitaan, pyrkien kuitenkin mahdollisimman pieneen muutokseen ihmisen saaman kokemuksen kannalta. Esimerkiksi television katselija ei todennäköisesti havaitse, jos taustalta poistetaan joitakin yksityiskohtia, kun hänen huomionsa kiinnittyy etualalla keskusteleviin henkilöihin. Periaatteessa häviöllinen pakkaus heikentää silti aina tallenteen laatua verrattuna alkuperäiseen. Pakattaessa siten, että laatuero ei suurinta osaa ihmisistä vielä häiritse, häviölliset menetelmät pääsevät kuitenkin huomattavasti parempiin pakkaussuhteisiin kuin häviöttömät menetelmät. [1] Pakkausmenetelmät ovat kehittyneet vuosikymmenten aikana merkittävästi. Aluksi bittimäärän pienentäminen oli varsin heikkolaatuista. 8-bittiselle datalle on suhteellisen hyvin onnistunut Huffmanin koodausmalli, joka perustuu näytteiden välisiin erotuksiin. 16-bittisen datan pakkausmenetelmien kehittämiseen, erityisesti häviöllisten menetelmien, ovat osallistuneet lukuisat kansainväliset yhtiöt, kuten Sony ja Philips, jotka ovat käyttäneet kehitystyöhön miljoonia dollareita. [2] Nykyaikana erilaisten pakkausmenetelmien pohjalta on kehitetty lukuisia sovelluksia, kuten esimerkiksi erilaisia pakkauskoodekkeja. Myös esimerkiksi matkapuhelinta käytettäessä puhesignaalia voidaan pakata käyttämällä tähän tarkoitukseen optimoituja menetelmiä, joilla päästään parempiin tuloksiin kuin mitä tahansa signaalia pakattaessa. [1] Huffman-koodaus on informaatioteoriassa tiedonpakkaukseen käytettävä algoritmi. Siinä erilaisten merkkien bittiesitykset muodostetaan eräänlaisella puumallilla. Aluksi jokainen merkki on lehti, jonka arvona on merkin esiintymistiheys. Kaksi pienintä lehteä yhdistetään sen jälkeen puuksi, jonka vasen ja oikea puoli ovat merkit ja niiden arvoksi tulee lehtien arvojen summa. [3] Tämän työn tarkoituksena on käsitellä kolmen testisignaalin häviötöntä pakkaamista Huffman-koodauksella ja aritmeettisella koodauksella. Työssä on tarkoitus generoida MATLAB R -ohjelmistolla satunnaissignaali ja laskea entropia sekä yksit-

1. Johdanto 7 täiselle signaalille, kahden signaalin väliselle erotukselle sekä toisen asteen ennustimelle. Teoriaosuudessa luodaan katsaus taustoihin ja esitellään tämän työn aihepiiriin liittyviä keskeisiä menetelmiä. Sen jälkeen käsitellään työn taustalla olevaa teoriaa, eli entropiaa, Huffman-koodausta, aritmeettista koodausta sekä differenssikoodausta. Kolmannessa luvussa esitellään työn toteutustavat sekä eri menetelmillä saadut tulokset. Yhteenvedossa kootaan lopulta saadut tulokset yhteen ja arvioidaan, olivatko ne odotetun kaltaisia.

8 2. TEORIAA 2.1 Taustaa Informaatioteoria, algoritmiikka ja hävikkiteoria (engl. rate distortion theory) muodostavat tiedonpakkauksen teoreettisen pohjan. Kryptografia ja koodausteoria liittyvät läheisesti pakkausmenetelmiin. [1] Kryptografia viittaa kryptologiassa prosessiin, jolla koodataan viestejä tai tietoja siten, että vain valtuutetut osapuolet voivat nähdä niitä [5]. Koodausteoria puolestaan tarkoittaa koodausta käsittelevää matematiikan haaraa [6]. Tiedon tiivistämisen ajatus liittyy läheisesti myös tilastolliseen päättelyyn, koska tiedonpakkauksessa sovelletaan esimerkiksi entropiaa ja informaatiosisältöä, sekä suurimman uskottavuuden estimointiin (MLE), koska se on tilastotieteellinen menetelmä [1]. Tiedonpakkauksessa entropia antaa alarajan pakkaustehokkuudelle. Entropiaa voi pienentää muun muassa differenssikoodauksella, joilloin yleensä myös käytännön tilatarve pienenee. Suosituin häviötön pakkausmenetelmä on niin kutsuttu Lempel- Ziv- pakkausme-netelmä. Deflate-algoritmi on puolestaan LZ:n muunnos, joka on optimoitu nopeaa pakkauksen purkamista ja parempaa tiivistyssuhdetta varten. Deflate on yleisesti käytetty esimerkiksi PKZIP:ssä, PNG-kuvaformaatissa. Lempel-Zivmenetelmät taulukoivat usein toistuvaa dataa, joka useimmissa menetelmissä kerätään suoraan aiemmasta datasta. Taulukko itsessään on usein Huffman-koodattu. [1] 2.2 Entropia Entropia kuvaa informaatioteoriassa jonkin vastaanotetun viestin sisältävää keskimääräistä informaation määrää. Keskeinen ajatus on, että mitä epätodennäköisempi jokin tapahtuma on, sitä enemmän se tarjoaa informaatiota tapahtuessaan. Entropiaa mitataan useimmiten bitteinä, mutta myös muut yksiköt ovat mahdollisia riippuen asiayhteydestä. [4] Yksittäisen näytteen sisältämä informaatio määritellään kaavalla I(X) = log 2 (P (X)), (2.1) jossa X on diskreetti satunnaismuuttuja ja P(X) kuvaa X:n todennäköisyyttä. Tämän avulla voidaan määritellä entropia, joka on informaation odotusarvo. Se

2. Teoriaa 9 saadaan diskreetin satunnaismuuttujan X pistetodennäköisyysfunktion P (X) avulla kaavalla H(X) = E[I(X)] = E[ log 2 (P (X))], (2.2) jossa E on odotusarvo ja I on satunnaismuuttujan X informaatiosisältö. I(X) on itsessään satunnaismuuttuja. Laskettaessa entropiaa äärellisen mittaisesta näytteestä voidaan kaava 2.1 kirjoittaa muodossa H(X) = i P (X i )I(X i ), (2.3) Havainnollistetaan entropian laskemista esittämällä esimerkki. Oletetaan, että aineistossa on symboleita a, b, c ja d todennäköisyyksillä p a = 0,30, p b = 0,10, p c = 0,15 ja p d = 0,45. Edelläolleiden symbolien informaatio on I(a) = log 2 (0, 30) = 1, 74 I(b) = log 2 (0, 10) = 3, 32 I(c) = log 2 (0, 15) = 2, 74 (2.4) I(d) = log 2 (0, 45) = 1, 15 Koko näytteen entropia on tällöin kaavan 2.3 perusteella H(X) = 1, 78 (2.5) Vertailun vuoksi neljän eri symbolin suora koodaus vaatisi 2 bittiä/näyte, joten entropia on 10,89 % tämän alapuolella. Otetaan vielä toinen vastaava esimerkki. Oletetaan, että toisessa aineistossa on symboleita a, b, c, d, e ja f todennäköisyyksillä p a = 0,20, p b = 0,10, p c = 0,10, p d = 0,15, p e = 0,30 ja p f = 0,15. Näiden symbolien informaatio on vastaavasti

2. Teoriaa 10 I(a) = log 2 (0, 20) = 2, 32 I(b) = log 2 (0, 10) = 3, 32 I(c) = log 2 (0, 10) = 3, 32 I(d) = log 2 (0, 15) = 2, 74 (2.6) Tämän näytteen entropiaksi saadaan I(e) = log 2 (0, 30) = 1, 74 I(f) = log 2 (0, 15) = 2, 74 H(X) = 2, 47 (2.7) Vertailun vuoksi neljän eri symbolin suora koodaus vaatisi 3 bittiä/näyte, joten entropia on 17,64 % tämän alapuolella. Entropia antaa tietyn alarajan häviöttömälle pakkaustehokkuudelle. Minkään ainoastaan tilastollisiin ominaisuuksiin perustuvan häviöttömän pakkausmenetelmän ei ole mahdollista päästä entropiaa pienempään bittimäärään. [3] 2.3 Huffman-koodaus Huffman-koodaus on hyvin laajalti käytetty häviötön koodausmenetelmä. Menetelmä arvioi erilaisten symbolien esiintymistodennäköisyyksiä ja esittää usein esiintyvät symbolit lyhyin bittijonoin ja harvemmin esiintyvät pidemmin merkkijonoin. [3] Koska jokaisen merkin mahdollisuus erilaisten datalähteiden sisällä pysyy väistämättä muuttumattomana, voidaan Huffman-kooditaulukkoa hyödyntää datan koodauksessa [9]. Keskimääräinen Huffman-koodatun sanan pituus saadaan kertomalla sanojen pituudet niiden esiintymistodennäköisyyksillä. Tarkastellaan esimerkkiä: jos symbolit ovat kokonaisluvut [1,2,3,4,5,6] ja niiden todennäköisyydet ovat P = [0,5;0,125;0,125; 0,125;0,0625;0,0625], niin koodisanan keskimääräinen pituus on 2,1250 bittiä sekä Symboli "1": P = 0,5000 Symboli "2": P = 0,1250 Symboli "3": P = 0,1250 Symboli "4": P = 0,1250 Symboli "5": P = 0,0625 Symboli "6": P = 0,0625 Edelläolleiden symbolien sisältämä informaatio on

2. Teoriaa 11 I( 1 ) = log 2 (0, 5000) = 1, 00 I( 2 ) = log 2 (0, 1250) = 3, 00 I( 3 ) = log 2 (0, 1250) = 3, 00 I( 4 ) = log 2 (0, 1250) = 3, 00 (2.8) Koko näytteen entropia on tällöin I( 5 ) = log 2 (0, 0625) = 4, 00 I( 6 ) = log 2 (0, 0625) = 4, 00 H(X) = 2, 13 (2.9) Tässä tapauksessa Huffman-koodaus saavuttaa entropiarajan. Näin tapahtuu aina, kun todennäköisyydet ovat joitakin luvun 2 potensseja. Kuva 2.1: Esimerkin mukainen Huffman-puurakenne. Kuvassa 2.1 on puurakenne, joka esittää esimerkin mukaista Huffman-puuta. Ensin todennäköisyydet asetetaan suuruusjärjestykseen, minkä jälkeen aletaan muodostaa puurakennetta. Jokaisella iteraatiokierroksella valitaan kaksi pienintä todennäköisyyttä ja yhdistetään ne saman puun haaraan laskemalla ne samalla yhteen. Kun puu on valmis, merkitään jokainen alas lähtevä haara nollalla ja ylös lähtevä ykkösellä. Tämän jälkeen kutakin symbolia vastaava Huffman-koodi saadaan etenemällä juuresta kyseiseen symboliin. [3] Puurakenteen mukaan voidaan muodostaa edellisen esimerkin koodisanat. Ne ovat esitetty alla. Symboli "1": koodisana = 0 Symboli "2": koodisana = 1 0 0 Symboli "3": koodisana = 1 1 1 Symboli "4": koodisana = 1 1 0

2. Teoriaa 12 Symboli "5": koodisana = 1 0 1 1 Symboli "6": koodisana = 1 0 1 0 Huffman-koodi toteuttaa käytännön kannalta merkittävän prefix-ominaisuuden. Tämä tarkoittaa, että mikään koodisana ei ole toisen koodisanan alku. Tällöin koodia purettaessa bittivirtaa luettaessa ei missään vaiheessa tule epäselvyyttä, mihin edellinen koodisana loppuu ja mistä seuraava alkaa. [3] 2.4 Aritmeettinen koodaus Aritmeettinen koodaus on, kuten Huffman-koodauskin, entropian koodausmuoto, jota käytetään tiedon häviöttömässä pakkaamisessa. On itse asiassa osoitettu, että Huffman-koodaus on erikoistapaus aritmeettisesta koodauksesta, koska aritmeettinen koodaus kykenee lähestymään optimaalisinta entropian koodausta lähemmäksi kuin Huffman. [7] Aritmeettinen koodaus oli laajasti mielletty 1970- ja 1980-luvuilla enemmänkin akateemiseksi uteliaisuudeksi kuin käytännölliseksi koodaustekniikaksi. Eräs tekijä, joka selitti aritmeettisen koodauksen myöhemmän suosion oli lähdekoodin julkaiseminen vuonna 1987 monisymboliselle aritmeettiselle koodille. Myöhemmin ymmärryksemme aritmeettisesta koodauksesta on kehittynyt, ja aritmeettinen koodaus on tullut yhdeksi suosituimmista häviöttömistä datan pakkausmenetelmistä Huffmankoodauksen rinnalle. [8] Kuva 2.2: Esimerkki aritmeettisesta koodauksesta. Oletetaan kuvan 2.2 tapauksessa, että käytössä on kolmen symbolin A, B ja C kiinteä todennäköisyysjakauma. A:n todennäköisyys on 50 %, B:n todennäköisyys

2. Teoriaa 13 on 33 % ja C:n todennäköisyys on 17 %. Oletetaan lisäksi, että rekursiosyvyys tunnetaan jokaisella askeleella. Ensimmäisellä askeleella koodataan symboli B, joka on välillä (0,5;0,83). Binääriluku 0,10x on lyhin koodi, joka edustaa väliä [0,5;0,83). "x"tarkoittaa mielivaltaista bittijärjestystä. Kuitenkin on kaksi ääritapausta: pienin x vastaa äärellistä määrää nollia, joka vastaa pienintä arvoa vastaavalla välillä. Siten pienin arvo välillä on dec(0,10) = 0,5. Suurin x vastaa äärellistä määrää ykkösiä, joka antaa luvun, joka yhtyy arvoon dec(0,11) = 0,75. Siten 0,10x vastaa väliä [0,5;0,75), joka on välin [0,5;0,83) sisällä. Nyt voidaan jättää pois nollas osa, koska kaikki välit alkavat nollalla ja voidaan myös jättää huomiotta "x"osa, koska sillä ei ole mitään väliä, mitä bittijärjestystä se edustaa, joten pysytään välillä [0,5;0,75]. [7] Otetaan vastaavanlainen esimerkki kuin entropian ja Huffman-koodauksen kohdalla. Oletetaan, että aineistossa ovat symbolit [1,2,3,4,5,6] ja niiden todennäköisyydet ovat P = [0,10;0,15;0,15;0,20;0,20;0,20], niin Symboli "1": P = 0,10 Symboli "2": P = 0,15 Symboli "3": P = 0,15 Symboli "4": P = 0,20 Symboli "5": P = 0,20 Symboli "6": P = 0,20 Näiden symbolien sisältämä informaatio on I( 1 ) = log 2 (0, 10) = 3, 32 I( 2 ) = log 2 (0, 15) = 2, 74 I( 3 ) = log 2 (0, 15) = 2, 74 I( 4 ) = log 2 (0, 20) = 2, 32 (2.10) Koko näytteen entropia on I( 5 ) = log 2 (0, 20) = 2, 32 I( 6 ) = log 2 (0, 20) = 2, 32 H(X) = 2, 55, (2.11) ja aritmeettinen koodi näille symboleille on Koodi = 1111011111111100100101011001100110010111111000000001000 (2.12)

2. Teoriaa 14 Vektorissa seq on määritelty symbolien järjestys, ja koska symboleita on yhteensä 20, saadaan length(code)/len = 55/20 = 2, 75 (2.13) Aritmeettinen koodaus näille symboleille vaatii siis 2,75 bittiä/symboli. 2.5 Differenssikoodaus Edellä kuvattu entropia antaa siis alarajan pakkaustehokkuudelle. Pakkausta on kuitenkin mahdollista tehostaa käyttämällä jotakin entropiaa pienentävää esitysmuotoa. Mikäli datasta löytyy jotain säännöllisyyksiä, voidaan niiden avulla kenties löytää jokin esitysmuoto, jossa todennäköisyydet eivät olekaan enää yhtäsuuret. Koodausjärjestelmä voi siten kokeilla esimerkiksi differenssikoodausta, jossa talletetaan ensimmäinen arvo sellaisenaan ja sen jälkeen erotus edelliseen datapisteeseen nähden. [3] Toisen asteen ennustimessa on kyse siitä, että koko signaali käydään läpi alkaen kolmannesta näytteestä ja signaalin näytearvo on edeltävä näyte, johon lisätään edeltävän ja sitä edeltävän näytteen erotus. Laskettaessa entropiaa sekä Huffmankoodin- ja aritmeettisen koodin pituutta hyödynnettiin for-silmukassa tätä periaatetta. Esimerkiksi digitaalisia kuvia pakattaessa on pakkaustulosta mahdollista parantaa pelkkään Huffman-koodaukseen verrattuna muun muassa käyttäen differenssikoodausta. Tällöin voidaan saada huomattava parannus, joka perustuu pääasiassa vierekkäisten kuvapisteiden suureen korrelaatioon. Yksinkertaisin menettely koodaa peräkkäisten pikseleiden erotuksen absoluuttisten pikseliarvojen asemasta. [3] Erotuksen laskeminen voidaan ajatella yksinkertaiseksi ennustusmenetelmäksi, viestin lähettäjä ja vastaanottaja ennustavat seuraavan pisteen lukuarvoksi samaa arvoa kun edellisellä pisteellä. Lähettäjä lähettää sitten laskemansa ennustusvirheen. Jos ennustus toimii paremmin, tulee histogrammista entistäkin kapeampi ja entropia pienenee edelleen. [3]

15 3. TOTEUTUS JA TULOKSET 3.1 Taustaa Huffman-koodauksen toteutuksesta Käyttäen Huffman-koodausta toteutettiin signaalin häviötön pakkaaminen. Tulokset, jotka saatiin MATLAB R -ohjelmiston avulla, ovat esitetty luvussa 3.3. Huffman-koodaus voidaan toteuttaa käyttämällä MATLAB R :issa funktiota huffmanenco, joka koodaa tietyn signaalin käyttäen koodisanakirja dictin kuvaamaa Huffman-koodia. Allaoleva koodiesimerkki luo satunnaisdataa sisältävän Huffmankoodisanakirjan, jolla on määrätty todennäköisyysjakauma. symbolit = [1:6]; p = [.5.125.125.125.0625.0625]; [dict,avglen] = huffmandict(symbolit,p); Ylläolevassa koodissa oletetaan siis, että datassa on kokonaisluvut 1-6 ja niiden todennäköisyydet. Huffmandict -funktio tuottaa binäärisen Huffman-koodisanakirjan käyttäen suurinta mahdollista varianssia. Se antaa ulos myös Huffman-koodisanan keskimääräisen pituuden. Omalla menetelmällä haluttiin testata differenssikoodauksen merkitystä entropialle. Tätä varten generoitiin kolme testisignaalia MATLAB R :illa. 3.2 Taustaa aritmeettisen koodauksen toteutuksesta Signaalin häviötön pakkaaminen toteutettiin tässä työssä myös hyödyntäen aritmeettista koodausta. Myös tällä menetelmällä saadut tulokset ovat esitetty seuraavassa luvussa 3.3. Aritmeettinen koodaus voidaan toteuttaa MATLAB R :issa funktiota arithenco, joka muodostaa binäärimuotoisen aritmeettisen koodin. Allaoleva koodiesimerkki selventää aritmeettisen koodauksen suorittamaa pakkausta joissakin tilanteissa. counts = [99 1]; len = 1000; seq = randsrc(1,len,[1 2;.99.01]); code = arithenco(seq,counts); s = size(code)

3. Toteutus ja tulokset 16 Entropia Huffman Aritmeettinen Entropia Huffman Aritmeettinen N = 100 N = 100 N = 100 N = 1000 N = 1000 N = 1000 Raakadata 8,15 8,18 8,32 8,38 8,41 8,45 Differenssi 5,30 5,34 5,46 3,83 3,86 3,92 Ennustus 5,81 5,83 5,95 4,33 4,37 4,41 Taulukko 3.1: Entropiat, Huffman-koodin ja aritmeettisen koodin pituudet testisignaaleille Ylläolevassa koodissa oletetaan siis, että käytössä on kahden symbolin aakkosto ja testidatassa 99 % symboleista on ykkösiä. Tuhannen symbolin koodaus tuottaa koodivektorin, jossa on huomattavasti vähemmän kuin 1000 elementtiä. Todellinen elementtien määrä koodissa vaihtelee, riippuen tietystä satunnaisjärjestyksestä muuttujassa seq. 3.3 Tulosten laskenta signaaleille Pakattaessa satunnaissignaalia edelläkuvatuilla menetelmillä, generoitiin MATLAB R - ohjelmistolla kolme testisignaalia, jotka on esitetty kuvassa 3.1. Testisignaalit generoitiin siten, että ensin luotiin 10000 näytteen mittainen normaalijakautunut satunnaissignaali, jonka keskiarvo on nolla ja keskihajonta 1. Koska satunnaissignaalin näytteet ovat kuitenkin täysin riippumattomia toisistaan, lisättiin näytteiden välistä korrelaatiota keinotekoisesti suodattamalla signaali keskiarvosuotimella, jonka pituus on N = 100 tai 1000 näytettä. Signaaleista laskettiin entropiat sekä yksittäiselle signaalille että kahden signaalin väliselle erotukselle. Näiden lisäksi laskettiin vielä ennustuksen tulokset. 0.5 Testisignaali, kun N = 100 0.4 Testisignaali, kun N = 500 0.14 Testisignaali, kun N = 1000 0.4 0.12 0.35 0.1 0.3 0.08 0.2 0.3 0.06 0.04 0.1 0.25 0.02 0 0 0.2 0.02 0.1 0.04 0.2 0 10 20 30 40 50 60 70 80 90 100 0 10 20 30 40 50 60 70 80 90 100 0.06 0 10 20 30 40 50 60 70 80 90 100 Kuva 3.1: Esimerkkisignaalit erimittaisilla suotimilla. Taulukossa 3.1 on laskettu entropiat ja keskimääräiset Huffman- sekä aritmeettisen koodin pituudet kolmelle eri signaalille. Taulukon ylimmällä rivillä on entropia, Huffman- sekä aritmeettisen koodin pituus raakadatalle sellaisenaan, sen jälkeen seuraavalla rivillä vastaavat tiedot differenssikoodatulle datalle sekä viimeisellä rivillä vastaavat tulokset toisen asteen ennustimelle. Taulukosta huomataan, että mitä pidempi suodin on, sitä pienemmäksi entropia putoaa differenssisignaalille. Pidemmän suotimen ansiosta myös satunnaissignaali

3. Toteutus ja tulokset 17 kompressoituu paremmin ennustuksen jälkeen. Entropia on pienempi sekä Huffmanja aritmeettinen koodisana lyhenee pitemmän suotimen ansiosta. Entropia on myös pienempi differenssikoodatulla datalla ja toisen asteen ennustimella, kuin raakadatalla sellaisenaan. Myös peräkkäisten näytteiden välinen autokorrelaatio tulee suuremmaksi, kun suodin on pidempi. Kun suotimen pituus on 100, autokorrelaatio on 0,9904. Vastaavasti kun suotimen pituus on 1000, autokorrelaation arvo on 0,9991.

18 4. YHTEENVETO Työssä sovellettiin entropian laskentaa, Huffman-koodausta ja aritmeettista koodausta mittaussignaalin häviöttömässä pakkaamisessa. Tulokset olivat odotetun kaltaisia, eikä niissä ilmennyt merkittäviä eroja toisiinsa nähden. Entropian perusajatus on, että mitä epätodennäköisempi jokin tapahtuma on, sitä suurempi sen informaatiosisältö on. Informaation avulla voidaan määritellä entropia, joka on keskimääräinen informaation määrä. Se antaa myös alarajan häviöttömälle pakkaustehokkuudelle. Pakkausta on mahdollista tehostaa käyttämällä jotakin entropiaa pienentävää esitysmuotoa. Differenssikoodauksessa on kyse siitä, että ensimmäinen arvo talletetaan sellaisenaan ja sen jälkeen erotus edelliseen datapisteeseen nähden. Differenssikoodatulle signaalille entropia oli huomattavasti pienempi kuin raakadatalle sellaisenaan. Huffman-koodaus on erittäin yleinen häviötön koodausmenetelmä, joka arvioi erilaisten symbolien esiintymistodennäköisyyksiä ja esittää usein esiintyvät symbolit lyhyin merkkijonoin ja vastaavasti harvemmin esiintyvät pidemmin jonoin. Tässä työssä generoitiin kolme satunnaissignaalia MATLAB R -ohjelmistolla, ja hyödynnettiin sitten Huffman-koodausta sekä aritmeettista koodausta näiden signaalien pakkaamisessa. Myös teoriaosan esimerkki havainnollisti molempia koodausperiaatteita. Aritmeettinen koodaus on entropian koodausmuoto, kuten myös Huffman-koodaus, mutta on osoitettu, että Huffman-koodaus on ainoastaan erikoistapaus aritmeettisesta koodauksesta. Aritmeettinen koodi voidaan muodostaa vain koko joukolle symboleita. Aritmeettisen koodisanan pituus on suurempi kuin Huffman-koodin. Laskettaessa entropiaa kolmelle eri satunnaissignaalille sekä näiden erotussignaaleille havaittiin, että mitä pidempi suodin on, sitä paremmin satunnaissignaali kompressoituu ennustuksen jälkeen. Tällöin myös entropia putoaa pienemmäksi ja Huffman- sekä aritmeettinen koodisana lyhenee. Lisäksi peräkkäisten näytteiden välinen autokorrelaatio tulee suuremmaksi.

19 LÄHTEET [1] Tiedon pakkaus [Internet]. [viitattu 12.2.2015], Saatavissa: http://fi. wikipedia.org/tiedonpakkaus [2] Holm, J.M., Audioformaatit versio 2.0, Tietotekniikan Cum-Laudeharjoitustyö, 1998 [Internet]. [viitattu 12.2.2015], Saatavissa: http: //mit.jyu.fi/opiskelu/seminaarit/bak/audioformaatit/5.2. Audionpakkausmenetelmiä [3] Huttunen H., Signaalinkäsittelyn menetelmät, opetusmoniste 2005:1, Tampereen teknillinen yliopisto, Signaalinkäsittelyn laitos [viitattu 12.2.2015]. [4] Entropy (information theory) [Internet]. [viitattu 12.2.2015], Saatavissa: http: //en.wikipedia.org/entropy(informationentropy) [5] Salaus [Internet]. [viitattu 20.4.2015], Saatavissa: http://fi.wikipedia.org/ wiki/salaus [6] Koodausteoria [Internet]. [viitattu 20.4.2015], Saatavissa: http: //fi.wikipedia.org/wiki/koodausteoria [7] Arithmetic coding [Internet]. [viitattu 5.5.2015], Saatavissa: http://en. wikipedia.org/wiki/arithmetic_coding [8] Moffat A.; Neal R.; Witten I.H., Arithmetic coding revisited, Data Compression Conference, 1995, DCC 95. Proceedings, IEEE Conference Publications [9] Ren W.; Wang H.; Xu L.; Cui Y., Research on a quasi-lossless compression algorithm based on Huffman coding, Transportation, Mechanical and Electrical Engineering (TMEE), 2011, International Conference, IEEE Conference Publications