• Ei tuloksia

Biosignaalien tiivistäminen.

N/A
N/A
Info
Lataa
Protected

Academic year: 2022

Jaa "Biosignaalien tiivistäminen."

Copied!
99
0
0

Kokoteksti

(1)

Timo Tossavainen

Tampereenyliopisto

Tietojenkasittelyopin laitos

Progradu -tutkielma

1.10.1999

(2)
(3)

Pro gradu -tutkielma,93sivua

Lokakuu 1999

Tiivistelma

Tutkimuksessa arvioitiin useiden eri tiivistysmenetelmien soveltuvuutta Helsin-

gin yliopistollisen keskussairaalan otoneurologisessa laboratoriossa mitattuihin sil-

manliikesignaaleihin.Laaketieteellisetmittauksethalutaansailyttaajatkotutkimus-

ta varten ja biosignaalit vievat muihin mittauksiin verrattuna paljontilaa. Tallen-

nusresurssien tarvetta voidaan vahentaa tiivistamalla tietoa. Tiedon tiivistaminen

voidaan tehda haviottomasti, jolloin alkuperainen tieto sailyy sellaisenaan, tai ha-

viollisesti, jolloin alkuperaisesta tiedosta sailytetaan jokin approksimaatio. Alueen

aiempitutkimusonkeskittynyt sydansahkokayrien tiivistamiseen;tietaakseni tama

tutkimuson ensimmainen,jokaontehty silmanliikesignaalientiivistamisesta.

Haviottomista menetelmista tutkittiin universaalikoodausta, sanakirjamenetel-

mia LZ77 ja LZW, Human-koodausta ja aritmeettista koodausta. Parhaat tulok-

set saavutettiin aritmeettisella koodauksella ja tutkimuksen aikana kehitetylla uu-

dellaparametroituihinuniversaalikoodeihinperustuvallamenetelmalla.Haviollisista

menetelmista tutkittiin skalaarikvantisointia, dierentiaalista pulssikoodimodulaa-

tiota ja muunnoskoodausta; muunnoskoodauksessa tiivistamiseen kaytettiin kyn-

nystamistaja tutkimuksen aikanakehitettya uuttakvantisointimenetelmaa.Haviol-

lisista menetelmista parhaat tulokset saavutettiin muunnoskoodauksella. Uudella

kvantisointimenetelmallasaavutettiinselvastiparempiatuloksiakuinkynnystamisel-

la. Tutkimuksessa saavutetut tulokset seka haviollistenetta haviottomienmenetel-

mien tapauksessa ovat samaa luokkaa ja osittain parempia kuin aiemmissa biosig-

naalien tiivistamistakoskevissa tutkimuksissa ilmoitetuttulokset.

(4)
(5)

2 Tutkimusongelma . . . 2

3 Tiedontiivistaminen . . . 9

3.1 Aakkostot, merkit ja merkkijonot . . . 10

3.2 Informaatioteoriaa . . . 11

3.3 Universaalikoodaus . . . 17

3.4 Juoksunpituuden koodaus . . . 22

3.5 Shannon-Fano-koodaus . . . 22

3.6 Human-koodaus . . . 23

3.7 LZSS-koodaus . . . 25

3.8 Ziv-Lempel-koodaus . . . 27

3.9 Aritmeettinen koodaus . . . 30

4 Signaalien tiivistaminen . . . 36

4.1 Signaalinkasittelynteoriaa . . . 36

4.2 Signaalien tiivistamisesta. . . 41

4.3 HaviotonDPCM . . . 43

4.4 Kvantisointi . . . 52

4.5 Haviollinen DPCM . . . 55

4.6 Muunnoskoodaus . . . 56

5 Tuloksia . . . 70

5.1 Testien toteutuksesta . . . 70

5.2 Haviottomatmenetelmat . . . 70

5.3 Haviottomienmenetelmien yhteenveto . . . 73

5.4 Haviolliset menetelmat . . . 74

5.5 Haviollisten menetelmienyhteenveto . . . 84

6 Yhteenveto . . . 89

Viitteet . . . 90

(6)

KiitoksetJennyjaAnttiWihurinrahastolle,opettajillenijatyontarkastajille.

(7)

la.Mittauksetpyritaansailyttamaanjatkotutkimuksiavarten.Biosignaalitovatmit-

tauksia, joissa potilaasta mitataan jotain ajan myota muuttuvaa suuretta. Tunne-

tuimpia niista ovat sydansahkokayra, EKG, ja aivosahkokayra, EEG. Tyypillises-

ti biosignaalit sisaltavat muihin mittauksiin verrattuna enemman informaatiota ja

vievat tasta syysta enemman tiedonsiirto- ja tallennuskapasiteettia. Tiivistamisen

avullavoidaan informaatioesittaa pienemmassatilassa japienentaatiedonsiirto- ja

tallennusresurssien tarvetta.

Tassa tutkimuksessa tutkittiinseka haviollistenetta haviottomien tiivistamisen

menetelmien soveltuvuutta Helsingin yliopistollisen keskussairaalan otoneurologi-

sessalaboratoriossamitattuihinsilmanliikesignaaleihin.Silmanliikesignaalienavulla

tutkitaanmm.sisakorvaanliittyviatasapainosairauksia;diagnoosiatehtaessaniiden

mittaaminenpotilailtaonvakiotoimenpide.

Tiedontiivistamisenmenetelmatvoidaanjakaatiivistetystadatastarekonstruoi-

dundatanlaadunperusteellahaviottomiinjahaviollisiinmenetelmiin.Haviottomat

menetelmat sailyttavatdatan sellaisenaan ja haviolliset tuottavat jonkin approksi-

maation datasta, jossa pyritaansailyttamaan sovelluksen kannalta tarkeat ominai-

suudet.

Tutkimuksessa kasiteltiin tunnetuimmathaviottomatmenetelmat ja kehitettiin

yksi uusi parametroituihin universaalikoodeihin perustuva menetelma. Uusi me-

netelma oli suorituskyvyltaan samalla tasolla parhaiden tunnettujen menetelmien

kanssa. Aiempiin biosignaaleiden tiivistyksesta saatuihin tuloksiin verrattuna tu-

lokset olivat vertailukelpoisia ja joissain tapauksissa hieman parempiakin. Parhai-

ten toimivillamenetelmillasaatiinsignaalienvaatimatilapienennettya keskimaarin

hiemanalle puoleenalkuperaisesta.

Haviollisistamenetelmistasovellettiintunnettuja skalaarikvantisointia,dieren-

tiaalista pulssikoodimodulaatiota ja muunnoskoodausta. Parhaat tiivistystulokset

saavutettiinmuunnoskoodauksella,jonkaosanatarkasteltiinmyosaallokkeita.Muun-

noksentiivistamisenmenetelmistatestattiinkynnystamistajakehitettiinuusikvan-

tisointimenetelma muunnoksen koodaamiseen. Uudella menetelmalla saavutettiin

selvastiparempia tuloksia kuin kynnystamisella.

(8)

pauksessa tunnetuimmat ovat sydansahkokayra, EKG, ja aivosahkokayra, EEG.

Biosignaalientiivistamistaontutkittupaljon,muttatutkimusonkeskittynytlahinna

EKG-signaalientiivistamiseen.Sentyypillisimmatsovellukset ovatsignaalienarkis-

tointi jatkotutkimusta varten ja tiedonsiirtokustannusten vahentaminen. Joissakin

tapauksissamittaustenarkistointisaattaaollamyoslainvaatimaa.Jaladeddineetal.

[18]esittavatyhteenvedonaiemmastatutkimuksestaEKG:ntapauksessajaAntoniol

ja Tonella [2]kasittelevatEEG:n tiivistamista.

Tassa tutkimuksessa kartoitettiin tiivitysmenetelmien toimivuutta uudentyyp-

pisten biosignaalien tapauksessa. Tutkimusmateriaalina oli 69 Helsingin yliopistol-

lisen keskussairaalan otoneurologisessalaboratoriossamitattuasilmanliikesignaalia.

Signaaleitaolineljaaerityyppia:22sakaadia,18sinimuotoistasignaalia,15vestibulo-

okulaaristareeksia ja 14 nystagmusta.

Signaalit mitataan kolmella tavallisella ihoelektrodillapotilaan ohimoilta ja ot-

salta. Sakaadin ja sinimuotoisensignaalin tapauksessa potilasta pyydetaan seuraa-

maan seinalle ilmestyvaa laservalotaplaa katseellaan. Sakaadin tapauksessa tapla

hyppiinopeasti vaakatasossa pisteesta toiseenneljaneripisteen valilla.Sinimuotoi-

sen signaalin tapauksessa piste liikkuu sulavasti vaakatasossa. Kummassakaan ta-

pauksessapotilaaneipitaisiollamahdollistaarvatapisteenliiketta,koskasakaadissa

valotaplanliikkumisenajatjakohteetonsatunnaistettujasinimuotoiseensignaaliin

on sekoitettu kaksi eri taajuista siniaaltoa. Vestibulo-okulaarisen reeksin mittaa-

miseksi potilasta pyydetaan pitamaan katseensa yhdessa paikassa ja kaantamaan

paataansivulta toiselle kuullessaan piippauksen. Nystagmus saadaanaikaan laitta-

malla kylmaatai kuumaailmaa potilaantoiseen korvakaytavaan. [19]

Esimerkkejasignaaleistaonkuvissa2.1-2.4.Jokaisessakuvassaonkymmenense-

kunninmittaisiapatkiamittauksista;testiaineistossamittaustenpituusoli20,60tai

80 sekuntia. Kuvissa signaalin liike ylospain vastaa silmien liiketta oikealle ja liike

alaspainsilmienliikettavasemmalle;vaaka-akselionaikajapystyakselikatseenkul-

ma vaakasuunnassa. Kuvassa 2.1on sakaadimittauksia; kuvan alin signaali on tut-

kimuksen kohinaisin.Kuvassa 2.2 on sinimuotoisiasignaaleja, joissa on vainvahan

kohinaa. Kuvassa 2.3 on vestibulo-okulaarisen reeksisignaalin mittauksia. Mitat-

taessapotilassaattaarapyttaasilmiaan,jokaaiheuttaa hairioita;kuvan2.3toisessa

signaalissaon kaynyt juuri nain. Piikitmittauksessa ovatsilmanrapytyksia; potilas

(9)

signaalitovatnystagmusmittauksia.

Silmanliikesignaaleitakaytetaanapuna tasapainosairauksien diagnoosissa. Tun-

netuinnaistaonluultavastiMenierentauti.Diagnoosiavartensignaaleistamitataan

mm. silmanliikkeidennopeutta ja tarkkuutta. [19]

Signaalitonnaytteistetty400 Hz:nnaytteenottotaajuudellajanaytteenottoreso-

luutionaonkaytetty13bittia.Arvioitusignaali-kohina-suhdeonnoin32dB.Hairiota

mittauksiin aiheuttavatpaaasiassa kasvojen lihasten sahkoinen toiminta ja verkko-

virta. Verkkovirran aiheuttama hairio nakyy mitatun signaalin spektrissa 50 Hz:n

