1 / 20

LÄHTEENKOODAUS

LÄHTEENKOODAUS. Lähteen informaationopeus. Lähteen symbolien keskimääräinen informaatio (keskimääräinen epävarmuus) määritellään entropian H(X) avulla. Se on symbolien esiintymistodennäköisyyksien funktio. Entropia on siis lähteen sisäinen ominaisuus, joka ei muutu millään tempulla.

linnea
Download Presentation

LÄHTEENKOODAUS

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. LÄHTEENKOODAUS

  2. Lähteen informaationopeus • Lähteen symbolien keskimääräinen informaatio (keskimääräinen epävarmuus) määritellään entropian H(X) avulla. Se on symbolien esiintymistodennäköisyyksien funktio. • Entropia on siis lähteen sisäinen ominaisuus, joka ei muutu millään tempulla. • Lähteen tuottamien symbolien symbolinopeuteen voidaan sen sijaan vaikuttaa lähteenkoodauksella poistamalla symbolijonosta epäsystemaattista redundanssia. • Pidentämälläsymbolin tai bitin kestoa (TS,TB), parametri z (ES/N0, Eb/N0) kasvaa ja siten PE pienenee modulaation kautta, mistä siis motivaatio lähteenkoodaukselle. • Matkapuhelimessa puhekooderi-dekooderi pari suorittaa lähteen koodauksen ja alkuperäisten symbolien palautuksen. • Esim. puolittamalla puheen bittinopeus, saadaan järjestelmän samanaikaista palvelukapasiteettia kasvatettua (esim. tukiasemasolun alueella) käytettävissä olevalla vakiokaistanleveydellä (toinen käyttäjä voi käyttää säästyneen osan solun välityskyvystä). • Vrt. lankapuhelimen PCM-koodauksen nopeus on 64 kbs (vakiopituiset A/D-muunnetut sanat/näyte), kun matkapuhelimien koodereilla päästään jopa alle 10 kbs puheen laadun kärsimättä.

  3. Lähteen informaationopeus • Puhekoodereissa puhe parametrisoidaan (muodostetaan puhetta kuvaavia lukuja) ja parametrit lähetetään tavanomaisen suoran A/D-munnoksen bittien sijaan. Dekooderissa puhe regeneroidaan eräänlaisella suodatinmallilla parametrilukujen perusteella. • Lähteenkoodauksen perusideaa valottaa parhaiten Morse-koodaus: annetaan eniten esiintyvälle lähteen tuottamalle tekstisymbolille (englannin kielessä e-kirjain) lyhin mahdollinen symbolikoodi ja harvemmin esiintyvälle pitempi. Näin lähteen tuottamaa ja kanavan näkemää keskimääräistä symbolinopeutta voidaan laskea, eikä tekstin informaatiosisältöä kuitenkaan menetetä. • Kalle Päätalon Iijoki-sarja mahtuu morsekoodattuna siis pienempään bittimäärään kuin vakiolevyisesti 8-bitin ASCII-koodattuna. • Koska H(X):n yksikkö on [bittiä/symboli], lähteen informaationopeus RS [bittiä/sekunnissa] saadaan kertomalla lähteen entropia lähteen tuottamien symbolien symbolinopeudella r [symbolia/sekunnissa]: RS = rH(x) [bit/s]. • Lähteenkoodauksessa siis pyritään pienetämään r:n arvoa, koska lähteelle ominaista H(X):n arvoa ei pystytä pienentämään.

  4. Shannonin 1. teoreema – lähteenkoodausteoreema • Olkoon lähde liitetty diskreettiin kanavaan, jonka kapasiteetti on C [bittiä/symboli]. Olkoon lisäksi kanavan symbolinopeus ─ siis modulaatiomenetelmän siirtonopeus ─ S [symbolia/sekunnissa]. Tällöin informaation välitysnopeus on SC [bittiä/sekunnissa]. Näin kanavan kapasiteetti on ilmaistu ”insinöörimäisemmällä” yksiköllä verrattuna C-parametriin. • Shannonin 1. teoreema (lähteenkoodausteoreema): • Olkoon annettu kanava ja lähde, joka tuottaa informaatiota pienemmällä nopeudella kuin on kanavan kapasiteetti. Tällöin on mahdollista koodata lähde siten, että lähteen tuottama informaatio voidaan siirtää kanavassa. • Teoreema on olemassaoloteoreema, koska se ei kerro miten nuo lähteenkoodauskoodit löydetään. Informaatio- ja koodausteoriassa on kehitetty erilaisia lähteenkoodausmenetelmiä. Noita ns. zippaus-algoritmeja käytetään redundanssin poistamiseen/pakkaamiseen. • Tässä tarkastellaan vain yksinkertaisia Shannon-Fano ja Huffman -koodauksia. Tarkastellaan aluksi lähteenkoodauksen perusajatusta yksinkertaisen esimerkin valossa (ns. laajennusten käyttöä).

  5. Laajennusten käyttö redundanssin poistamisen • Olkoon symbolien A ja B esiintymistodennäköisyydet 0.9 ja 0.1. Lähteen symbolinopeus r = 3.5 symb/s ja H(X) = –0.1log20.1 –0.9log20.9 = 0.469 bit/symb. Symbolit voidaan kuvata BSC-kanavalle lukuina 0 ja 1. • Olkoon järjestelmän symbolinopeus S = 2 symb/s ja olkoon BSC-kanavan kapasiteetti C = 1 bit/symb, jolloin kanavan kapasiteetti informaationopeudella mitattuna: SC = 2 bit/s. • Koska lähteen tuottama symbolinopeus 3.5 symb/s on suurempi kuin kanavan kapasiteetti 2 symb/s, ei lähdettä voida suoraan yhdistää kanavaan, mutta sopivalla lähteenkoodauksella se on mahdollista, sillä lähteen informaationopeus rH(X) = 3.5(0.469) = 1.642 bit/s on pienempi kuin 2 bit/s (Shannon 1. -ehto).

  6. Laajennusten käyttö redundanssin poistamisen • Ideana n-asteen laajennuksessa on ryhmitellä lähteen tuottamat symbolit n:n alkuperäisen peräkkäisen symbolin ryhmäksi, eli uudeksi symboliksi, jolle sitten annetaan uusi koodi siten, että kaikkein todennäköisin uusi symboli saa lyhyimmän koodin ja epätodennäköisin pidemmän. Kanavan näkemää lähteen symbolinopeutta voidaan näin pienentää (redundanssinpoisto), koska koodisanan keskimääräinen pituus lyhenee. • 1. asteen laajennus tarkoittaa lähtötilannetta (vielä koodaamatonta tapausta), 2. asteen laajennus 2 symbolin ryhmittelyä, jne.. • Kuvan 10.8 esimerkissä 1. asteen laajennus ei siis vielä riitä, koska 3.5 symb/s > 2.0 symb/s ja keskimääräinen sanan pituus on 1.0 bitti.

  7. Laajennusten käyttö redundanssin poistamisen • Lyhin koodisana annetaan todennäköisimmälle uudelle symbolille. Koodisanat saadaan mm. Shannon-Fano tai Huffman -koodauksella. • Toisen asteen laajennuksessa keskimääräinen sanan pituus on 1.29 bittiä. Koodattujen symbolien (bittien) keskimääräiseksi lukumääräksi yhtä alkuperäistä 2 symbolin ryhmää kohden muodostuu 2. asteen laajennuksessa 1.29/2 = 0.645 kpl. • Kooderin lähdössä näkyy informaationopeus rL/n = 3.5(0.645) = 2.258 koodisymbolia/s, joka on edelleenkin suurempi kuin kanavan välityskyky 2 symb/s. 2. asteen laajennus ei siten vielä riitä.

  8. Laajennusten käyttö redundanssin poistamisen • 3. asteen laajennuksessa keskimääräinen sanan pituus on 1.598 bittiä. Siten kolmea alkuperäistä symbolia kohden muodostuu keskimäärin L/n = 1.598/3 = 0.533 kpl uusia symboleita. Tällöin symbolinopeudeksi kooderin lähdössä muodostuu rL/n = 3.5(0.533) = 1.864 koodattua symb/s, mikä on pienempi kuin kanavan välityskyky 2 symb/s. 3. asteen laajennus on siten riittävä. • Kooderissa tarvitaan puskurointia, jotta kanavan bittinopeus olisi ”tasainen” (lähde tuottaa alkuperäisiä symboleita vakionopeudella). Huom: jos olisi ollut P(A) = P(B) = 0.5, niin silloin redundanssia ei olisi voitu enää poistaa, eikä lähdettä olisi siten voitu sovittaa kanavaan.

  9. Laajennusten käyttö redundanssin poistamisen • Ennen koodausta on aina tarkistettava, että RS = rH(X)  SC. • Parametri L/n lähestyy n:n funktiona lähteen entropian arvoa H(X), jonka alle ei millään n:n arvolla päästä, mikä on lähteenkoodauksen peruslainalaisuus. Kun L/n = H(X), lähteenkoodauksen tehokkuus on 100%.

  10. Muutamia määritelmiä • Edellä ei vielä kerrottu miten koodit käytännössä muodostetaan. Lähdekoodeihin liittyy muutamia peruskäsitteitä. • Aakkostoon symbolien joukko, jota käytetään kanavan yli tapahtuvassa siirrossa. Binäärinen sisältää symbolit {0} ja {1}. • Sanan pituus on symbolien lukumäärä koodisanassa. • Koodi voi ollalohkottainen (block) tai lohkoton (non-block). Lohkottaisessa koodissa lähdesymbolit ryhmitellään määrätyn pituiseksi jonoksi (esim. 8 bitin ASCII-koodi). • Yksikäsitteisesti dekoodattavissa olevat koodit voidaan dekoodata ilman välimerkkejä (alku- ja loppukohdat voidaan päätellä muuten). • Tuollaisia koodeja käytetään lähteenkoodauksessa, ja ne voidaan jaotella edelleen välittömästi tai ei-välittömästi dekoodattaviksi koodeiksi rippuen siitä tarvitseeko seuraavia symboleita ottaa huomioon tehtäessä dekooderissa päätöstä vastaanotetusta lähdekoodisanasta • Jälkimmäisessä tapauksessa dekooderilla on maksimissaan pisimmän laillisen koodisanan mittainen dekoodausviive.

  11. Muutamia määritelmiä • Välittömästi dekoodattavissa oleva koodi ei ole minkään muun käytetyn koodin etuliite, joten päätös voidaan tehdä prosessorilla heti, kun dekooderissa havaitaan laillinen koodisana. • Lähteenkoodauksessa tarvitaan muistia (puskurointia) datanopeuksien sovittamiseen ja viiveellisten dekoodausoperaatioiden tekemiseen prosessorilla.

  12. Lähteenkoodauksen tehokkuus • Lähteenkoodauksen hyvyyttä kuvaa käsite tehokkuus (efficiency), joka määritellään keskimääräisen koodisanan pituuden pienimmän mahdollisen arvon ja koodauksella saadun keskimääräisen sananpituuden suhteena. Se ilmaistaan yleensä prosentteina. • Minimiarvolle voidaan todistaa aakkoston koosta D riippuva lauseke. Kun D = 2, muuttuu kaava helposti muistettavaan muotoon. • Kun tehokkuus on 100%, keskimääräinen sananpituus on saavuttanut entropian H(X) arvon (kts. kuva 10.9).

  13. Shannon-Fano-koodaus • Tarkastellaan seuraavaksi kahta lähteenkoodausmenetelmää, joilla aiemmin esitetty laajennustekniikka voidaan käytännössä toteuttaa. • Shannon-Fano -menetelmä tuottaa välittömästi dekoodattavissa olevan koodin (koodisanat eivät ole toistensa jatkeita). • Koodausproseduuri: • Lajittele lähdesymbolit 1. sarakkeeseen pienenevän todennäköisyyden mukaiseen järjestykseen. • Jaa järjestetty joukko kahteen todennäköisyyksiltään mahdollisimman tasasuureen osajoukkoon (kyseessä osajoukon symbolien todennäköisyyksien summa) ja merkitse jakokohta viivalla A–A’. • Muodostetaan sanan 1. bitti siten, että jakoviivan A–A’ yläpuolelle tulee 0 ja alapuolelle 1 (voisi olla myös toisinkin päin, koska valinnalla ei merkitystä koodin pituuden kannalta, sillä kyseessä on sopimusasia). • Jatka proseduuria kunnes kaikki jäljelle jääneet alijoukot on käsitelty samalla tavalla uusiksi alijoukoiksi todennäköisyyksien perusteella jakaen (kannattaa merkitä aina uudet jakoviivat). • Lopulta kussakin alijoukossa on vain 2 jäsentä, joista ylempi tuottaa luokkaa vastaavaan koodisanan viimeiseksi ”häntäbitiksi” nollan ja alempi ykkösen.

  14. Shannon-Fano-koodaus • Koodin tehokkuudeksi saadaan H(X)/L = 2.75/2.75 = 100%, koska alijoukkoihin jako todennäköisyyksien summan perusteella meni aina tasan. • Jos jako ei olisi mennyt tasan, tehokkuus olisi jäänyt alle 100%:n.

  15. Huffman-koodaus • Huffman-koodaus tuottaa lyhimmän mahdollisen koodisanan pituuden kullekkin lähde-entropian arvolle. • Koodausproseduuri: • Järjestä M kpl lähteen tuottamia symboleita pienenevän todennäköisyyden mukaiseen järjestykseen. • Yhdistä kaksi viimeisintä (epätodennäköisintä) symbolia XM–1 ja XM uudeksi ekvivalenttiseksi symboliksi, jonka todennäköisyys on yhdistettävien todennäköisyyksien summa pM–1 + pM. • Sijoita yhdistetty symboli sellaiseen paikkaan symbolien sarakkeessa, että se on todennäköisyyden mukaisessa järjestyksessä. Jos samat todennäköisyydet omaavia symboleita on useita, on aivan sama mihin kohtaa niiden symbolien joukossa yhdistetyn uuden symbolin sijoitat. • Toista edelliset askeleet niin kauan kuin on jäljellä enää vain kaksi yhdistettävää symbolia. • Näin olet saanut aikaan ns. koodipuun, jonka juuresta (siis kahdesta viimeksi yhdistetystä symbolista) lähtien luet kunkin koodisanapolun bitit kulkien koodipuuta latvaan saakka ja vielä siten siten, että haarauduttaessa ylöspäinotetaan koodisanaan mukaannolla ja alaspäinmentäessä ykkönen.

  16. Huffman-koodaus • Koodin tehokkuus 100%, kuten Shannon-Fano-koodauksellakin samojen symbolitodennäköisyyksien tapauksessa (johtuu Xi - tn. sopivasta ”tasavalinnasta”). Saadut sanat ovat tosin erilaiset. • Huffman-koodaus on yleensä tehokkaampi kuin Shannon-Fano-koodaus.

  17. Esimerkki 1

  18. Esimerkki 2

  19. Esimerkki 3

  20. Esimerkki 4

More Related