ja sen kanssa harmonisessa suhteessa olevien taajuuksien kohdalla. Sita ei voida

suodattaa pois, koska osa tarvittavasta informaatiosta on samalla kaistalla. Osa

korkeammantaajuudenkohinastasuodatetaan yleensa poisennen analyysia.Tassa

tutkimuksessa tutkittiinsekasuodatettujaettasuodattamattomiasignaaleita. Suo-

datukseen kaytettiin muotoa

y(n)=Med (

1

N N

X

i=1

x(n i);x(n);

1

N N

X

i=1

x(n+i) )

(2.1)

olevaahybridimediaanisuodatinta,jonkaonosoitettusailyttavansignaalinlaaketie-

teellisesti kiinnostavat parametrit hyvin [20, 21, 22]. Suodatuksen vaikutusta sig-

naaleihinon havainnollistettukuvassa 2.5.

(10)

-4000 -3000 -2000 -1000 0 1000 2000 3000 4000

0 500 1000 1500 2000 2500 3000 3500 4000 Anvasa1d.dat

-4000 -3000 -2000 -1000 0 1000 2000 3000 4000

0 500 1000 1500 2000 2500 3000 3500 4000 Havasa01.dat

-4000 -3000 -2000 -1000 0 1000 2000 3000 4000

0 500 1000 1500 2000 2500 3000 3500 4000 Kovasa1d.dat

-4000 -3000 -2000 -1000 0 1000 2000 3000 4000

0 500 1000 1500 2000 2500 3000 3500 4000 Pgvasa02.dat

Kuva 2.1: Sakaadeja.

(11)

-4000 -3000 -2000 -1000 0 1000 2000 3000 4000

0 500 1000 1500 2000 2500 3000 3500 4000 Ausini01.dat

-4000 -3000 -2000 -1000 0 1000 2000 3000 4000

0 500 1000 1500 2000 2500 3000 3500 4000 Hasi3d.dat

-4000 -3000 -2000 -1000 0 1000 2000 3000 4000

0 500 1000 1500 2000 2500 3000 3500 4000 Hisi1d.dat

-4000 -3000 -2000 -1000 0 1000 2000 3000 4000

0 500 1000 1500 2000 2500 3000 3500 4000 Risi5d.dat

Kuva2.2: Sinimuotoisiasignaaleja.

(12)

-4000 -3000 -2000 -1000 0 1000 2000 3000 4000

0 500 1000 1500 2000 2500 3000 3500 4000 Abhe1d.dat

-4000 -3000 -2000 -1000 0 1000 2000 3000 4000

0 500 1000 1500 2000 2500 3000 3500 4000 Elhe1d.dat

-4000 -3000 -2000 -1000 0 1000 2000 3000 4000

0 500 1000 1500 2000 2500 3000 3500 4000 Hvhe1d.dat

-4000 -3000 -2000 -1000 0 1000 2000 3000 4000

0 500 1000 1500 2000 2500 3000 3500 4000 Lshe1d.dat

Kuva2.3: Vestibulo-okulaarisiareekseja.

(13)

-4000 -3000 -2000 -1000 0 1000 2000 3000 4000

0 500 1000 1500 2000 2500 3000 3500 4000 Gsny1d.dat

-4000 -3000 -2000 -1000 0 1000 2000 3000 4000

0 500 1000 1500 2000 2500 3000 3500 4000 Hany4d.dat

-4000 -3000 -2000 -1000 0 1000 2000 3000 4000

0 500 1000 1500 2000 2500 3000 3500 4000 Hkny1d.dat

-4000 -3000 -2000 -1000 0 1000 2000 3000 4000

0 500 1000 1500 2000 2500 3000 3500 4000 Mtny1d.dat

Kuva2.4: Nystagmuksia.

(14)

-4000 -3000 -2000 -1000 0 1000 2000 3000 4000

0 500 1000 1500 2000 2500 3000 3500 4000 Pgvasa02.dat

-4000 -3000 -2000 -1000 0 1000 2000 3000 4000

0 500 1000 1500 2000 2500 3000 3500 4000 Pgvasa02.dat.f

Kuva2.5: Alkuperainen signaali ja signaalihybridimediaanisuodatuksen jalkeen.

(15)

ton merkeista,mahdollisimmantiiviissamuodossa. DataD koodataanpienempaan

muotoon(D),jokaonpystyttavapurkamaantakaisinalkuperaiseksidataksi Dtai

joksikin riittavanhyvaksiapproksimaatioksisiita.Tarkeimmattiedon tiivistamisen

edut ovat tiedontallennuskapasiteetin tarpeen pieneneminen ja tiedonsiirtokapasi-

teetin pienentynyt kulutus. [34]

Maaritelma 3.0.1 Tiivistyssuhde (compression ratio) CR mittaa tiivistyksen te-

hokkuutta. Se maaritellaankaavalla

CR= S

D

S

(D)

; (3.1)

missaS

D

ondatankokojollakinyksikollamitattunajaS

(D)

tiivistetyndatankoko

samalla yksikollamitattuna.

Kaikkeatietoa ei voida tiivistaa, mutta lahes kaikessa datassa onredundanssia,

jotatiivistysalgoritmitvoivathyodyntaatiivistamisessa.Algoritmintehokkuus riip-

puupaljondatanluonteesta.Ontodennakoista,ettajollekindatallespesialgoritmi

tuottaa paremman tuloksen kuin geneerinen algoritmi. Teoreettisen pohjan tiedon

tiivistamiselle antaa Shannonin informaatioteoria [33], jonka menetelmillavoidaan

tutkia, kuinka paljontietoa voidaan teoriassatiivistaa.

Tiedontiivistysalgoritmitvoidaan jakaakahteenluokkaan puretun datanlaadun

perusteella. Haviottomilla (lossless, noiseless) algoritmeillapurettu data on ident-

tinen alkuperaisen datan kanssa; haviollisilla (lossy) algoritmeilladekoodattu data

on jokin approksimaatio alkuperaisesta datasta.

1

Toinen mahdollinen algoritmien

jako on niiden toiminnan perusteella: staattiset algoritmit toimivat aina samoin ja

dynaamiset mukautuvat datan paikallisiinvaihteluihin.

Haviottomia tiivistysmenetelmia kutsutaan yleisnimikkeella entropian koodaus.

Entropian koodauksessa ontavoitteena vahentaa lahetettyjen merkkien maaraa si-

ten, etta alkuperainen data pysyy muuttumattomana. Alkuperaisen datan sailymi-

nen sellaisenaanonperusedellytysmonillesovelluksille;esimerkiksiohjelmientiivis-

tyksessayhdenkinbitinvirhevoijohtaasiihen,ettaohjelmastatuleekayttokelvoton.

Entropian koodaajia kaytetaan myos haviollisten menetelmien osana. Haviollisten

1

(16)

menetelmien tavoitteena on karsia sovelluksen kannalta merkityksetonta informaa-

tiota.

Entropian koodauksen menetelmista tunnetuimpia ovat kokonaislukujen erilai-

siin esityksiin perustuvat universaalikoodit [7, 38], sanakirjamenetelmat LZ77 [44]

ja LZW [41], optimaalisen etuliitekoodin tuottava Human-koodaus ja viime ai-

koina paljon huomiota saanut informaatioteoreettisesti optimaalinen aritmeettinen

koodaus [10, 16,27, 31, 43]. Osa koodaajista ottaa huomioonmerkkien keskinaisen

jarjestyksen saannonmukaisuudet ja yrittaamallintaa lahdettakoodauksen aikana.

Yleensaalgoritmeistatarkastellaantiivistyssuhteenlisaksiniidentuottamankoo-

din virheensietokykyaja viivetta,ts.tarvitseekoalgoritmiuseampia syotteenmerk-

keja koodin muodostamiseksi vai voiko se lahettaa koodisanan heti, kun syotteen

merkki tulee koodattavaksi. Algoritmin tehokkuus on myos tarkeaa, varsinkin jos

sovellus on reaaliaikainen(esim. musiikintiivistaminen).

Tassaluvussakasitellaanperinteistatiedontiivistamisenteoriaajayleisiahaviot-

tomia algoritmeja.

3.1 Aakkostot, merkit ja merkkijonot

Tiivistysalgoritmikuvaasanomanlahdeaakkostoltakohdeaakkostolle.Jottasanoma

voitaisiin rekonstruoida tiivistetysta tiedosta, on kuvauksen oltava injektio, ts. jo-

kainen merkkijono kuvautuuvainyhdelle kohdeaakkoston merkkijonolleja mitkaan

kaksi erilahdeaakkostonmerkkijonoa eivatkuvaudu samallekohdeaakkostonmerk-

kijonolle.[34]

Maaritelma 3.1.1 Aakkosto (alphabet) on



aarellinen joukko fa

0

;a

1

;:::;a

N g,

joka sisaltaa ainakin yhden alkion. Aakkoston alkioitaa

i

kutsutaanmerkeiksi.

Tyypillinentiedontiivistyksessakaytettyaakkostoonbinaarinenaakkostof0;1g.

Maaritelma 3.1.2 Merkkijono (string) ! yli aakkoston on jono aakkoston

merkkeja.

!=a

1 a

2 :::a

m

; a

i

2; i=1;:::;m: (3.2)

Merkkijonon ! pituutta merkitaan j!j =m. Merkkijonojen x= x

i

; i=1;:::;m ja

y=y

j

; j =1;:::;n katenointiamerkitaan:

xy=x :::x y :::y : (3.3)

(17)

Katenoidunmerkkijononpituusonjxyj=jxj+jyj.Lisaksimaaritellaantyhjamerk-

kijono,jossaeioleyhtaanmerkkia.Kaikkienaakkostonmerkkijonojen joukkoa,

mukaanlukien , merkitaan

.

Sanoma on



aarellinen merkkijono yli lahdeaakkoston. Merkkijonoja vertaillaan

toisiinsa etu- ja loppuliitteidenavulla.

Maaritelma 3.1.3 Merkkijono ! on merkkijonon x etuliite (prex) ! @ x, jos

x=!y,jollekin y2

:

Maaritelma 3.1.4 Merkkijono ! on merkkijonon x loppuliite (suÆx) ! A x, jos

x=y!,jollekin y2

:

3.2 Informaatioteoriaa

Claude.E.Shannoninalunperinvuonna1948julkaisemastakommunikaatiotakoske-

vasta teoriasta[33] on muodostunut tiedontiivistyksenteoreettinen perusta. Teok-

sessaan han kasitteli yleista kommunikaatiojarjestelmaa (kuva 3.1), joka koostuu

viidesta osasta:

Informaation lahde, joka tuottaa sanoman taisanomia, jotka valitetaan koh-

teelle.

Lahetin, joka muuttaa sanomansignaaliksi,jokavoidaan lahettaakanavalla.

Kanava, jota pitkin signaali valittyy lahettimesta vastaanottimeen. Kanava

voiollakohinainen.

Vastaanotin, joka tekee lahettimeen nahden kaanteisen operaation, eli

konstruoisanomansignaalista.

Kohde, jolle sanomaon tarkoitettu.

Sanomavalitaanmahdollistensanomien joukosta. Niilla voi ollamerkitys;sanomat

voivatviitatamaailmanolioihintaikasitteisiin.Shannoninteoriaeikuitenkaankoske

kommunikaation semanttista puolta.

Kommunikaationongelmana on rekonstruoida jossain paikassa sanoma,jokaon

valittu muualla. Sanoma olisi pystyttava lahettamaan mahdollisimman taloudelli-

(18)

Lähde Vastaanotin Kohde

Kohinalähde

Lähetin Kanava

Kuva 3.1: Yleinen kommunikaatiojarjestelma.

Informaation lahde tuottaasanomanmerkki merkilta.Merkit voidaan valitaeri

todennakoisyyksilla ja merkin valintavoi riippua edellisistamerkeista.Yleensapu-

hutaan lahteen tuottamista tapahtumista.

Jos aiemmilla tapahtumilla ei ole vaikutusta seuraavaan tapahtumaan puhu-

taan 0. asteen lahteesta. Tallaisella lahteella jokaisen tapahtuman todennakoisyys

onainasamaelitapahtumatovatkeskenaantilastollisestiriippumattomia.Tallaisen

lahteen kuvaamiseen riittaa sen todennakoisyysjakauma. Tilastollisesti riippumat-

tomallelahteelle on yhdistetylle tapahtumalle voimassa

p(i;j)=p(i)p(j): (3.4)

Kun tapahtumat ovat toisistaantilastollisestiriippuvia kaytetaan usein lahteen

mallina Markovin prosessia [33]. Markovin prosessilla on



aarellinen joukko tiloja,

joista voidaan siirtya toisiin tiloihin eri todennakoisyyksilla; jokainen tilasiirtyma

tuottaa tapahtuman. Esimerkiksi ensimmaisen asteen Markovin prosessilla tapah-

tuman todennakoisyys riippuuvainedellisesta tapahtumasta. Talloinonvoimassa

p(i;j)=p(jji)p(i): (3.5)

Kyseisessa mallissa tapahtumaketjun x

1

;x

2

;x

3

;x

4

todennakoisyys voidaan laskea

seuraavasti:

p(x

1

;x

2

;x

3

;x

4

)=p(x

2

;x

3

;x

4 jx

1 )p(x

1

) (3.6)

=p(x

3

;x

4 jx

2 )p(x

2 jx

1 )p(x

1

) (3.7)

=p(x

4 jx

3 )p(x

3 jx

2 )p(x

2 jx

1 )p(x

1

): (3.8)

(19)

0.5 0.5

0.3 0.2 C

B

A 0.5

0.2 0.4

0.6 C

0.5 A

0.3 B C

C

B

B

Kuva 3.2: Markovin prosesseja.

Y

p(YjX) A B C

A 0 0.4 0.6

X B 0.5 0.3 0.2

C 0 0.5 0.5

Taulukko 3.1: Kuvan 3.2oikeanpuoleisen graanmatriisi.

Esimerkki 3.2.1 Markovinprosessejahavainnollistetaanuseingraaenavulla.Ku-

vassa 3.2 on kuvattu kaksi erilaista Markovin prosessia. Vasemmalla oleva graa

kuvaa 0. asteen ja oikealla oleva 1. asteen Markovin prosessia. Vasen graa vas-

taa lahdetta, jonka tapahtumien todennakoisyydet ovat p(X = A) = 0:5, p(X =

B) = 0:2 ja p(X = C) = 0:3. Oikeanpuoleinen graa voidaan kuvata ehdollisten

todennakoisyyksien taulukkona (taulukko 3.1).

Sanomansisaltamainformaatioriippuusentodennakoisyydestamahdollistensa-

nomienjoukossa. Sanomista kaytetaanmyosnimitystatapahtuma.

Maaritelma 3.2.1 JosX ontapahtuma, jonkamahdollisetvaihtoehdotovatfx

i g,

niintapahtumanX =x

i

informaatio I on

I(X =x

i

)= log

k

p(X =x

i

); (3.9)

missak voidaan valita halutunyksikon mukaan. Kun k =2 informaationmittayk-

(20)

jolloinpuhutaan luonnollisista yksikoista (naturalunits tai \nats").[33]

Esimerkiksi yksi desimaaliluku, joka voi saada kymmenen eri arvoa ja jokaisen

samalla todennakoisyydella, sisaltaanoin 3.32 bittiainformaatiota. [33]

Oletetaan, etta tiedetaan vaintapahtumientodennakoisyydet p

i

. Entropia mit-

taa tallaiseen tilanteeseen liittyvaa epavarmuutta tai valintaa. Entropian mitan

H(p

1

;p

2

;:::;p

n

) ontaytettava seuraavatvaatimukset:

1. H onjatkuva.

2. Joskaikki p

i

ovatyhtasuuria,p

i

=1=n,onH monotonisestikasvavan:n funk-

tio.

3. Josvalintajaetaanosiin,niinyhdistettyentropiaonosienentropianpainotettu

summa.

Jaetaan tapahtumat p

i

= f1=2;1=3;1=6g kahteen osaan f1=2g ja f1=3;1=6g.

Talloin

H

1

2

; 1

3

; 1

6

=H

1

2

; 1

2

+ 1

2

H(1)+ 1

2 H

2

3

; 1

3

: (3.10)

Shannonin [33] mukaan ainoa ehdot toteuttava funktioon muotoa

H = K

n

X

i=1 p

i logp

i

; (3.11)

missa K on positiivinen vakio, joka valitaan tassa ykkoseksi. Entropia H on nolla,

jos ja vain jos yhden tapahtuman todennakoisyys on yksi (muiden todennakoisyys

on talloin nolla). Intuitiivisesti tama on selvaa, koska varma lopputulos ei sisalla

epavarmuutta. Jos tapahtumia on n kappaletta, niin maksimissaan entropia on

logn, kun kaikkien tapahtumien todennakoisyydet ovat yhta suuria. Talloin tilan-

teeseen liittyy eniten epavarmuutta. Jokainen muutos, joka tasoittaa lahteen to-

dennakoisyysjakaumaa lisaaentropiaa.

Maaritelma 3.2.2 JosX ontapahtuma, jonkavaihtoehdotovatfx

i

g,ja tapahtu-

mat eivat riipuedellisista tapahtumista,niin X:nentropia on

H(X)= X

p(X =x

i

)logp(X =x

i

); (3.12)

(21)

missalogaritminkantaluku valitaanmittayksikon mukaan. [33]

Maaritelma 3.2.3 Olkoot X ja Y tapahtumia, joista X:n vaihtoehdot ovat fx

i g

ja Y:n vaihtoehdot fy

j

g. Yhdistetyn tapahtuman X;Y entropiaon talloin

H(X;Y)= X

i;j

p(X =x

i

;Y =y

j

)logp(X =x

i

;Y =y

j

): (3.13)

TapahtumienX ja Y entropia saadaan

H(X)= X

i;j

p(X =x

i

;Y =y

j )log

X

j

p(X =x

i

;Y =y

j

); (3.14)

H(Y)= X

i;j

p(X =x

i

;Y =y

j )log

X

i

p(X =x

i

;Y =y

j

): (3.15)

Voidaanosoittaa, etta

H(X;Y)H(X)+H(Y): (3.16)

Yhtasuuruus onvoimassavainsilloin,kuntapahtumatX jaY ovatriippumattomia

elip(X =x

i

;Y =y

j

)=p(X =x

i

)p(Y =y

j ).[33]

Maaritelma 3.2.4 Joskaksitapahtumaaeivatoleriippumattomia,jollointodenna-

koisyys Y:n arvolley

j

, jos X:n arvo tiedetaan x

i

:ksi,on

p(Y =y

j

jX =x

i )=

p(X =x

i

;Y =y

j )

P

j

p(X =x

i

;Y =y

j )

: (3.17)

TapahtumanY ehdollinen entropia, jos X tunnetaan, H(YjX) maaritellaanpaino-

tettunakeskiarvonaY:nentropioistakaikillaeriX:narvoilla.Painotuksenakaytetaan

yhdistetyn tapahtumanX =x

i

;Y =y

j

todennakoisyyttaeli

H(YjX)= X

i;j

p(X =x

i

;Y =y

j

)logp(Y =y

j

jX =x

i

)=H(X;Y) H(X):

(3.18)

Ehdolliselleentropiallevoidaan osoittaa,etta onaina voimassa

H(Y)H(YjX): (3.19)

(22)

Markovin prosessin entropia voidaan laskeakaavasta

H = X

i P

i H

i

= X

i;j P

i

p(Y =y

j jS =s

i

)logp(Y =y

j jS =s

i

); (3.20)

missa P

i

on tilan S = s

i

todennakoisyys, H

i

tilan S = s

i

entropia ja Y on tapah-

tuma, jonka mahdollisuudetovat kaikki tilasiirtymattilasta s

i

. Markovin prosessin

entropia saadaan siis laskemalla painotettu keskiarvo tilojen entropiasta kayttaen

painotuksena tilan todennakoisyytta.[33]

Datakoostuu informaatiostaja redundanssista.Redundanssionnimensamukai-

sesti toistoa, joka voidaan eliminoida datasta ja myohemmin lisata takaisin datan

muuttumatta.Informaatiotaeivoidapoistaadatastamuuttamattasita.Haviottomat

tiivistysmenetelmatovat redundanssia vahentavia; ne eivat siis vahenna informaa-

tiota.Haviolliset menetelmatvahentavatsekaredundanssiaettainformaatiota.[25]

Maaritelma 3.2.5 Lahteen, joka voituottaa n tapahtumaa, redundanssi R on

R=logn H; (3.21)

missa H onlahteen entropia. [33]

Redundanssi on siis maksimientropian ja todellisen entropian erotus. Lahteella ei

oleredundanssia kun entropia on maksimissaan eliH =logn.

Maaritelma 3.2.6 Lahteensuhteellinenredundanssi Z onlahteenredundanssin ja

maksimientropian suhde:

Z = R

logn

=1 H

logn

: (3.22)

Lynchin [25] mukaan entropian avulla saadaantiivistyssuhteen CR ylarajaksi

CR

max

= logn

H

: (3.23)

Erilaisia lahteenmalleja,yleensatilastollisestiriippumaton 0.asteenlahdettaja

1. asteenMarkovin prosessia, kaytetaantiivistysmenetelmien testaamiseen.[25]

Maksimaalisen haviottoman tiivistyksen saavuttamiseksi voidaan lahteen kayt-

taytyminenmuuttaaMarkovinprosessi-mallistatilastollisestiriippumattomaksimal-

(23)

timaalisellakoodauksellakoodisanojenkeskipituus` onsama kuinlahteen entropia

H. [25]

Informaatioteorian mukaan entropia on siis maaritelty suhteessa tilastolliseen

malliin. Usein lahteen todellista mallia ei tunneta, joten se joudutaan jollain me-

netelmalla konstruoimaan empiirisesta aineistosta. Mita parempi lahteen mallion,

sita pienempi onlahteen entropia suhteessa malliin;toisaalta monimutkainen malli

vie enemmantilaatiedostosta.

3.3 Universaalikoodaus

Universaalikoodauksessa ei tarvitse tuntea lahteen jakaumaa, vaan riittaaetta voi-

daanjarjestaatapahtumattodennakoisyyksienmukaanlaskevaanjarjestykseen.Koo-

dauksessa tapahtuman jarjestysnumero koodataan jollain yksinkertaisella koodilla.

Universaalikoodauksen tuottamien koodisanojenkeskipituudelle ` on voimassa

`c

1 H+c

2

; (3.24)

missaH onlahteenentropiajac

1 jac

2

ovatvakioita.Koodiasanotaanasymptootti-

sestioptimaaliseksi,josc

1

=1.Silloinkoodisanojenkeskipituus`lahestyyentropiaa

entropian kasvaessa. Tassa esitetyt koodit ovat staattisia ja yksiselitteisesti puret-

tavia. Staattisuudella tarkoitetaan sita, etta samalle merkille tuotetaan aina sama

esitys.Monienkoodienyksikasitteisyysperustuu siihen,ettakoodisananpituussaa-

daanjotenkinselvillesiitaitsestaan.Esimerkiksi koodinalussavoiollasarjaykkosia

janiidenjalkeennolla;tamanperusteella voidaanpaatellakoodinloppuosanpituus.

[7]

Koodien toteutus on laskennallisesti tehokasta ja varsinkin parametroituja uni-

versaalejakoodejasoveltamallasaadaanhyviatiivistystuloksia.Esimerkiksi Howar-

din jaVitterin progressiivisessaFELICS-kuvantiivistysalgoritmissa[17] onkaytetty

Golomb-,Rice- jaSubexponential-koodeja,joilleyritetaanennustaaparas paramet-

rinarvo.

3.3.1 -koodi

Elias [7] esittaa koodeja, jotka sopivat epatasaisesti jakautuneille kokonaisluvuille.

(24)

siten, etta 0 ontodennakoisin. Luvun xkoodi(x) muodostetaan seuraavasti:

(x)= n

z }| {

1:::10 x

0

z }| {

x

n 1 :::x

1

; (3.25)

missa n =0, kun x=0, ja n =b log

2

xc+1, kun x>0, ja x 0

luvun x binaariesitys

ilman ylinta 1-bittia. Saatu koodi on lyhyempi pienille kokonaisluvuille ja pidempi

suurille. Taulukossa 3.2 on esitetty -koodit luvuille 0:::14; pisteella osoitetaan

koodin loogistenosien valit.

x (x) x (x) x (x)

0 0 5 111.0.01 10 1111.0.010

1 1.0 6 111.0.10 11 1111.0.011

2 11.0.0 7 111.0.11 12 1111.0.100

3 11.0.1 8 1111.0.000 13 1111.0.101

4 111.0.00 9 1111.0.001 14 1111.0.110

Taulukko3.2: Lukujen 0:::14-koodit.

3.3.2 Æ-koodi

ToinenEliasinkoodi,Æ,onasymptoottisestioptimaalinen;semuodostetaankoodaa-

mallaensin luvunbinaariesityksenpituus-koodillajasen jalkeenluvun binaariesi-

tys ilman ylinta 1-bittia:

Æ(x)= ( blog

2 (x)c +1)

z }| {

n :::

1 x

0

z }| {

x

k :::x

1

; (3.26)

missa x 0

onluvun xbinaariesitys ilman ylinta 1-bittia.[7]

3.3.3 Golomb-koodi

Golomb-koodionsaanutnimensakehittajaltaanS.W.Golombilta.HowardinjaVit-

terin [17] mukaan se toimiihyvin eksponentiaalisille jakaumille;lisaksisitavoidaan

saataaparametrinavullasopiviksierilaisillejakaumille.Golomb-koodiGol(x;k)pa-

rametrillak luvulle x muodostetaan seuraavasti:

Gol(x;k)= n

z }| {

1:::10 y

z }| {

y :::y ; (3.27)

(25)

missa n = bx=kc ja y on luvun x mod k esitys tavalla, jossa saastetaan bitteja,

kun se on mahdollista. Koska x:n jakojaannos k:n suhteen on aina k:ta pienempi,

voidaan useimmissa tapauksissa kayttaa lukujen 0;:::;k 1 esittamiseen vaihtele-

vanmittaista koodia, jolla koodisanojen keskipituus on pienempi kuin pienimmalla

kiinteallabittien maarallasaavutettava dlog

2 ke.

3.3.4 Rice-koodi

Howardin ja Vitterin [17] mukaan R.F. Ricen kehittama Rice-koodi toimii myos

hyvin eksponentiaalisesti jakautuneille luvuille. Sen etuna -koodiin on se, ettei

koodin pituus kasva yhta nopeasti. Rice-koodi on parametroitu, joten se voidaan

sovittaalahteen jakaumallesopivaksi.ItseasiassaRice-koodionGolomb-koodineri-

koistapaus, jossaGolomb-koodinparametrionrajattukahdenpotenssiksi.Luvun x

Rice-koodiR ice(x;k)parametrilla k (k 0)saadaan seuraavasti:

R ice(x;k)= m

z }| {

1:::10 y

z }| {

y

k :::y

1

; (3.28)

missa m = bx=2 k

c ja y on luvun x mod2 k

binaariesitys k bitilla. Rice-koodi on

Golomb-koodia yksinkertaisempi siina, etta etuosan 1-bittien jalkeen on aina va-

kiomaara bitteja; toisaalta Golomb-koodissa on tiheampi parametrointi, joten sita

voidaansaataatarkemmin.Taulukossa3.3onesitettynaRice-koodejaeriparametrin

arvoilla.

x R ice(x;0) R ice(x;1) R ice(x;2) R ice(x;3)

0 0 0.0 0.00 0.000

1 1.0 0.1 0.01 0.001

2 11.0 1.0.0 0.10 0.010

3 111.0 1.0.1 0.11 0.011

4 1111.0 11.0.0 1.0.00 0.100

5 11111.0 11.0.1 1.0.01 0.101

6 111111.0 111.0.0 1.0.10 0.110

7 1111111.0 111.0.1 1.0.11 0.111

8 11111111.0 1111.0.0 11.0.00 1.0.000

Taulukko3.3: Rice-koodeja luvuille0:::8.

(26)

3.3.5 Eksponentiaalinen Golomb-koodi

Jukka TeuholankehittamaeksponentiaalinenGolomb-kooditoimiihyvin eksponen-

tiaalisillajakaumilla.EksponentiaalinenGolomb-koodimuistuttaalaheisestiGolomb-

koodia; siina on vain kaytetty eksponentiaalisesti kasvavia jakajia. Koodi

exp-Gol(x;k)parametrilla k muodostetaan seuraavasti:

exp-Gol(x;k)= m

z }| {

1:::10 x

0

z }| {

y

m 1 :::y

1

; (3.29)

missa m = blog

2

xc k, jos blog

2

xc k tai 0,jos blog

2

xc < k ja x 0

on luvun x

binaariesityksen k+m+1 alinta bittia. Eksponentiaalinen Golomb-koodi on kes-

kimaaraisessatapauksessa hieman huonompikuin Golomb-koodi,mutta jos koodin

parametria ennustetaan, niinennustuksessa tehty virhe ei aiheuta suurta tappiota

tiivistyksessa. Eksponentiaalisia Golomb-koodejaonesitetty taulukossa 3.4. [38]

AlunperinGolomb-jaeksponentiaalinenGolomb-koodikehitettiinbittivektorien

juoksunpituuden tiivistykseen; koodillailmoitetaan, montako perakkaista nollaatai

ykkosta onsyotteessa. Bittivektorientiivistyksellaonmoniakaytannonsovelluksia,

kuten mustavalkokuvien tiivistaminen.

x exp-Gol(x;0) exp-Gol(x;1) exp-Gol(x;2) exp-Gol(x;3)

0 0 0.0 0.00 0.000

1 1.0.0 0.1 0.01 0.001

2 1.0.1 1.0.00 0.10 0.010

3 11.0.00 1.0.01 0.11 0.011

4 11.0.01 1.0.10 1.0.000 0.100

5 11.0.10 1.0.11 1.0.001 0.101

6 11.0.11 11.0.000 1.0.010 0.110

7 111.0.000 11.0.001 1.0.011 0.111

8 111.0.001 11.0.010 1.0.100 1.0.0000

Taulukko 3.4: Eksponentiaalisia Golomb-koodejaluvuille0:::8.

3.3.6 Etumerkillisetluvut

Edellakasitellytkoodittoimivatvainpositiivisillekokonaisluvuille.Useinjoudutaan

koodaamaan myosnegatiivisialukuja.Etumerkillistenlukujenkasittelyynonuseita

(27)

Yksinkertaisin tapa on lisata koodin peraan yksi bitti ilmoittamaan luvun etu-

merkki; talloin saadaan yhta pitkat koodit luvuille x ja x. Jos luku on nolla, ei

merkkibittia lisata.Tallamenettelyllanollan koodi onlyhyempi kuin muiden.

Negatiiviset luvutvoidaanlimittaapositiivisten sekaan. Koodataan2x 1,kun

x > 0, ja 2x, kun x 0, eli positiiviset luvut esitetaan parittomilla luvuilla ja

negatiiviset parillisilla, nain saadaan positiivisille luvuille lyhyempi koodi kuin ne-

gatiivisille.Samavoidaantehdamyostoisinpain,jolloinnegatiivistenlukujenkoodit

ovathieman lyhyempia kuinpositiivisten.

Muita menetelmia on kirjallisuudessa kasitelty tarkemmin erityisesti haviotto-

mankuvantiivistyksenyhteydessa,jossamerkinkasittelyneritavatonotettumukaan

koodin mukautumisstrategioihin.

3.3.7 Mukautuvat universaalitkoodit

Kehitin yksinkertaisen menetelman, jolla voidaan tehostaa tiivistysta, jos lahteen

merkkien jakaumassa on paikallisia eroja. Menetelman ideana on jakaa syote loh-

koihin ja koodata kukin lohko optimaalisella koodilla.Kaytossa on aina yksi para-

metroitukoodi.

Algoritmissa1esitettymenetelmaonhelppototeuttaa.Optimaalisenparametrin

etsimista voidaan tehostaa huomaamalla, etta puskurin koodatun esityksen pituus

laskee monotonisesti kohti minimia, kun kaytetaan esimerkiksi eksponentiaalinen

Golomb- tai Rice-koodia. Talloin voidaan aloittaa minimipituuden etsinta edelli-

sesta optimaalisesta parametrista ja edeta aina suuntaan, jossa puskurin koodatun

esityksen pituus on pienempi. Vaikka kokonaisuutena menetelma on melko yksin-

kertainen, en loytanyt siitamainintaa kirjallisuudesta.

Algoritmi 1 Mukautuva universaalikoodaus

1: while syotetta jaljellado

2: Lue puskuri tayteen syotetta. Jossyote loppuu kesken, voidaan tayttaa pus-

kuri vain osittain.

3: for all jarkevat koodin pituudet k do

4: Laskepuskurinkoodiesityksenpituus,kunsekoodataankayttaen paramet-

riak.

5: end for

6: Valitse k

opt

, jolla puskurinkoodattu esityksenpituus onlyhin.

7: Koodaa tieto parametristaja puskurin sisalto kayttaen parametria k

opt .

8: endwhile

(28)

3.4 Juoksunpituuden koodaus

Juoksunpituudenkoodaus (run-lengthcoding,RLE)perustuuuseintoistuvienmerk-

kien perakkaisten juoksujen pituuksien laskentaan ja juoksujen korvaamiseen nii-

den pituudella. Juoksujen pituudet koodataan sopivalla koodilla (esimerkiksi joku

universaalikoodi tai Human-koodi). RLE-koodaus on ollut kaytossa mm. LBM-

kuvaformaatissa ja faxeissa, joissa yhden varin muodostamat tasaiset alueet tiivis-

tyvat hyvin RLE:lla. Sellaisenaan RLE:n kaytto ei ole kovin yleista, mutta sita

voidaanmonissa tapauksissa soveltaa osana tiivistysjarjestelmaa.

Esimerkki 3.4.1 Merkkijono aaabccbbba voidaan koodata muodossa (3,a), (1,b),

(2,c), (3,b),(1,a).

3.5 Shannon-Fano-koodaus

Kun lahteen jakauma tunnetaan tarkoin, voidaan lahteelle kehittaa universaalikoo-

dejatehokkaampiakoodeja.Ongelmanaonsiisloytaasellainenkoodisanojenjoukko,

jolla`onmahdollisimmanpieni,kunlahteentapahtumientodennakoisyydet tunne-

taan.ShannonjaFanojulkaisivattoisistaanriippumattaalgoritmitongelmanratkai-

semiseksi.Ratkaisueikuitenkaanoleparasmahdollinen.Algoritmitpoikkesivathie-

man toisistaan; Shannonin algoritmi perustui kumulatiivisten todennakoisyyksien

binaariesityksiin ja Fanon joukkoihin jakamiseen. Lopputuloksena saadun koodin

tehokkuus on kuitenkin molemmissa tapauksissa sama. Yksinkertaisuuden vuoksi

esitan vainFanon algoritmin(Algoritmi2), jokaratkaisee ongelman osittavallame-

netelmalla.[33]

Algoritmi 2 Fanon algoritmi,FANO(, !)

Alkuehto: on lahdeaakkosto. Merkkien todennakoisyydet tunnetaan ja en-

simmaisellakutsulla !:n arvo on.

Jattoehto: Kaikkien lahdeaakkoston merkkien a

i

koodisanat ! on maaratty.

1: if jj>1then

2: Jaa aakkosto kahteen todennakoisyyksiltaan suurinpiirtein yhta suureen

joukkoon

1 ja

2 .

3: FANO(

1 ,!0).

4: FANO(

2 ,!1).

5: else

6: Aseta merkin a2 koodisanaksi !.

7: endif

(29)

3.6 Human-koodaus

D. A. Human kehitti vuonna 1952 kokoavan menetelman, jolla voidaan muodos-

taa optimaalinenetuliitekoodi,kuntunnetaan lahteen todennakoisyysjakauma. Jos

lahteen merkkien todennakoisyydet ovat 1=2:n potensseja onHumanin algoritmin

tuottama koodioptimaalinenmyosinformaatioteoreettisessa mielessa.[11]

Teoreema 3.6.1 Optimaalisella binaarisella etuliitekoodilla on seuraavat ominai-

suudet:

1. Olkootmerkkienajabkoodisanojenpituudet `(a)ja`(b)jatodennakoisyydet

p(a)jap(b).Josp(a)>p(b),niin`(a)`(b). Todennakoisillamerkeillaonsiis

lyhyemmat koodisanatkuin epatodennakoisilla.

2. Kahdenepatodennakoisimmanmerkinkoodisanat,jotkaovatyhtapitkia,eroa-

vat toisistaanvain koodisananviimeisen merkin osalta.

Todistus: ks. [11, s.270]

Gershon ja Grayn [11] mukaan Humanin algoritmi (Algoritmi 3) tuottaa ah-

neellamenetelmallakoodipuun,jokatayttaateoreeman3.6.1mukaisetoptimaaliseen

binaarisen etuliitekoodin vaatimukset. Itseasiassa teoreema 3.6.1 antaa tarvittavat

tiedot optimaalisenkoodin konstruointiin.Humanin algoritmiyhdistaaaakkoston

kaksiepatodennakoisintamerkkiaa

1 jaa

2

uudeksimerkiksia

1;2

ja muodostaauu-

den aakkoston 0

=( fa

1

;a

2

g)[fa

1;2

g. Nain jatketaan,kunnes aakkostossa on

enaayksi merkki;koodisaadaanmerkkien yhdistamisistasiten, ettajokainen merk-

kien yhdistaminen muodostaa yhden koodipuun solmun (ks. kuva 3.3). Humanin

algoritmivoidaantoteuttaa aikavaatimuksella O(nlogn).

Algoritmin 3 muodostamaa koodipuutakaytetaankoodaukseen siten, etta koo-

disana muodostetaan reitista juuresta merkkia vastaavaan lehtisolmuun. Vasem-

man alipuun valintaa merkitaan 0-bitilla ja oikean 1-bitilla. Koodi on aina yk-

sikasitteisesti purettavissa, koska yhdellakaan solmulla, johon liittyy merkki, ei ole

alipuita. Koodi puretaan siten, etta aloitetaan juuresta, luetaan bitteja ja edetaan

koodipuussa alaspain kunnes tullaan solmuun, johon liittyy merkki. Tulostetaan

merkki ja siirrytaantakaisin juureen.

Esimerkki 3.6.1 Kuvassa 3.3 on esitetty koodin muodostaminen aakkostolle fA;

(30)

Algoritmi 3 Humanin algoritmi

Alkuehto: on lahdeaakkosto.

1: while jj>1 do

2: Etsi :n kaksi pienimman todennakoisyyden merkkia a

1 ja a

2

ja muodosta

solmu a

1;2 .

3: p(a

1;2

):=p(a

1

)+p(a

2 ):

4: left(a

1;2 ):=a

1 :

5: right(a

1;2 ):=a

2 :

6: :=( fa

1

;a

2

g)[fa

1;2 g:

7: endwhile

8: :n viimeinen merkkionkoodipuunjuuri.

0.1

A B

0.15 C 0.2

D 0.25

E 0.3

D 0.25

E 0.3 C

0.2

B 0.15 0.1

A 0.25

D 0.25

E 0.3

B 0.15 0.1

A 0.25 C

0.2 0.45

B 0.15 0.1

A 0.25 C

0.2 0.45

E 0.3 D

0.25 0.55

B 0.15 0.1

A 0.25 C

0.2 0.45

E 0.3 D

0.25 0.55 1.0

Kuva 3.3: Human-koodin muodostaminen.

(31)

0.15, 0.2, 0.25 ja 0.3. Merkin A koodisanaksi saadaan 010 ja merkin B koodisa-

naksi011. Voidaan todeta,ettaalgoritmintuottamalla koodillaonteoreeman 3.6.1

mukaiset ominaisuudet.

Human-koodaus on kaytossa monissa tunnetuissa tiivistysohjelmissa; usein se

on yhdistetty johonkin toiseen tiivistysmenetelmaan. GNU-projektin tiivistysohjel-

massa bzip2onHuman yhdistetty Burrows-Wheeler-muunnokseen [4]. Muissa yh-

teyksissaonyhdistettymyosLZ77jaHuman.Human-koodaustakaytetaannykyi-

sinkin tehokkaamman aritmeettisen koodauksen tilalla,koska siihen eiliity samoja

patenttiongelmia kuin aritmeettiseen koodaukseen. Toisaalta algoritmion huomat-

tavasti helpompi toteuttaa kuin aritmeettinenkoodaus ja sen tuottamaa staattista

koodia onhelpompi kasitella.

3.7 LZSS-koodaus

LempeljaZivovatkehittaneetuseitatiivistysalgoritmeja.Naistatunnetuimpiaovat

sanakirjamenetelmat (dictionary method) LZ77 [44] ja LZ78 [45], joista paranne-

tut versiot ovat LZSS [35] jaLZW [41]. Sanakirjamenetelmatkayttavat sanakirjaa,

josta etsitaan syotteessa esiintyvia sanoja. Syotteen sanat korvataan viittauksella

sanakirjaan. LZ77:ssa ja LZ78:ssa yksi koodaajan tulostama alkio voi siis vastata

useampaa syotteen merkkia.Molemmatmerkkijonon sovittamiseen perustuvat me-

netelmatovat varsin suosittuja ja toimivia; niiden esittelyn jalkeen merkkijononso-

vituksesta on tulluttarkea tiedontiivistyksenosa-alue.

LZ77-menetelmassa kaytetaan sanakirjana syotteesta jo nahtya ikkunaa. Ikku-

nastaetsitaanmahdollisimmanpitkaasellaistamerkkijonoa,jokaonidenttinenseu-

raavaksikoodattavansyotteenkanssa.Ikkunaliukuueteenpainkoodauksenedetessa;

LZ77-menetelmaa sanotaankin liukuvan sanakirjan menetelmaksi (sliding

dictionarymethod). Menetelmassa etsitaansellaista sovituksen paikkaa k,etta

a

p k+(0:::l )

=a

p+(0:::l )

; (3.30)

missal pyritaansaamaanmahdollisimmansuureksi, ponkoodaajannykyinenpaik-

ka jal sovituksen pituus.Yleensak rajoitetaanlaskennallisen tehokkuuden, muisti-

vaatimusten ja tiivistystehon 2

kannalta sopivalle valille.Jos riittavanpitka sovitus

loytyy, koodataanosoitin sovituksen alkuun k ja sovituksen pituus l ja edetaanso-

2

(32)

vituksen pituuden verran. Muussa tapauksessa koodataan osoitin rajatun alueen

ulkopuolelle (taijoku sovittuosoittimen arvo,esim. 0) ja seuraavasyotteen merkki

a

p+1

sellaisenaan ja siirrytaanyksi merkki eteenpain. [44]

Alkuperaisessa LZ77:ssa[44] koodattiinaina osoitinja yksi sovituksen jalkeinen

merkki;osoitinjasovituksenpituuskoodattiinlahdeaakkostonmerkeilla -kantaise-

na(radix- ) esityksena, missa on lahdeaakkoston merkkien lukumaara.Storer ja

Szymanski[35]tehostivatmenetelmaasiten,ettasovitusjayksittainenmerkkierote-

taanvaaranosoittimensijastayhdellabitilla.

3

Osoitinjapituuskirjoitetaanvain,jos

menettelylla saastetaan tilaa verrattuna merkin koodaamiseen sellaisenaan. Pienin

sovituksen pituusriippuukoodaajanparametreista.LZSSonesitetty Algorimissa4.

Esimerkki 3.7.1 Koodataan merkkijono ABCABDCAB LZSS-algoritmilla.Algo-

ritmin toimintaa on havainnollistettu taulukossa 3.5. Kohdatessaan neljannen mer-

kinkoodaajaloytaajonahdystadatastakahdenmerkinmittaisensovituksenkolmen

merkinetaisyydeltajaseitsemannenmerkinkohdallaloydetaankolmenmerkinmit-

tainen sovitusneljan merkin etaisyydelta.Koodauksentulos on ABC(-3,2)D(-4,3).

Syote Tulos

A A

B B

C C

A ( 3;2)

B

D D

C ( 4;3)

A

B

Taulukko 3.5: EsimerkkiLZSS-koodauksesta.

Purettaessa on hyodynnettava aiemminpurettua syotetta. Luetaan tiedostosta

seuraava koodi. Jos kyseessa on sovitus, luetaan sovitus jo puretusta syotteesta,

muutoin puretaan merkki, joka oli koodattu. Purkaminen onnistuu, koska kaikki

data, johon viitataan, onpurettu ennen viittausta.

Algoritmiolettaa,ettasamanmerkkijonontoistuminensyotteessalyhyellavalilla

on todennakoista. Jos nainon, voise saavuttaa suuriakin tiivistyssuhteita. LZSS:n

3

(33)

maksimitiivistysriippuukaytetyistaparametreistaelisiita,kuinkapitkasovitusvoi-

daantehda.Tallainenrajaeiolevalttamaton;voidaanhan sovituksenpituuskooda-

ta jollain universaalikoodilla.Yleensa sovituksen pituuden tallettamiseen varataan

melko pieni maara bitteja, koska on yleensa jarkevaa olettaa, etta suurin osa so-

vituksista on lyhyita. Human-koodissa koodattava merkki voidaan pienimmillaan

tallettaayhteenbittiin;periaatteessaLZSSvoipaastahuomattavastiparempaantii-

vistykseen. LZ77 ja sen variantit ovat kaytossa tunnetuissa tiivistysohjelmissa (esi-

merkiksizip).

Algoritmi 4 LZSS-koodaus

Alkuehto: Merkkijonoa=a

1 a

2 :::a

n

onsyote,I ikkunanpituusjaM sovituksen

maksimipituus. Yksinkertaisuuden vuoksi oletetaan, etta a

i

; kun i 0, ovat

jotainsopivia arvoja (esim. 0).

1: j :=1:

2: while j n do

3: Etsi pisin sellainen merkkijono ! = a

p I :::a

p+k I

, p = 0;:::;(I 1);k =

0;:::;M, etta! @a

j :::a

N .

4: if != then

5: Koodaa merkki a

j

,j :=j +1.

6: else

7: Koodaa (p;j!j),j :=j+j!j.

8: end if

9: end while

3.8 Ziv-Lempel-koodaus

Kenties tunnetuin Lempelin ja Zivin kehittamista tiivistysmenetelmista on LZ78,

jonkatunnetuin varianttionWelchinkehittamaLZW[41].Kun LZ77:ssakaytettiin

sanakirjanaaiemminnahtyadataa,rakennetaanLZW:ssasanakirjaajatkuvastikoo-

dauksen aikana. Menetelmaa kutsutaan dynaamisen sanakirjan menetelmaksi

(dynamicdictionarymethod).LZWonkaytossamm.tunnetussaGIF-tiedostoformaa-

tissa, mutta sen kayttoa rajoittaaUnisysinpatentti.

LZWonluonteeltaanmukautuvajasepystyyyhdellamerkillaesittamaanpitkia

sarjojasyotteesta.Seeitarvitsetietoalahteentodennakoisyysjakaumastaennenkoo-

dausta,vaanpystyy dynaamisestisopeutumaansiihenkoodauksenaikana.Sopivalle

lahteelle LZW pystyy saavuttamaan informaatioteoreettisen alarajan; kaytannossa

joudutaan kuitenkin tekemaan kompromisseja, joissa optimaalisuudesta joudutaan

(34)

LZW-algoritmi(Algoritmi5)perustuusyotteenrekursiiviseenjasentamiseeneril-

lisiinlohkoihin;samallanahdyistalohkoistamuodostetaan sanakirja. Lohkoksivali-

taan ainapisin sanakirjassaesiintyvasana,jokaesiintyy syotteessaalkaen paikasta,

jossa koodaaja on menossa. Aluksi sanakirja on taytetty kaikilla lahdeaakkoston

merkeillats. jokainen sana sanakirjassa onyhden merkin mittainen. Etsitaan sana-

kirjasta mahdollisimman pitka sana !, joka esiintyy tulevan syotteen etuliitteena

ja koodataan sanan indeksi. Edetaan syotteessa j!j merkkia. Lisataan sanakirjaan

sana !a,jokakoostuusanakirjastaloydetystasanastaja merkista,johonpaadyttiin

syotteessaetenemalla.Sanatindeksoidaansamassajarjestyksessa kuinne onlisatty.

[41]

Algoritmi 5 LZW-koodaus

Alkuehto: on lahdeaakkosto, a=a

1 a

2 :::a

n

onsyote.

1: for all x

i

2do

2: Lisaa sanakirjaansana x

i

indeksiin i.

3: endfor

4: i:=jj:

5: j :=1:

6: while j n do

7: Etsi pisin sellainensanakirjaan kuuluvasana !, etta !@a

j :::a

n .

8: j :=j+j!j.

9: Tulosta!:n indeksi sanakirjassa.

10: Lisaa sanakirjaansana !a

j

indeksiini.

11: i:=i+1:

12: endwhile

Esimerkki 3.8.1 Taulukossa 3.6on esitetty esimerkki LZW:n toiminnasta. Jasen-

nyksessamerkinta!?tarkoittaa,ettajasentajaonjasentamassasanaa!jamerkinta

!a;a? sita, etta on jasennetty ja lisatty sanakirjaan sana !a ja tulostettu sanan !

indeksi.Aluksisanakirjaonf0;1g.Toisenmerkinkohdallaensimmainentuntematon

merkkion1,koska sanaa01eiloydy sanakirjasta.Pisinsovittunutsana oli0,joten

koodataan sen indeksi ja lisataan01sanakirjaan.

Koodaajallaonpurkamisenkannaltatarkeaviimeinen-ensimmainen-ominaisuus

(last-rstproperty),jokatarkoittaasita,ettaviimeksilisatynsananviimeinenmerk-

ki on seuraavan jasennetyn sanan ensimmainen merkki.Ominaisuutta tarvitaanti-

(35)

Syote Tulos Sanakirja Jasennys

0 0, 1 0?

1 0 0, 1,01 01,1?

1 1 0, 1,01, 11 11,1?

0 1 0, 1,01, 11,10 10,0?

0 0 0, 1,01, 11,10,00 00,0?

1 0, 1,01, 11,10,00 01?

1 2 0, 1,01, 11,10,00,011 011, 1?

0 0, 1,01, 11,10,00,011 10?

0 4 0, 1,01, 11,10,00,011, 100 100, 0?

1 0, 1,01, 11,10,00,011, 100 01?

EOF 2 0, 1,01, 11,10,00,011, 100 01

Taulukko 3.6: EsimerkkiLZW-koodauksesta

Purkajalukeeindeksinjatulostaasensisaltamanmerkkijonon!.Purkamistajat-

ketaan lukemalla seuraava indeksi ja lisaamallasanakirjaan sana !a, joka muodos-

tetaan edellisesta sanasta ! ja seuraavan indeksin sisaltamansanan ensimmaisesta

merkista a. Purkaja voi saada syotteekseen indeksin, joka ei ole sanakirjan sisalla.

Tama johtuu siita, etta koodaaja on jo lisannyt sanan sanakirjaan, mutta purkaja

ei ole voinut sita tehda, koska ei viela tieda sanan viimeista kirjainta. Ongelma il-

menee,kunkoodaajaonsaanutsyotteekseen x!x!x,missaxonyksittainenmerkki

ja ! joko tyhja tai sellainen merkkijono, etta x! on jo sanakirjassa. Tilanteen rat-

kaisemiseksi on sovellettava viimeinen-ensimmainen-ominaisuutta, jolloin edellisen

puretun merkkijonon ensimmainen kirjain on purettavan merkkijonon viimeinen,

nainongelmaon ratkaistu.[41]

Esimerkki 3.8.2 Purettaessa esiintyvaa ongelmaa ja sen ratkaisua on havainnol-

listettu taulukossa 3.7; viimeinen-ensimmainen-ominaisuuden kaytto on merkitty

(LF):lla. Kun purkaja saa syotteeksi indeksin 2, jolla ei ole vielasanaa sanakirjas-

sakaytetaanviimeinen-ensimmainen-ominaisuuttajaotetaansen viimeiseksikirjai-

meksiedellisella kierroksellapuretun sanan(indeksi 0) ensimmainenmerkki 0.

Algoritmin toteutuksessa ei ole jarkevaa tallettaa sanakirjaan jokaista merkki-

jonoa sellaisenaan, koska ne veisivat liikaatilaa ja merkkijonojen etsimisesta tulisi

vaikeaa. Merkkijonotvoidaantallettaapaallekkainpuuhun siten,ettajokainenpol-

(36)

Tiivistys

Syote Tulos Sanakirja Jasennys

0 0,1 0?

0 0 0,1, 00 00, 0?

0 0,1, 00 00?

0 2 0,1, 00,000 000, 0?

0 0,1, 00,000 00?

0 0,1, 00,000 000?

EOF 3 0,1, 00,000 000

Purkaminen

Syote Tulos Sanakirja Jasennys

0 0 0,1, 0? 0, 0?

2 00 0,1, 00(LF), 00? 00, 0?

3 000 0,1, 00,000(LF), 000? 000, 0?

Taulukko 3.7: Viimeinen-ensimmainen-ominaisuuden kaytto.

merkkijonon seuraavanmerkin.

4

Jarjestelyllaonhelpompaaetsia pisinsovitus, kos-

ka oikean polun seuraaminen karsii automaattisesti pois merkkijonot, jotka eivat

sovitu syotteeseen. Taman tietorakenteen avulla saadaan algoritmin aikavaatimus

lineaariseksi syotteen pituuden suhteen, olettaen, etta oikean lapsisolmun valinta

voidaan tehda vakioajassa. Kuvassa 3.4 on esitetty toteutuksen tietorakenteen tila

taulukossa 3.6 esitetyn esimerkin lopussa. Tehtavaksi jaa viela algoritmin tuotta-

mien indeksien koodaaminen; tyypillisesti kaytetaan pieninta maaraa bitteja, jolla

voidaan esittaa sanakirjan koko. Koodaukseen voidaan hyvin kayttaa myos jotain

universaalikoodia.

3.9 Aritmeettinen koodaus

Gershon ja Grayn [11] mukaan Eliasin julkaisemattomaan koodausmenetelmaan

pohjautuva aritmeettinen koodaus on teoreettisesti optimaalinen; se saavuttaa ai-

na informaatioteoreettisen alarajan koodisanan pituudelle. Menetelmaa ovat ke-

hittaneet mm. Rissanen ja Langdon [31], Witten et al. [43], Fenwick [10] ja Moat

[27]. Ensimmaisen monimerkkisella aakkostolla toimivan aritmeettisen koodaajan

kaytannon toteutuksen esittivatWitten et al.[43] vuonna 1987, jonka jalkeen arit-

meettisesta koodauksesta tuli suosittu entropian koodauksen menetelma. Fenwick

4

(37)

1 1 0

0 0 1 0 1

Loppuliitteet Etuliite

Kuva 3.4: LZW toteutuksen tietorakenne.

[10] ratkoo mukautuvaan aritmeettiseen koodaukseen liittyvia ongelmia ja Moat

[27] esittaa parannuksia koodaajaan ja yhteenvedon menetelmankehityksesta.

A B C

0

0.5 0.5

1 1 0.6

CAB...

Kuva 3.5: Puhdas aritmeettinenkoodaus.

Aritmeettisen koodauksen ideana onlahettaaviestireaalilukunax valilta[0;1).

Vali jaetaan merkkien todennakoisyyden perusteella osavaleihin niin, etta kunkin

osavalin pituus kuvaa merkin todennakoisyytta. Merkin koodaamiseksi tarvitsee

lahettaa mika tahansa luku, joka kuuluu merkkia kuvaavalle valille. Koko viestin

koodaamiseksi valitjaetaan aina uudelleen rekursiivisesti ja lahetetaan tarkemmin

rajoitettu luku. Jos koodaaja on menossa valilla I = [a;b) ja koodattavaa lukua

vastaa valin [0;1) jaossavali [c;d), niinluvun on kuuluttava valille

I 0

=

a+ b a

c

;a+ b a

d

: (3.31)

(38)

[a;b), niinluku alkuperaisellaosavalijaollaon

x 0

=

x a

b a

: (3.32)

Nytpurkajanonvainetsittavasealkuperaisenjaonvali,jollex 0

kuuluujalahdeaak-

koston merkki,jota kyseinen vali vastaa.

Esimerkki 3.9.1 Koodaustaonhavainnollistettukuvassa 3.5, jossaonaakkostona

fA;B;Cg ja merkkien todennakoisyyksina p(A) = 0:2, p(B) = 0:3 ja p(C) = 0:5.

Valit on jaettu siten, etta merkkia A vastaa vali [0;0:2), merkkia B vali [0:2;0:5)

ja merkkia C vali[0:5;1:0). Koodattava viesti alkaa merkeilla CAB. Ensimmainen

merkki C on koodattava valille [0:5;1), joka jaetaan osiin. Merkkeja vastaaviksi

osavaleiksisaadaan[0:5;0:6),[0:6;0:75)ja[0:7;1:0).SeuraavamerkkionA,jolloinon

koodattava vali [0:5;0:6). Jatkamalla menettelya huomataan, etta viestin alkuosan

CAB esittamiseksi voidaan lahettaamikatahansa lukuvalilta [0:52;0:55).

Tarkein aritmeettisen koodaajan etu on sen joustavuus: se erottaa lahteen ti-

lastollisen mallin koodaajasta taysin. Aina kun seuraavaa koodattavaa valia jae-

taan,voidaanvaihtaa jakoakoodaajastariippumatta.Etu onmerkittava,koskaesi-

merkiksiHuman-koodaajastamallin erottaminenon lahesmahdotonta.Aritmeet-

tisen koodaajan optimaalisuus ei ole niin merkittavaa kuin voisi helposti luulla;

Human-koodikin on useissa tapauksissa lahes optimaalista. Suurin ero Human-

koodiin tulee tilanteessa, jossa jonkin merkin todennakoisyys on lahella ykkosta.

Tassa tapauksessa Human-koodi on huonoimmillaan, koska sen on esitettava jo-

kainen lahdeaakkoston merkki vahintaan yhdella bitilla. Aritmeettisessa koodauk-

sessa eitata rajoitusta ole.Kaytannossasuuriintiivistyssuhteisiin paastaanyleensa

vain laadukkaiden tilastollistenmallienavulla. [16]

Suurin aritmeettisenkoodaajan ongelmaonsen hitaus,taydentarkkuuden arit-

meettinen koodaaja on hitaampi kuin Human- tai Ziv-Lempel-koodaus. Toinen

koodaajanongelmaonse,ettei sitavoida toteuttaarinnakkaislaskennanavulla,kos-

ka seuraava koodisana riippuu edellisen koodatun merkin vaikutuksesta koodaajan

tilaan. Koodista ei myoskaan selvia tiedoston loppuminen; tama ongelma ratkais-

taan yleensa erillisen EOF-merkinlisayksella lahteen aakkostoon. [16]

Aritmeettisenkoodaajantoteuttaminensellaisenaaneikaytannossaonnistu,kos-

ka se tarvitsisi aarettoman tarkkaa laskentatarkkuutta. Tarkkuuden tarve kasvaa

koko ajan koodattavan viestin kasvaessa. Witten et al. [43] esittivat yksinkertai-

(39)

sopivasti ettei laskutarkkuus paase kasvamaan liian suureksi. Koodaajan tilan tal-

lentamiseksi tarvitaan vain 3 lukua (yla- ja alaraja ja laskuri). Jos koodattava vali

sisaltyy valiin [0;1=2), niin seuraava bitti koodattavan luvun binaariesityksessa on

0, vastaavastijos valisisaltyy valiin[1=2;1), niinseuraava bitti koodattavanluvun

binaariesityksessaon1.Josvalisisaltyyvaliin[1=4;3=4),niinseuraavankoodattavan

bitin jalkeinen bitti on arvoltaan painvastainen. Koodattavaavalia voidaan taman

luokituksen jalkeen laajentaa kaksinkertaiseksi laajentamalla lineaarisesti suurem-

pi vali, jolle se kuului valiksi [0;1). Viimeisen vaihtoehdon tapahtumakerroista on

lisaksi pidettava kirjaa laskurilla. Kun tiedetaan seuraava bitti, pitaa koodata las-

kurinverran bitteja,joiden arvo on painvastainenja nollatalaskuri.

Kaytannontoteutuksessareaalilukujentilallakaytetaankiinteapilkkulukuja(xed

pointnumber)elilukuvali[0;1)skaalataanvaliksi[0;2 b

)jakaytetaanesitykseenvain

valillekuuluviakokonaislukuja,jolloinlukua 1voisivastataesimerkiksi2 16

=65536,

talloinlukua1=2vastaisi2 16

=2=32768.Mitasuurempaamaaraabittejakaytetaan,

sitatarkemmaksikoodaajatuleeja tarkkuudenkasvaessa kasvaamyostiivistysteho,

koskalahteen merkkien todennakoisyydet voidaan esittaatarkemmin.

Moat [27] esittaa parannetun version koodaajasta (Algoritmit 6, 7 ja 8), jos-

sa koodaajan vali esitetaan sen alarajan L ja pituuden R avulla, jolloin saadaan

saastojaaritmeettistenoperaatioidenmaarassa.Algoritmitonesitettysamassamuo-

dossa;operaatioidenjarjestyksellaonmerkitysta,koska kaikkituloksetpyoristetaan

kokonaisluvuiksi. Kaytannon toteutuksessa todennakoisyyksia kasitellaan kumula-

tiivisen frekvenssitaulukon 5

avulla. Koodaajan tilaksi alussa asetetaan L := 0 ja

R := 2 b 1

ja koodauksen lopussa kirjoitetaan L:n b bittia siten, etta ensimmaisen

bitin jalkeen kirjoitetaan c kappaletta bitteja, joiden arvo on painvastainen en-

simmaisen bitinkanssa, jaloputbitit sellaisenaan.Purkajan tilaksialustetaanR:=

2 b 1

ja D:narvoksiluetaan b ensimmaistabittiatiedostosta. Purkaminentapahtuu

kutsumallaensinkohdefrekvenssinpurkua(Algoritmi7)jaetsimallasittenkoodattu

vali, jollekohdefrekvenssi kuuluu. Purkaja paivitetaankoodatullavalillaja uudella

frekvenssitaulukon ylarajalla,jos se onmuuttunut(Algoritmi8).

Kaytannon toteutuksen aiheuttamat menetykset optimaaliseen ratkaisuun ver-

rattuna on osoitettu mitattomiksi. Jos reaalilukuvali [0;1) skaalataan kokonaislu-

kuvaliksi [0;N), niin ylimaarainen koodin pituus syotemerkkia kohti on pienempi

kuin 4=(Nln2) bittia. Tyypillisella N:n arvolla 65536 ylimaarainen koodin pituus

onvahemmankuin10 4

bittiamerkkiakohti.KunEOF-merkkilisataanaakkostoon,

5

(40)

Algoritmi 6 Aritmeettinen koodaus

Alkuehto: I =[l;h)onkoodattavavalikumulatiivisessafrekvenssitaulukossa ja t

on yhteenlaskettu merkkien maara (todennakoisyytena valion [l=t;h=t)). Koo-

daaja on menossa valilla, jonka alaraja on L ja pituus R , ja c on bittilaskuri.

Koodaukseen kaytetaan b bittia.

1: r:=R =t.

2: L:=L+rl.

3: if h<t then

4: R :=r(h l).

5: else

6: R :=R rl.

7: endif

8: while R2 b 1

do

9: if L+R 2 b 1

then

10: Tulosta 0-bitti ja ckpl 1-bitteja.

11: c:=0.

12: else if L2 b 1

then

13: L:=L 2 b 1

.

14: Tulosta 1-bitti ja ckpl 0-bitteja.

15: c:=0.

16: else

17: L:=L 2 b 2

.

18: c:=c+1.

19: end if

20: L:=2L.

21: R :=2R .

22: endwhile

Algoritmi 7 Kohdefrekvenssin purkaminen

Alkuehto: Purkaja on menossa valilla, joka pituus on R . D on koodatun luvun

etaisyys valinalarajastaja t onfrekvenssitaulukonylaraja.

Jattoehto: Palautettuarvoonkohdefrekvenssi,jonkaavullavoidaanselvittaakoo-

dattu valifrekvenssitaulukosta.

1: r:=R =t;

2: return minft 1;D=rg.

(41)

Algoritmi 8 Aritmeettinendekoodaus

Alkuehto: I =[l;h)onedellisellakierroksellakoodattuvalikumulatiivisessafrek-

venssitaulukossa ja t on yhteenlaskettu merkkien maara. Purkaja on menossa

valilla,jonkaleveys onR . Koodaukseenkaytetaanb bittia.Donpuretun arvon

etaisyys valin alareunasta. Luku r on asetettu edellisessa kutsussa kohdefrek-

venssin purkuun.

1: D:=D rl.

2: if h <t then

3: R :=r(h l).

4: else

5: R :=R rl.

6: endif

7: while R 2 b 2

do

8: R :=2R .

9: D :=2D+luebitti.

10: endwhile

lisaantyy t merkin mittaisen syotteen koodin pituus vahemman kuin

8t=(Nln2)+lgN +7 bittia.[16]

Aritmeettisesta koodauksesta saadaan helposti mukautuva, koska koodaaja ja

purkaja tarvitsevatvainkoodattavialukuvaleja.Ongelmaksimuodostuusiiskumu-

latiivisen frekvenssitaulukon tai jonkin muun vastaavan rakenteen yllapitaminen.

Fenwick [10] esittaaongelmaan elegantinratkaisun,jossamerkin todennakoisyyden

paivittaminen,merkin valin etsiminen ja kohdefrekvenssin valin etsiminen voidaan

suorittaaajassa O(logn) frekvenssitaulukon merkkien lukumaaransuhteen.

(42)

me aikoina huomiotaonsaanutvarsinkin musiikintiivistaminen.Signaalinkasittely

ontietojenkasittelytieteen osa-alue,jonka tavoitteenaonmuokata signaaleitasovel-

luksesta riippuvallatavalla.Usein onkyse signaalin vahvistamisesta, kohinan pois-

tamisesta tai signaalin analysoinnista. Yleisesityksia signaalinkasittelysta ovat kir-

joittaneet mm. Defatta et al. [6], Lyons [26] ja Proakis ja Manolakis [30]. Krani-

auskas[24] kasittelee signaalinkasittelynmatemaattista teoriaaseka jatkuvien etta

diskreettien signaaleiden tapauksessa. Taylor [37] keskittyy suodatinten suunnitte-

luunja antaahyvankatsauksenlineaarisistamuunnoksista. Orfanidis[28]kasittelee

satunnaisten signaalien kasittelya. Alexander [1] ja Haykin [13] kasittelevat mu-

kautuvia suodattimiaja niidensovelluksia jasignaalinkasittelyaepastationaarisessa

ymparistossa.Gersho ja Gray [11] kasittelevat signaalientiivistamista.

Tunnettuja signaalien tiivistamisen menetelmia ovat skalaarikvantisointi, die-

rentiaalinenpulssikoodimodulaatioja muunnoskoodaus.Viimeaikoinaovathuomio-

ta paljon saaneet aallokkeisiin perustuvat muunnoskoodauksen menetelmat, joita

tassakin kasitellaan.

4.1 Signaalinkasittelyn teoriaa

Proakis ja Manolakis [30] maarittelevat signaalin fyysiseksi arvoksi, joka muuttuu

ajan tai jonkin muun muuttujan mukana. Matemaattisesti signaalivoidaan esittaa

yhden tai useamman muuttujan funktiona. Esimerkiksi x(t) = 2t on signaali, joka

muuttuu lineaarisesti ajan funktiona. Signaalit voivat olla moniulotteisia; esimer-

kiksi kuvat voidaan tulkita kaksiulotteisiksi signaaleiksi. Signaalilla voi myos olla

useita kanavia, jolloinse saa vektoriarvoja:

x(t)=(x

1 (t);x

2

(t);:::;x

n (t))

T

: (4.1)

Jatkuvatsignaalitovatjatkuvienmuuttujienfunktioitajadiskreetitsignaalitdis-

kreettienmuuttujienfunktioita.Jatkuviasignaaleitaeivoidakasitelladigitaalisesti,

jotenne onmuutettavadiskreettiinmuotoon. Ensin jatkuvasignaali naytteistetaan

(sampling),naytteistettysignaalikvantisoidaan(quantization)jalopuksikvantisoin-

nintuloskoodataan.Kunpuhutaanfyysisistasignaaleista,kokoprosessiakutsutaan

A/D-muunnokseksi (analogia/digitaali)ja kaytettya laitteistoa A/D-muuntimeksi.

(43)

Diskreetti signaalisaadaan jatkuvasta signaalistanaytteistamalla:

x(n)=x(nT); n2Z; (4.2)

missa T on naytteenottovalin pituus; talloin naytteenottotaajuus f

s

on 1=T. Dis-

kreetti signaalix(n)onmaariteltyvainn:n kokonaislukuarvoilla.Naytteitaonotet-

tavariittavantiheinvalein,jottasignaalinkaikkivaihtelutsaadaantalteen.Riittava

valien tiheys saadaan nk. naytteistysteoreemasta (samplingtheorem). Sen mukaan

naytteenottotaajuuden pitaa olla vahintaan kaksi kertaa kertaa niin suuri, kuin

suuritaajuisimman naytteistettavassa signaalissa esiintyvan komponentin taajuus.

Niinpajarjestelma,jonkanaytteenottotaajuusonf

s

,voiesittaatarkastivainsignaa-

leita, joiden komponenttien taajuus on alle f

s

=2. Taajuutta f

s

=2 sanotaan Nyquis-

tin taajuudeksi.Naytteistettavastasignaalistapitaisiennennaytteistamistasuodat-

taa poistaajuudet,jotkaylittavatNyquistintaajuuden, taitapahtuu laskostumista

(aliasing).Laskostuminen tarkoittaa korkeampitaajuisen komponentin ilmenemista

matalampitaajuisenakomponenttina naytteistetyssa signaalissa.Jottatarkasteltava

informaatio sailyisi mahdollisimmanlaadukkaana, tama ei tietenkaan ole toivotta-

vaa. [30]

Digitaaliseen muotoonsignaalisaadaan kvantisoimalla:

y(n)=Q[x(n)]; (4.3)

missaQ onkvantisointioperaatio. Kvantisoinninjalkeen signaalivoi yleensa 1

saada



aarellisen maaran arvoja eli kvantisoinnissa muutetaan signaalin arvoalue diskree-

tiksi [30]. Kvantisointia kasitellaan tarkemmin myohemmin signaalien tiivistyksen

yhteydessa.

Tyypillisimmatsignaalilletehtavatoperaatiot ovat skalaarillakertominen (4.4),

yhteenlasku (4.5), kertolasku (4.6) ja siirto ajassa (4.7):

y(n)=ax(n); (4.4)

y(n)=x

1

(n)+x

2

(n); (4.5)

y(n)=x

1 (n)x

2

(n); ja (4.6)

y(n)=z k

x(n)=x(n+k); k2Z: (4.7)

1

(44)

Usein tavattaviaoperaatioitaovatmyos naytteenottotaajuuden muuttaminenylos-

(4.8) taialaspain(4.9). (upsampling,downsampling) [30]:

y(m)=x(n)"k;m =n=k; ja (4.8)

y(m)=x(n)#k;m =kn: (4.9)

Signaalit voidaan esittaa muiden signaalien avulla. Tyypillisimpia naista ovat

impulssi (impulse), askel (unit step) ja kompleksiteksponentiaalifunktiot:

Æ(n)= 8

<

:

1;n =0

0;n 6=0

; (4.10)

u(n)= 8

<

:

1;n0

0;n<0

; ja (4.11)

x(n)=re in

; (4.12)

joista viimeisia kaytetaan Fourier-analyysissa. Esimerkiksi signaali x(n) voidaan

esittaa yksikkoimpulssien avullaseuraavasti:

x(n)= 1

X

i= 1

Æ(n i)x(i): (4.13)

Talloin signaalin sanotaan olevan esitettyna aika-alueella (joskus puhutaan myos

ns. standardikannasta). [30]

Maaritelma 4.1.1 Diskreetinepajaksollisensignaalinx(n)Fourier-muunnosX(!)

on

X(!)=Ffx(n)g= 1

X

n= 1 x(n)e

i!n

: (4.14)

Fourier-muunnosonmaariteltysignaalille,jossenitseisarvojensummaon

 aarelli-

neneli P

1

1

jx(n)j<1.DiskreetinsignaalinFourier-muunnoson2-jaksollinen,ts.

X(!)=X(!+2k).Fourier-muunnosesittaa signaalineritaajuisten ja -vaiheisten

siniaaltokomponenttien lineaarikombinaationa. X(!) esittaa signaalin taajuusalu-

eella. Jaksollisten signaalien tapausta kasitellaan myohemmin diskreetin Fourier-

(45)

naisuuksien tutkimiseen. [30]

Maaritelma 4.1.2 Suodatin (lter)onjarjestelmaT,jokatuottaatoisen signaalin

syotteenaansaamastasignaalista:

y(t)=T [x(t)]: (4.15)

Maaritelma 4.1.3 JarjestelmaT onlineaarinenjaajastariippumaton(lineartime

invariant, LTI), jos ja vainjos

T [a

1 x

1

(n)+a

2 x

2

(n)]=a

1 T [x

1

(n)]+a

2 T [x

2

(n)], ja (4.16)

T

z k

x(n)

=z k

T [x(n)]: (4.17)

LTI-jarjestelmatovattavallisimpiakaikistasignaalinkasittelynjarjestelmista.Jos

jarjestelma T on LTI, voidaan se taydellisesti kuvata impulssivasteen (impulse

response) h(n) avulla; taman ominaisuuden takia LTI-jarjestelmien analysointi on

helppoa.[30]

Maaritelma 4.1.4 LTI-jarjestelmanT impulssivaste on

h(n)=T [Æ(n)]: (4.18)

Maaritelma 4.1.5 LTI-jarjestelmaT onstabiili, eli setuottaa



aarellisentulossig-

naalin jokaisella aarellisellasyotesignaalilla,jos ja vainjos

1

X

1

jh(n)j<1: (4.19)

Maaritelma 4.1.6 LTI-jarjestelmaa T sanotaan kausaaliseksi, jos

h(n)=0; kun n<0: (4.20)

Kausaalinen jarjestelma pystyy tuottamaan tulossignaalin arvon heti, kun tie-

detaansyotesignaalin arvo. Josjarjestelmaeiolekausaalinen, pystytaansekaytan-

nossa toteuttamaanvainviiveen avulla.[30]

LTI-jarjestelman vaste mielivaltaiseen signaaliin x(n) saadaan helposti selville

Viittaukset

LIITTYVÄT TIEDOSTOT

Helpommatkin teht¨ av¨ at ovat vaikeampia kuin kouluteht¨ av¨ at, eik¨ a ole ole- tettavaa ett¨ a niit¨ a pystyisi ratkomaan ilman vaivann¨ ak¨ o¨ a.. Sinnik¨ as yritt¨

Mik¨ a on keskim¨ a¨ ar¨ ainen odotusaika sille, ett¨ a ravintola alkaa tehd¨ a

¨ A¨arett¨om¨an hyv¨an johteen sis¨all¨a ei ole s¨ahk¨okentt¨a¨a, koska vapaasti liikkuvat varaukset luovat pinnalle varauskat- teen σ S , jolloin

Osoita, ett¨a Joulen l¨amm¨on kokonaistuotto on sama kuin kondensaattorin alkuper¨ainen

Osoita, ett¨a jokaisessa hilapisteess¨a muiden dipolien aiheuttama s¨ahk¨okentt¨a h¨avi¨a¨a.. Varaus- ja massatiheys oletetaan

Yhteenvetona voi todeta, ett¨a s¨ateilyh¨avi¨ot ovat lyhytkestoisessa liik- keess¨a merkitt¨avi¨a vain, jos hiukkasen liike muuttuu ulkoisten voimien takia

Samassa yhtey- dess¨a kartoitetaan mahdollisimman hyvin tutkintoon kuuluvien kurssien sis¨alt¨o ja niis- t¨a saatavat opintoviikkojen tilalle tulevat opintopisteet.. Sen vuoksi

(Nollataajuudella kela vastaa oikosulkua ja kondensaattori avointa piiri¨a.) c) Kela ja kondensaattori ovat h¨avi¨ott¨omi¨a komponentteja, koska ne eiv¨at