You are on page 1of 25

Rı̄gas Tehniskā Universitāte

Elektronikas un Telekomunikāciju fakultāte

Studiju darbs
Telekomunikāciju sistēmu ciparu iekārtās
Datu kompresija

Students: Dmitrijs Jemeļjanovs


Apliecı̄bas numurs: 081REB076
2010. g. 15. novembrı̄

Trondheima, 2010
Anotācija

Datu kompresija ir ļoti svarı̄gs ciparu signālu apstrādes veids, jo tā ļauj optimizēt vērtı̄gu resur-
su izmantošanu, piemērām, saglābāt uz cietā diska vairāk informācijas, vai arı̄ palielināt datu
pārraides efektivitāti. Ja kāda ciparu iekārta apstrādā lielas datu plūsmas, datu kompresija, kas
tiek pielietota šı̄s iekārtas darbı̄bā, ir svarı̄gs parametrs iekārtas resursu izmantošanas efektiv-
itātes novērtēšanā. No citas puses, datu kompresijas procedūra pieprasa skaitļošanas resursus,
tāpēc bieži jameklē kompromiss starp iekārtas atmiņas ierobežojumiem un skaitļošanas ier-
obežojumiem. Ir vairākas telekomunikāciju sistēmas, kur datu kompresija ir ļoti noderı̄ga, it
ı̄paši datu pārsūtı̄šanas protokolos.
Lai sasniegtu datu kompresijas pamatuzdevumu - reprezentēt (iekodēt) informāciju ar pēc
iespējas vismazāku bitu skaitu, ir jāsaprot dažādi būtiskie informācijas teorijas jēdzieni un
teorēmas. Darba 1. nodaļā ”Pamatjēdzieni” tiek aprakstı̄ti tādi jēdzieni kā varbūtı̄ba un
entropija, ka arı̄ Šenona teorēma. Arı̄ tiek paskaidrots, kāda ir atķirı̄ba starp kompresiju ar
zudumiem un bezzudumu kompresiju.
Bezzudumu kompresijas (kodēšanas) algoritmi un to pielietošanas piemēri tiek aprakstı̄ti
2. nodaļā ”Bezzudumu kompresijas paņēmieni”. Būtiski, ka informācija var būt ļoti
daudzveidı̄ga, piemērām, teksts, skaņa, video vai attēls. Tādā gadı̄jumā katram informācijas
veidam ir savas raksturı̄gas ı̄pašı̄bas, kuras var izmantot kompresijas labā, tāpēc esksistē speci-
fiskie kodēšanas algoritmi ar zudumiem, kas efektı̄vāk kodē kādu noteiktu informācijas tipu.
Audio informācijas pārraide ir ı̄paši svarı̄ga telekomunikācijās, tāpēc ieskatam kompresijā ar
zudumiem 3. nodaļā ”Audio kompresija ar zudumiem” tiek piedāvātas dažas teorētiskas
atziņas par cilvēka dzirdes ı̄pašı̄bu izmantošanu audio kompresijas nolūkos.
Darba 4. nodaļā ”Nobeigums” tiek piedāvāts aprakstı̄tas informācijas ı̄ss apkopojums,
ka arı̄ datu kompresijas attı̄stı̄bas tendences un perspektı̄vas.
Abstract

Data compression is very important kind of digital signal processing. Data compression algo-
rithms are able to optimize the usage of resources in different systems, for example, reduce the
amount of information in file system or increase efficiency of transmission channel by sending
more information with fewer number of bits. If any digital device is working with large amount
of data, data compression could be very useful to apply. On the one side, data compression al-
lows to reduce memory usage of a device, but on the other hand it requires more computational
power to run data compression algorithms. Although there is always a trade-off between mem-
ory and computational power requirements, data compression is really useful in many fields of
telecommunication engineering, for example, in network data transfer protocols.
To achieve the main aim of the data compression i.e. to represent (to code) infromation
into as fewer bits as possible, it is important to have deep understanding of various information
theory aspects. In the first chapter ”Pamatjēdzieni” what stands for ”General concepts”
such terms as probability and information entropy are defined as well as Shannon’s source
coding theorem is described briefly. Also this chapter deals with the brief description of the
lossless and lossy data compression principles and their differencies.
Lossless compression (coding) algorithms with several examples are described in chapter
2 ”Bezzudumu kompresijas paņēmieni” what stands for ”Lossless data compression
techniques”. It is important to notice, that information could be of various types like images,
text, video or audio information. For some specific information cases like audio, video and
images several lossy compressors exist. Lossy compressors make use of human perception’s lim-
itations and achieve compression by ”throwing away” some information. As audio information
transfer is very important aspect of telecommunication engineering, some human perception’s
limitations that are useful for audio compression purposes are described briefly in chapter 3
”Audio kompresija ar zudumiem” what stands for ”Lossy audio compression”.
The last chapter ”Nobeigums” provides a summary of presented information and the
insight in data compression development tendencies and perspectives.
Darba uzdevums

Darba galvenais uzdevums ir izpētı̄t datu kompresijas pamatus - teorētiskus aspektus, pazı̄stamākus
algoritmus un paņēmienus. Šo uzdevumu var sadalı̄t apakšuzdevumos, kuru sēcı̄ga izpildı̄šana
noved pie galvenā uzdevuma izpildı̄šanas:

1. Definēt pamatlielumus informācijas mērı̄šanai.

2. Balstoties uz informācijas mērı̄šanas pamatlielumu definı̄cijām, izpētı̄t teorētiskās robežas


datu kompresijai.

3. Definēt svarı̄gākus novirzienus datu kompresijā un to būtiskas atšķirı̄bas.

4. Izpētı̄t pazı̄stamākus bezzudumu datu kompresijas algoritmus.

5. Piedāvāt ieskatu kompresijā ar zudumiem, veicot kāda cilvēka uztveršanas organa analı̄zi.

6. Salı̄dzināt dažādus datu kompresijas novirzienus, to veidus. Veikt secinājumus par datu
kompresijas attı̄stı̄bas perspektı̄vām un noteikt svarı̄gākas attı̄stı̄bas iespējas.

Katrs apakšuzdevums prasa iepriekšējo apakšuzdevumu izpildı̄šanu. Piemērām, nav iespējams


definēt teorētiskās robežas datu kompresijai, nepiedāvājot definı̄cijas informācijas mērı̄šanai,
vai arı̄ saprast datu kompresijas būtı̄bu, nedefinējot tās teorētiskās robežas. Darba struktūra
pilnı̄bā atblist izvirzı̄to apakšuzdevumu sēcı̄gai izpildı̄šanai un galvenā uzdevuma izpildı̄šanai.
Saturs

1. Pamatjēdzieni 2

1.1. Varbūtı̄ba un informācijas entropija . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.2. Šenona kodēšanas teorēma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.3. Bezzudumu kompresija un kompresija ar zudumiem . . . . . . . . . . . . . . . . 4

2. Bezzudumu kompresijas paņēmieni 6

2.1. Ievads bezzudumu kompresijā . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.2. Krafta nevienādı̄ba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.3. Hafmana kodēšanas algoritms . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.4. Aritmētiskā kodēšana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.5. Lempel-Ziv kodēšana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3. Audio kompresija ar zudumiem 16

3.1. Frekvenču maskēšana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.2. Uztveršanas robežas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.3. Laika maskēšana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.4. Uztveršanas jūtı̄gums . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.5. Audio kodēšanas pielietojums . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

4. Nobeigums 19

1
1. Nodaļa

Pamatjēdzieni

1.1. Varbūtı̄ba un informācijas entropija

Informācijas teorijas pamatā ir spēja novērtēt informācijas saturu, kas balstās uz tādiem vienkāršiem
jēdzieniem kā varbūtı̄ba un informācijas entropija (tālāk tekstā vienkārši ”entropija”).

Varbūtı̄ba ir ticamu un nejaušu notikumu iespējamı̄ba, jeb iznākumu frekvence.

Šajā darbā iznākuma x varbūtı̄ba tiek apzı̄mēta ar p(x). Ansamblis X ir (x, AX , PX ), kur AX =
{a1 , a2 , a3 , ..., aI } ir iznākumu ”alfabets” ar katras vērtı̄bas vārbūtı̄bu PX = {p1 , p2 , p3 , ..., pI }.
Iznākums x ir nejaušā mainı̄gā vērtı̄ba, kas pieņem vienu no ”alfabēta” AX vērtı̄bām ar
varbūtı̄bu p(x = ai ) = pi .

Iznākuma x Šenona informācijas saturs jeb vienkārši informācijas saturs tiek definēts kā:
1
h(x = ai ) = log2 (1.1)
pi

Ansambļa X entropija ir definēta ar sekojošu formulu:


X 1
H(X) ≡ p(x)log2 (1.2)
x∈A
p(x)
X

Gan informācijas saturs, gan entropija tiek mērı̄ti bitos. No pēdējām divām formulām ir
redzams, ka entropija ir ansambļa vidējais informācijas saturs. Entropijas definı̄cija ir sekojoša:

Entropija ir nenoteiktı̄bas mērs, kas rāda nenoteiktı̄bas daudzumu varbūtı̄bu sadalı̄jumos.

Pētot šo funkciju uzvedı̄bu, atklājas to sakarı̄bas ar informācijas mērı̄šanu.

1. Piemērs: Ja kāda notikuma varbūtı̄ba ir 1, tā informācijas saturs ir 0.

Paskaidrojums: Ja notikums simtprocentı̄gi notiks, tā notikšana nesatur sevı̄ nekādu in-
formāciju.

2. Piemērs: Ja ansamblis X ir determenistiskais, tā entropija ir 0.

Paskaidrojums: Entropija ir nenoteiktı̄bas mērs, bet determenistiskā procesā nav nekādas


nenoteiktı̄bas. Pēc formulas, entropija ir vidējais informācijas saturs, bet determenistiskā proce-
sa gadı̄jumā ansambļa X katras sastāvdaļas informācijas saturs ir 0, kas vidēji, proti, dos nulles
entropiju.

2
3. Piemērs: Ja ansambļa X varbūtı̄bu sadalı̄jums ir uniformāls, tā entropija ir maksimāla.

Paskaidrojums: Šı̄s piemērs pierāda entropijas kā nenoteiktı̄bas mēra izmantošanas loǧiskumu.
Ja varbūtı̄bu sadalı̄jums ir uniformāls, tad visi iznākumi ir iespējami ar vienādu varbūtı̄bu, pro-
ti, tad arı̄ visgrūtāk pateikt, kāds iznākums notiks. Tas ir vislielākas nenoteiktı̄bas situācija,
tāpēc arı̄ entropija ir maksimālā.

4. Piemērs: Domu eksperimentā - spēlē ”Jūras kauja”, spēlētajam jaatrod viens kuǧis ar
1 rūtiņas izmēru laukā ar kopı̄go rūtiņu skaitu 100. Ar pirmo ”tukšo”šāvienu viņš saņem
1 1
h(x = ai ) = log2 = log2 ≈ 0.014 informācijas bitus. Turpinot neveiksmju sēriju, ar
pi 99/100
1
30. ”tukšo”šāvienu viņš saņem log2 ≈ 0.021 informācijas bitus. Ar 99. ”tukšo”šāvienu
69/70
1
viņš saņem log2 = 1 informācijas bitu. Tad, kad palika viena rūtiņa, tas izvelēšana dod
1/2
1
log2 = 0 informācijas bitus. Idomājoties jauno spēli, kurā spēlētajam paveicas trapı̄t kuǧı̄ ar
1
1
pirmo šāvienu, tas dod uzreiz log2 ≈ 6.64 informācijas bitus.
1/100

Paskaidrojums: Šı̄s piemērs pierāda Šenona informācijas satura kā informācijas mēra iz-
mantošanas loǧiskumu. Pirmkārt Šenona informācijas satura formulas izmantošana realizē
informācijas aditivitātes ı̄pašı̄bu. Šajā piemērā, veicot neveiksmı̄gus šāvienus, informācija tika
pakāpeniski akumulēta tā, kā pēc 99. neveiksmı̄gajiem šāvieniem, kuǧa atrāšnas vieta jau bija
zināma un trapı̄šana pēdējā palikušajā rūtiņā nedeva nekādu informāciju. Respektı̄vi, visu 99
neveiksmı̄go šāvienu informācijas saturu summa būs ≈ 6.64 biti, kas ir vienāds ar kuǧa pozı̄cijas
momentānas atkāšanas informācijas saturu, jo pēc savas būtı̄bas abas situācijas atklāj vienādu
informāciju.

Apakšnodaļas sēcinājums: Minētie piemēri pierāda, ka piedāvātas definı̄cijas informācijas


un informācijas nenoteiktı̄bas mērı̄šanai ir drošas un pamatotas. Šenona informācijas saturs un
entropija var tikt izmantoti datu informācijas raksturošanai ka arı̄ jautājumos, kas ir saistı̄ti
ar datu kompresijas algoritmu idejām. Tie tiks aprakstı̄ti turpmāk šajā darbā. Ar piedāvātām
entropijas un informācijas satura definı̄cijām tagad var aplūkot Šenona kodēšanas teorēmu.

1.2. Šenona kodēšanas teorēma

Šenona kodēšanas teorēma ir pamatteorēma, kas nosaka datu komprēsijas robežu:

N neatkarı̄gu gadı̄juma mainı̄go secı̄ba, kur katra mainı̄ga entropija ir H(X) var tikt iekodēta
N H(X) bitos ar neuzskatamiem informācijas zūdumiem, ja N → ∞. Pretēji, ja secı̄ba tiek
kodēta ar mazāk nekā N H(X) bitiem, informācija visticamāk tiks pazaudēta.

Šenona teorēmas pamatā ir tipisko secı̄bu kopas atpazı̄šana milzı̄gajā visu iespējamo N garuma
sēcı̄bu skaitā 2N . Tagad tiks piedāvāta sēcı̄bas tipiskuma definı̄cija un paskaidrojums.

Pieņēmsim, ka eksistē ansamblis X ar alfabētu AX . N simbolu gara secı̄ba saturēs apmēram


p1 N pirmā simbola parādı̄šanas. p2 N otrā simbola parādı̄šanas u.t.t. Tagad var pierakstı̄t šı̄s
secı̄bas varbūtı̄bu:
(p N ) (p N ) (pI N )
P (x)tipisk. = P (x1 ) · P (x2 ) · P (x3 ) · . . . · P (xN ) ≈ p1 1 · p2 2 · . . . · pI (1.3)

Tad var raksturot tipiskās secı̄bas informācijas saturu:


1 X 1
log2 ≈N p(i)log2 = N H (1.4)
P (X) i
pi

3
Tagad ir redzams, ka secı̄bas x informācijas saturs ļoti iespējami būs N H. Tas ir tipisko secı̄bu
kopas (tipiskās kopas) definı̄cijas pamats.

Tipiskā kopa ir secı̄bu kopa, kuras katra elementa (secı̄bas) varbūtı̄ba ir tuva 2−N H .

Lidzı̄gi var teikt:

Tipiskā kopa ir secı̄bu kopa, kuras katra elementa (secı̄bas) informācijas saturs ir N H.

1.1. Zı̄m.: Entropijas robeža kodēšanai (N → ∞) [1]

Zı̄mējumā 1.1. δ ir kļūdas varbūtı̄ba. Hδ (X) ir ansambļa X būtiskais bitu saturs, kas ir
atkarı̄gs no varbūtı̄bas pieļaut kļūdu δ. H0 (X) ir Hδ (X) gadı̄jums, kas δ = 0. Tagad ir skaidri
redzams, ka gadı̄jumā, kad N → ∞, atļaujoties niecı̄gu kļūdas iespēju δ, var panākt informācijas
kodēšanas apjoma samazināšanu no H0 bitiem lı̄dz H bitiem katram ansambļa simbolam. Tā
kā ansamļis sastāv no N tādiem simboliem, to var iekodēt ar N H bitiem, atļaujoties niecı̄gi
mazu kļūdas varbūtı̄bu δ.

Apakšnodaļas sēcinājums: No iepriekš minētiem apzı̄mējumiem un formulām ir skaidri


redzams, ka tipiskā kopa satur sevı̄ gandrı̄z visu varbūtı̄bu, ja N palielinās. Tas arı̄ pierāda
Šenona teorēmas loǧiskumu. Šenona teorēma var būt pierādı̄ta ar lielo skaitļu likumu. Šı̄s
pierādı̄jums šajā darbā nav aprakstı̄ts, jo piedāvāta informācija par Šenona kodēšanas teorēmu
ir pietiekama datu kompresijas paņēmienu izpratnei un analı̄zei.

1.3. Bezzudumu kompresija un kompresija ar zudumiem

Pētot kompresijas paņēmienus, svarı̄gi saprast, ka eksistē divi svarı̄gie datu kompresijas virzieni
- bezzudumu kompresija un kompresija ar zudumiem.

Bezzudumu kompresija ir datu kompresijas veids, kad oriǧināla informācija var tikt pilnı̄gi,
bez jebkādiem zudumiem, rekonstruēta no kodētas informācijas.

Bezzudumu kompresors ir spējı̄gs reprezentēt visu informāciju ar mazāka izmēra failu, tāpēc ka
tas samazina vairāk iespējamas informācijas koda vārdu garumus un palielina mazāk iespējamas
informācijas koda vārdu garumus. Tas nozı̄mē, ka, ja tādām kompresoram piedāvāt iekodēt
failu, kura eksistēšanai ir ļoti maza varbūtı̄ba, tad kompresors nevis samazinās tā izmēru,
bet pretēji, palielinās. Bezzudumu kompresija strādā, tāpēc ka tās pamatā ir ļoti precı̄zs
matemātiskais modelis. Tas analizē katras sēcı̄bas parādı̄šanas varbūtı̄bu un izvēlas koda
vārdu garumus tā, ka varbūtı̄ba, ka faila izmērs tiks samazināts ir vairākās reizēs lielāka, nekā
varbūtı̄ba, ka faila izmērs tiks palielināts. Ir arı̄ citi bezzudumu kompresijas veidi, kuru darbı̄bas

4
princips ir atšķirı̄gs (piemērām, Lempel-Ziv).

Kompresija ar zudumiem ir datu kompresijas veids, kad kodēta informācija satur tikai daļu
no oriǧinālas informācijas un rekonstruēta informācija ir atšķirı̄ga no originālas, taču tā, lai
atšķirı̄bas būtu pēc iespējas mazāk manāmas.

Kompresija ar zudumiem izmanto vairākus paņēmienus faila izmēra samazināšanai. Vairāku


kompresijas ar zudumiem algoritmu pamatā ir cilvēku organu informācijas uztveršanas ı̄patnı̄bas.
Piemēram, JPG formāts izmanto redzes ı̄patnı̄bas tā, ka var panākt attēla 10:1 kompresiju,
bez izteiktiem kropļojumiem attēla uztveršanā. MP3 audio formāts arı̄ daudzkārtı̄gi samaz-
ina informācijas daudzumu, kas apraksta muzikālo skaņdarbu, taču tas netraucē skaņdarba
uztveršanai, tāpēc ka MP3 pamatā tiek ņemtas vērā cilvēka dzirdes ı̄patnı̄bas. Visa informācija,
kas tika izmesta no oriǧināla, tik un tā nebūtu uztverta ar mūsu dzirdi. Kompresija ar zudu-
miem var reprezentēt ļoti lı̄dzigus failus kā vienu un to pašu informāciju. Tas netraucē,
piemēram, attēlu uztveršanai, jo lidzı̄gie attēli tik un tā ir lidzı̄gi - arı̄ pirms kompresijas.
Taču citos gadı̄jumos šādu situāciju dažreiz var uzskatı̄t par kļūdu. Iepriekšējā apakšnodaļā,
parametrs δ, kas tika izmantots, aprakstot tipisko kopu, apzı̄mē šı̄s kļūdas parādı̄šanas varbūtı̄bu.
Kā tika pierādı̄ts, datu izmēru var daudz samazināt, atļaujot tikai niecı̄gu kļūdas varbūtı̄bu.
Svarı̄gi saprast, ka kompresija ar zudumiem, kuru apraksta ar parametru δ, nav pēc savas
būtı̄bas kompresija ar zudumiem tādā ziņā, ka tājā zudumu varbūtı̄ba tiecas uz nulli. Šajā
darbā, runājot par kompresiju ar zudumiem, tiek runāts par datu kompresijas veidu, kas ”izmet”
lieko informāciju no avota.

Svarı̄gi pieminēt, ka eksistē kompresori, kuri izmanto gan bezzudumu kompresijas paņēmienus,
gan kompresiju ar zudumiem vienlaikus. Viens labs piemērs ir MP3 formāts, kas pēc savas
būtı̄bas ir kompresors ar zudumiem. Tā pamatā ir cilvēka dzirdes uztveršanas ı̄patnı̄bas, taču
viens no MP3 kompresora blokiem ir arı̄ bezzudumu kompresors, kas jau apstrādā iepriekš
iekodēto skaņu vienkārši kā bitu secı̄bu, izmantojot tikai matemātisko modeli.

1. Piemērs: Izmantojot bezzudumu kompresoru, daudzkartı̄gi veicot faila kompresiju un


dekompresiju, pēc vairākiem atkārtojumiem un pedējas dekompresijas operācijas tiks iegūts
tāds pats fails, kas bija sākumā.

Paskaidrojums: Bezzudumu kompresors, pēc savas definı̄cijas reprezentē visu sākotnējo in-
formāciju, tapēc pēc vairākiem algoritma pielietojumiem nebūs nekādas satura degradācijas.

2. Piemērs: Izmantojot kompresoru ar zudumiem, daudzkartı̄gi veicot faila kompresiju un


dekompresiju, pēc vairākiem atkārtojumiem un pedējas dekompresijas operācijas var tikt iegūts
fails ar ļoti kropļotu saturu.

Paskaidrojums: Kompresors ar zudumiem, pēc savas būtı̄bas panāk kompresiju, atļaujot


kādas informācijas pazaudēšanu. Pēc vairākiem komprēsijas un dekomprēsijas atkārtojumiem
pazaudētās informācijas apjoms var pieaugt.

Apakšnodaļas sēcinājums: Gan bezzudumu kompresija, gan kompresija ar zudumiem ir


svarı̄gi kompresijas veidi, kur katram ir savas pielietošanas ı̄patnı̄bas un piemērotākas situācijas.
Kompresija ar zudumiem, visparı̄gi, ir piemērotāka skaņas, attēlu vai video ierakstu kompresijai,
jo tieši šājos informācijas veidos var izmantot cilvēka uztveršanas orgānu ı̄patnı̄bas un panākt
lielāku kompresiju, pazaudējot mazāk svarı̄gu mūsu uztveršanai informāciju. Bezzudumu kom-
presija ir svarı̄ga visparı̄gai informācijas kompresijai, kad katrs informācijas bits ir svarı̄gs un
pēc dekompresijas oriǧināls jāatjauno bez zudumiem. Tālāk šajā darbā tiks apskatı̄ti visparı̄gie
bezzudumu kompresijas paņēmieni (2.) ka arı̄ audio kompresija ar zūdumiem (3.).

5
2. Nodaļa

Bezzudumu kompresijas paņēmieni

2.1. Ievads bezzudumu kompresijā

Izstrādājot bezzudumu kompresijas algoritmu, jāsaprot, kādām ı̄pašı̄bām jāpiemı̄t kodam. Jāņēm
vērā daži principi:

1. Unikālas atkodējamı̄bas princips

2. Optimālas koda vārdu piešķiršanas princips

3. Koda dekodējamı̄bas praktiskums

Šajā nodaļā tiks izmantoti sekojoši apzı̄mējumi:


AN ir visu iespējamo N garuma alfabeta A simbolu sēcı̄bu kopa.
A+ ir visu iespējamo alfabēta A secı̄bu kopa

1. Piemērs: Ja A={0, 1}, tad A2 ={0, 1}2 ={00, 01, 10, 11}
2. Piemērs: Ja A={0, 1}, tad A+ ={0, 1}+ ={0, 1, 00, 01, 10, 11, 000, 001 . . .}

Koda definı̄cija:

Binārais kods C ansamblim X ir koda vārdu piešķiršana, kurā katram x no alfabēta AX piešķir
koda vārdus no alfabēra {0, 1}+ . Katra x attiecı̄gais koda vārds tiek apzı̄mēts ar c(x) un l(x)
apzı̄mē koda vārdu garumus ar li = l(ai ).

Unikālas atkodējamı̄bas princips:

Kods ir unikāli atkodējams, ja kodā C + nekādas divas atšķirı̄gas secı̄bas nav iekodētas vienādi:

∀x, y ∈ A+
X, x 6= y ⇒ c+ (x) 6= c+ (y) (2.1)

Koda dekodējamı̄bas praktiskums:

Binārais kods ir visvieglāk atkodējams, ja katru koda vārdu iespējams atkodēt uzreiz pēc tā
saņemšanas dekodētajā. Tas nozı̄mē, ka neviens kods nav cita koda prefikss. Tādus kodus sauc
par ”brı̄va prefiksa” kodiem.

1. Piemērs: C1 = {0, 10, 11} ir brı̄va prefiksa kods.

6
Paskaidrojums: Koda vārds 0 nav koda vārdu 10 un 11 prefikss. Koda vārds 10 nav koda
vārdu 0 un 11 prefikss. Koda vārds 11 nav koda vārdu 0 un 10 prefikss.

2. Piemērs: C2 = {0, 10, 101} nav brı̄va prefiksa kods.

Paskaidrojums: Koda vārds 0 nav koda vārdu 10 un 101 prefikss, bet koda vārds 10 ir koda
vārda 101 prefikss.

Brı̄va prefiksa kodus ērti aprakstı̄t ar koka diagrammām. Pilna koda attiecı̄gais koda koks
nesatur neizmantotus zarus. Pilna, brı̄va prefiksa koda koka piemērs tiek piedāvāts zı̄mējumā
2.1.

2.1. Zı̄m.: Brı̄va prefiksa kods C3 [1]

Citādi kodu C3 var pierakstı̄t kā C3 = {0, 10, 110, 111}.

Vidējais koda vārda garums kodam C, kas iekodē ansambli X, tiek apzı̄mēts ar L(C, X):
X
L(C, X) = P (x)l(x) (2.2)
x∈AX

To var arı̄ pierakstı̄t kā:

I
X
L(C, X) = pi li , (2.3)
i=1

kur I = |AX | (alfabēta simbolu skaits).

Izmantojot Šenona kodēšanas teorēmu, var pateikt kā:

Ansamblim X eksistē bezzudumu mainı̄ga koda vārda garuma kods C, kura vidējais koda vārda
garums L(C,X) apmierinās:

L(C, X) ∈ [H(X), H(X) + 1) (2.4)

Optimāls koda vārdu garums ir tāds garums, ar kuru L(C, X) = H(X). Tas dod iespēju
formulēt nosācı̄jumus optimālu koda vārdu garumu izvelēšanai:

Koda vārdu vidējais garums ir minimizēts un vienāds ar H(X) tikai tad, kad koda vārdu garumi
ir vienādi ar Šenona informācijas saturu:

li = log2 (1/pi ) (2.5)

3. Piemērs: Zı̄mējumā 2.2. tiek attēloti koda C3 parametri.

Paskaidrojums: Kā ir redzams no 2.2., kods C3 ir domāts ansambļa X ar alfabētu ”a, b, c,


d” iekodēšanai. Svarı̄gi pievērst uzmanı̄bu, ka X entropija ir 1.75 biti. Arı̄ L(C3 , X) ir 1.75

7
2.2. Zı̄m.: Brı̄va prefiksa koda C3 parametri [1]

biti. Iepriekš jau tika definēts: ”Koda vārdu vidējais garums ir minimizēts un vienāds ar H(X)
tikai tad, kad koda vārdu garumi ir vienādi ar Šenona informācijas saturu”. No 2.2. pedējiem
stabiņiem ir redzams, ka kodam C3 tā arı̄ ir: li = log2 (1/pi ) = h(pi ).

No 2.2. ir skaidri redzams, ka vidējais koda garums var būt vienāds ar ansambļa entropiju tikai
tad, kad ansambļa alfabēta simbolu varbūtı̄bas ir divnieka pakāpes formā (2−k ).

2.2. Krafta nevienādı̄ba

Krafta nevienādı̄ba ir svarı̄gs informācijas teorijas aspekts, kas nosaka unikāli dekodējamo kodu
koda vārdu garuma robežu. Krafta nevienādı̄ba nosaka, ka jebkuram unikāli dekodējamam
kodam C(X) ar bināro alfabētu {0, 1}, koda garumiem li jāapmierina nevienādı̄bu:

I
X
2−li ≤ 1 (2.6)
i=1

Ja kods apmierinā šo nevienādı̄bu ar vienādı̄bas zı̄mi, sāka, ka kods ir pilns:

I
X
2−li = 1 (2.7)
i=1

2.3. Zı̄m.: Bināra koda budžets [1]

Zı̄mejumā 2.3. Krafta nevienādı̄ba kļūst praktiski skaidrāka. ”The total simbol code budget”
ir bināra koda koda vārdu garumu kopējais budžets, kas Krafta nevienādı̄bā ir vienāds ar 1.

8
2.4. Zı̄m.: Iepriekš minētā C3 koda vārdu izvēle no bināra koda budžeta [1]

2.3. Hafmana kodēšanas algoritms

Iepriekšējā apakšnodaļā tika paskaidrotas un pierādı̄tas svarı̄gas robežas koda vārdu garumu
izvēlei un koda vārdu sastādı̄šanai. Tagad, ņēmot verā minēto informāciju, parādās jautājums:

Dotām varbūtı̄bām P, kā jārı̄kojas, sastādot optimālo brı̄va prefiksa kodu?

Vārdam ”optimālais” iepriekšējā teikumā ir tāda nozı̄me, ka optimālā brı̄va prefiksa koda
vidējais koda vārdu garums L(C, X) ir pēc iespējas samazināts, t.i. vistuvāks entropijai.

Ja neizmantot optimālos koda vārdu garumus, kas apmierinā nosacı̄jumu li = log2 (1/pi ) (to
nav iespējams apmierināt visos gadı̄jumos, kad kāds no pi 6= 2−k t.i. nav divnieka pakāpes
formā) , tad L(C, X) noteikti būs lielāks par entropiju.

Hafmana algoritms ļauj atrisināt optimālā prefiksa koda atrāšanas problēmu. Algoritma triks
ir koda konstruēšana pretējā virzienā, sākot no koda vārdu beigām. Ņēmot vērā koka modeļi,
var teikt, ka ar Hafmana algoritmu binārais koks tiek sastādı̄ts, sākot no koka zariem.

Hafmana algoritms:

1. Jāņēm alfabēta divi simboli ar vismazāko vārbūtı̄bu. Šiem simboliem jāpiešķir visgarākie
koda vārdi, kas katram būs ar vienādu garumu un atšķirsies tikai ar pēdējo bitu.

2. Jāapskata iepriekšejā punkta divi simboli kā viens vesels simbols (vārbūtı̄bas jāsaskaita)
un jāatkārto 1. solis.

Tā kā katrs solis samazinā alfabēta garumu par 1, tad algoritms pabeidz koda vārdu piešķiršanas
procedūru |AX | − 1 soļos.

Zı̄mējumā 2.5. tiek parādı̄ts Hafmana algoritma reālas izmantošanas piemērs. Koda sastādı̄šana
tika uzsākta ar koda vārdu piešķiršanu burtiem ”j” un ”z”, kuru vārbūtı̄ba angļu valodā ir
vismazākā. Talākās darbı̄bas tika veiktas pēc iepriekš aprakstı̄ta algoritma. Rezultātā, iegūtā
koda vidējais vārda garums L(C, X) ir 4.15 biti. Ansambļa entropija ir 4.11 biti. Atšķirı̄ba ir
ļoti maza, jo Hafmana algoritms konstruēja koda vārdus tā, ka to garumi ir ļoti lı̄dzı̄gi ansambļa
katra simbola informācijas saturam. Tas arı̄ ir redzams no tabulas zı̄mējumā 2.5.

9
2.5. Zı̄m.: Hafmana kods angļu valodas burtu ansamblim [1]

Neskatoties uz visām priekšrocı̄bām, kuras piedāvā Hafmana algoritms, tam piemı̄t arı̄ trūkumi:

1. Hafmana algoritms ir efektı̄vs, kad ansambļa varbūtı̄bas ir nemainı̄gas. Reālos apstākļos,


piemērām, reālā angļu valodas teksta kompresijas gadı̄jumā, burtu parādı̄šanas varbūtı̄ba
mainās, atkarı̄gi no konteksta. Piemērām, angļu valodā burts ”u” ir iespējamāks nekā
”e”, ja ir zināms, ka iepriekšējais burts bija ”q”, tāpēc ka burtu savienojumu ”qu” angļu
valodā var satikt biežāk, nekā burtu savienojumu ”qe”.

2. Hafmana algoritmam koda vārdu vidējo garumu formula saka:


L(C, X) ∈ [H(X), H(X) + 1)
Gadı̄jumā, kad ansambļa entropija ir liela, pārpalikums 00 H(X) + 100 nav būtisks. Taču
ir arı̄ gadı̄jumi, kad ansambļa entropija ir maza. Tad koda vārdu izmēra entropijas
pārsniegšana būs parāk ievērojama.

Neskatoties uz to, ka Hafmana kods tiek nosaukts par optimālo, tas nav efektı̄vs reālajos
apstākļos. Var teikt, ka Hafmana kods ir optimāls binārais simbolu kods. Praktiskiem nolūkiem
nevajag izmantot bināro simbolu kodu. Hafmana koda problēmas tiek atrisinātas, izmantojot
aritmētisko kodēšanu, par kuru tiek stāstı̄ts tālāk šajā darbā.

10
2.4. Aritmētiskā kodēšana

Aritmētiskā kodēšana ir kompresijas metods, kura pamatā ir doma, ka avota kompresija nozı̄mē
šı̄ avota varbūtı̄bas modelēšanu.

Svarı̄gi pievērst uzmanı̄bu atšķirı̄bai no Hafmana algoritma, kurā arı̄ tika izmantots vārbūtı̄bas
modeļis - Hafmana algoritma modelis nepētı̄ja katru konkrētu avotu. Aritmētiskās kodēšanas
gadı̄jumā, kompresors sastāda varbūtı̄bu modeļi tieši pēc kodējamā avota satura.

Lai paskaidrotu aritmētiskās kodēšanas darbı̄bas principu tiek izmantoti sekojoši apzı̄mējumi:

• Avota alfabēts ir AX = {a1 , a2 , . . . , aI }, kur simbols aI apzı̄mē datu beigas.

• Avots ir secı̄ba x1 , x2 , . . . , xn . . ..

• Prognozējamais varbūtı̄bu sadalı̄jums ir P (xn = ai |x1 , . . . , xn−1 ). Šı̄s sadalı̄jums parāda,


kāda ir simbola xn varbūtı̄ba, ja iepriekš tika novērota secı̄ba x1 , . . . , xn−1 .

• Tiek pieņemts, ka gan kompresors, gan dekompresors satur sevı̄ programmu, kas ǧenerē
vienādus sadalı̄jumus P (xn = ai |x1 , . . . , xn−1 ).

• Bitu secı̄bas reprezentē intervālus robežās [0,1). Piemērām, divu bitu secı̄ba ”01” tiek
saprasta kā binārais reālais skaitlis ”0.01”, kas apzı̄mē attiecı̄go intervālu [0.01, 0.10)
binārā formātā un intervālu [0.25, 0.50) decimālā formātā.

• Jo garāka ir bitu secı̄ba, jo vairāk ciparu ”aiz komata” tā apraksta, t.i. nosaka precı̄zāku
intervālu:

2.6. Zı̄m.: Bitu secı̄bas definē decimāla formāta intervālus robežās [0,1) [1]

1. Piemērs: 1Mb binārais fails (223 biti) apraksta reālo skaitli starp 0 un 1 ar precizitāti
≈ 2000000 ciparu aiz komata.

Paskaidrojums: Katrs baits apraksta ≈ 2 ciparus aiz komata, 1Mb=1024 · 1024 baiti.

Intervālu [0,1) (uz reālo skaitļu ass) var ērti sadalı̄t apakšintervālos ar varbūtı̄bām P (x1 = ai )
kā parādı̄ts zı̄mējumā 2.7.

Katru intervālu ai var sadalı̄t apakšintervālos, kuri tiek apzı̄mēti ai a1 , ai a2 , . . . , ai , aI tā, kā
katra apakšintervāla ai aj garums ir proporcionāls varbūtı̄bai P (x2 = aj |x1 = ai ). Patiesi, šajā
gadı̄jumā katra apakšintervāla ai aj garums būs vienāds ar varbūtı̄bu:

P (xi = ai , x2 = aj ) = P (x1 = ai )P (x2 = aj |x1 = ai ) (2.8)

11
2.7. Zı̄m.: Varbūtı̄bu intervāli [1]

Tā, atkārtojot šo procedūru, intervāls [0,1) var tikt sadalı̄ts apakšintervālos, kas ar savu garumu
aprakstı̄s jebkuras noteiktā garuma simbolu secı̄bas x1 x2 . . . xN varbūtı̄bu.

Lai iekodētu secı̄bu x1 , x2 , . . . , xN , vispirms vajag atrast intervālu, kas ir attiecı̄gs secı̄bas
varbūtı̄bai. Tad iekodēta bitu secı̄ba aprakstı̄s intervālu, kas atrodas x1 , x2 , . . . , xN varbūtı̄bas
intervāla iekšā.

2. Piemērs: Vienkāršojot kodēšanas darbı̄bas paskaidrojumu, iedomāsimies, ka avotā ir


iespējami tikai divi simboli - ”a” un ”b”. ar varbūtı̄bām pa = 0.425, pb = 0.425. Arı̄ nedrı̄kst
aizmirst par faila gala simbolu 2, kura varbūtı̄ba šajā piemērā ir p2 = 0.15. Iedomāsimies
avotu ar saturu ”bbba2”.

2.8. Zı̄m.: Koda vārda meklēšana avotam ”bba2” [1]

12
Paskaidrojums: Zı̄mējumā 2.8. ir redzama koda vārda sastādı̄šanas procedūra, kur avots ir
”bbba2”. Kad tika apskatı̄ts pirmais avota simbols, ”b”, kodētājs zina tikai to, ka kodētā
secı̄ba sāksies ar ”01”, ”10” vai ”11”, tāpēc šajā posmā kodētajs nevar pieņemt lēmumu par
to, vai rezultāts sāksies ar ”0”, vai ”1” un apskata otro avota simbolu. Otrais simbols ir arı̄
”b”. Tagad rezultāta pirmais bits jau kļūst noteikts - tas ir ”1”, jo ”bb” atrodas pilnı̄gi šajā
intervālā. Procedūra turpinās un intervāls sašaurinās, apskatot katru jauno simbolu, kamēr
netiek sasniegts avota gala simbols 2. Tad, apskatot intervāla ”bbba” apakšintervālus, tiek
atrasts intervāls, kas atrodas ”bbba2” intervāla iekšā - tas ir ”10011110”.

3. Piemērs: Iedomāsimies dekodēšanas procedūru. Tiek saņemta secı̄ba ”100111101”.

Paskaidrojums: Pēc iepriekš minētā pieņēmuma, dekodētājs var aprēķināt avota varbūtı̄bas
pa , pb un p2 . Tagad, zinot varbūtı̄bas, dekodētājs var ǧenerēt intervālus. Apskatot ”10”,
jau ir skaidrs, ka avota pirmais simbols ir ”b”, jo ”10” attiecı̄gais intervāls atrodas pilnı̄gi in-
tervāla ”b” iekšā. Tagad dekodētajs var ǧenerēt apakšintervālus ”b” intervāla iekšā un turpināt
dekodēšanas procedūru pēc tā paša principa. Kad tiks saņemts simbols 2, dekodētājs zinās, ka
dekodēšanas procedūra ir pabeigta.

Aritmētiskai kodēšanai ir vairākas priekšrocı̄bas:

1. Ja avota dažadās daļās simbolu varbūtı̄bas mainās, tas netraucē kodēšanas procedūrai, jo
vietās, kur notiek varbūtı̄bu izmaiņa, var izmantot speciālo simbolu, kas par to paziņos.
Pēc tāda simbola novērošanas kodētājs var reǧenerēt varbūtı̄bu intervālus un turpināt
kodēšanas procedūru.

2. Aritmētiskā kodēšana ir efektı̄va no informācijas teorijas viedokļa. Vidējais rezultāta


garums var būt lielāks par avota entropiju ne vairāk kā par 2 bitiem.

3. Lai iekodētu N simbolus, kodētājam jāaprēķinā tikai N |A| varbūtı̄bas, tāpēc praksē šı̄s
algoritms strādā ātri.

4. Aritmētiskā kodēšana ir elastı̄ga - tā var apstrādāt jebkuru avota alfabētu un iekodēto
alfabetu, jebkuru varbūtı̄bu sadalı̄jumu, kas var mainı̄ties atkarı̄gi no konteksta.

Aritmētiskā kodēšana var tikt izmantota datu kompresijai, tomēr tai ir arı̄ vairākas citas pieli-
etošanas iespējas:

1. Zinot avota modeļi, aritmētisko kodēšanu var izmantot gadı̄juma secı̄bu ǧenerēšanai.
Piemērām, var ǧenerēt gadı̄juma bitu secı̄bu ar kaut kādu nepieciešamo vārbūtı̄bu sadalı̄jumu
{p0 , p1 }.

2. Ja uzskatı̄t datu ievadı̄šanu datorā kā datu kompresijas veidu, aritmetiskā kodēšana var
palı̄dzēt optimizēt šo procesu. Tā kā aritmetiskā kodēšana var piešķirt simbolu secı̄bai pēc
iespējas mazāku bitu skaitu, datu ievadı̄šanas gadı̄jumā tā var palı̄dzēt izstrādāt efektı̄vas
ierı̄ces datu ievādei ar mazāku operāciju skaitu. Viens no tādiem piemēriem ir programma
”Dasher”, kas palı̄dz ar diezgan lielo ātrumu ievadı̄t tekstu bez klaviatūras.

13
2.5. Lempel-Ziv kodēšana

Lempel-Ziv kodēšanas metodes pamatā ir simbolu secı̄bas sadalı̄šana apakšsecı̄bās un rādı̄tāju


izmantošana, kas norāda uz apakšsecı̄bas iepriekšējas parādı̄šanas vietu un aizvieto to, ja tā ir
citas, garākas apakšsecı̄bas sākumā.

Lempel-Ziv algoritmu var skaidrāk aprakstı̄t pa punktiem, uzreiz parādot piemēru:

1. Avota simbolu secı̄bu jāsadala mazāko apakšsecı̄bu kopā, jeb vārdnı̄cā. Katra simbolu
apakšsecı̄ba, kas tiek pievienota vārdnı̄cā nevar būt vienāda ar jebkuru iepriekš ierakstı̄to
vārdnı̄cā apakšsecı̄bu. Svarı̄gi, ka vārdnı̄cas pirmais elements ir tukša apakšsecı̄ba λ.
Avots: 1011010100010
Vārdnı̄ca: λ, 1, 0, 11, 01, 010, 00, 10
2. Katrai apakšsecı̄bai tiek piešķirts kārtas numurs, jeb adrese. Piešķiršana sākās no ”0”
tukšai apakšsecı̄bai u.t.t.
Vārdnı̄ca ar adresēm: λ[0], 1[1], 0[2], 11[3], 01[4], 010[5], 00[6], 10[7]
3. Avots tiek kodēts tā, kā katra apakšsecı̄ba, kas atrodas vārdnı̄cā tiek kodēta ar atsauci
jeb rādı̄tāju uz citas iepriekš aprakstı̄tas apakšsecı̄bas adresi un bitu, kas jāpievieno ie-
priekšaprakstı̄tājai apakšsecı̄bai, lai iegūtu tekoǐ kodētu apakšsecı̄bu. Skaidrı̄bas pēc,
vispirms uzrakstı̄sim kodēto secı̄bu, atdalot atsevišķo vārdnı̄cas elementu kodēšanu ar
iekavām, ka arı̄ ar komatiem, kas atdalı̄s adreses no pievienotiem bitiem:
(,1) (0,0) (01,1) (10,1) (100,0) (010,0) (001,0)
Paskaidrojums: (,1) ir vārdnı̄cas pirmā elementa (”1”) kods. Adreses vieta ir tukša, jo
”1” ir pirmais elements vārdnı̄cā un tā kodēšanai adrese nav jāuzrāda. Otrais vārdnı̄cas
elements ir ”0”. Tas nav pirmais elements, tāpēc adrese obligāti jāuzrāda. Šajā gadı̄jumā
adrese norāda uz λ un pievienotais bits ir ”0”. Tas ir pareizi, jo vārdnı̄cas elementu ”0”
var iegūt, pievienojot nulli tukšai apakšsecı̄bai λ, kas rezultātā, proti, būs ”0”. Kodēšanas
procedūra turpinās pēc aprakstı̄tiem noteikumiem. Gala rezultāts tiek iegūts, pierakstot
visus bitus bez komatiem un iekavām: 100011101100001000010

Lempel-Ziv koda dekodēšanas pamatā ir tas, kā katra adrese aizņem kodētā secı̄bā tieši dlog2 s(n)e
bitus (s(n) - adreses decimālā vērtı̄ba), bet pievienotais bits ir tikai viens. Tad kodēto secı̄bu
viegli sadalı̄t grupās, kas apraksta katru vārdnı̄cas elementu atsevišķi, un veikt dekodēšanu,
sākot no pirmā vārdnı̄cas elementa.

Dekodēšanas piemērs: Tika saņemta bitu secı̄ba 100011101100001000010.

• Ir zināms, kas pirmais elements tiek pierakstı̄ts bez adreses, tad ”1” ir pirmais vārdnı̄cas
elements.
• Otrā elementa adreses garums ir dlog2 2e = 1. Tad var atdalı̄t (0,0), kas nozı̄mē, ka
vārdnı̄cas otrais elements ir ”0”.
• Trešā elementa adreses garums ir dlog2 3 = 2e. Tad ”01” ir adrese, kas norāda uz vārdnı̄cas
elementu ”1” un pievienotais bits ir ”1”. Tas liecina par to, ka vārdnı̄cas trešais elements
ir ”11”.
• Procedūra turpinās lı̄dz tiek iegūti visi vārdnı̄cas elementi.
• Gala rezultāts ir visu vārdnı̄cas elementu apvienošana vienā secı̄bā.

Šajā piemērā nav ı̄sti redzama Lempel-Ziv spēja samazināt failu izmēru, jo piedāvātā secı̄ba
ir ı̄sa un tajā nav vairākārtı̄gi atkārtojamo elementu. Tāds piemērs tika izvelēts algoritma
darbı̄bas pamatprincipa paskaidrošanai.

14
Lempel-Ziv algoritms ir ļoti atšķirı̄gs no iepriekš aprakstı̄tājiem šajā darbā algoritmiem. Viena
no svarı̄gām ı̄pašı̄bām, ka tas savā darbı̄bā neizmanto avota varbūtı̄bu modeļi. Neskatoties uz
to, ergodiskajām avotam (ergodiskais avots - avots ”bez atmiņas”) Lempel-Ziv algoritms asimp-
totiski samazinā avota izmēru lı̄dz tā entropijai. Lempel-Ziv algoritmu sauc par ”universālo”,
jo tas efektı̄vi apstrādā jebkuru informāciju, neuzskatot, vai tas ir teksts, attēls vai vienkārši
bitu secı̄ba.

Lempel-Ziv efektivitātes pamatā ir fakts, ka vairāki faili satur vienādu vai lı̄dzı̄gu fragmentu
atkārtojumus. Šı̄s algoritms ir ātrs, tomēr dažos gadı̄jumos, aritmētiskā kodēšana ir labāka,
piemērām, apstrādājot teksta failus.

Praksē Lempel-Ziv kodē failu, skanējot tā saturu ar ”logu”, kura izmērs noteic gan kodēšanas
ātrumu, gan kvalitāti. Jo lielāks ir logs, jo lielāka iespēja atrast piemērotāku apakšsecı̄bu, taču
lielāks logs pieprāsa vairāk resursu.

Eksistē vairākas Lempel-Ziv algoritma versijas un modifikācijas:

• LZ77 (Lempel-Ziv algoritms, kas tika publicēts 1977. gadā) LZ77 strādā, izmantojot
datus, kas failā ir pirms tekošā simbola.

• LZ78 (Lempel-Ziv algoritms, kas tika publicēts 1978. gadā) LZ78 strādā, skanējot datus,
kas atrodas faila priekšā, pēc tekošā simbola.

• LZMA (”Lempel Ziv Markov chain algorithm” jeb ”Lempel-Ziv Markova ķēžu algo-
ritms”).

• LZJB algoritms, kas ir ir LZRW1 algoritma modifikācija.

• LZS algoritms.

Lempel-Ziv pielietošana:

• LZMA algoritms tiek pielietots tādā populārā datu kompresijas programā kā 7-zip.

• LZJB algoritms ir Sun Microsystems failu sistēmas ZFS pamatā.

• Deflate ir ļoti populārs kodēšanas algoritms, kas ir LZ77 un Hafmana koda apvienojums.
Tas ir plaši pielietots vairākās datu kompresijas programās.

• LZS algoritms ir plaši pielietots telekomunikācijās kā interneta protokolu kompresijas


algoritms. LZS tiek izmantots Cisco IOS programatūrā.

• LZX algoritms tiek pielietots LZX kompresijas programmā ka arı̄ Microsoft Xbox Live
Avatars kompresijā.

Ir arı̄ vairākas citas Lempel-Ziv modifikācijas un pielietošanas iespējas, jo Lempel-Ziv algoritmi


arı̄ mūsdienās tiek modificēti un uzlaboti kādiem konkrētiem pielitošanas mērķiem.

15
3. Nodaļa

Audio kompresija ar zudumiem

Audio kompresija ir sarežǧı̄ts kompresijas veids, kas sastāv no vairākām operācijām. Šajā darbā
tiek aprakstı̄tas tikai cilvēka dzirdes uztveres analı̄zes metodes, kas var būt noderı̄gas audio
kompresijai ar zudumiem, neiedzilinoties citās audio kompresijas operācijās. Audio kodēšanas
ar zudumiem galvenais pamatprincips ir:

Nevajag kodēt un saglābāt to, ko nevar dzirdēt.

3.1. Frekvenču maskēšana

Cilvēka ausis uztver skaņu nelineāri. Dzirdēšanas organs var tikt aprakstı̄ts kā filtru kopa, kas
reaǧē uz signāliem katrs ar savu pārvades funkciju. Auss membrānas frekvenču analı̄ze skaidro
maskēšanas efektu - ja tiek dzirdēts skaļāks signāls ar noteiktu frekvenci, klusāks signāls ar citu
frekvenci nebūs dzirdams. Tas nozı̄mē, ka informāciju par tādu klusāku signālu var nekodēt un
tas neizmainı̄s audio kompozı̄cijas uztveršanas kvalitāti.

3.1. Zı̄m.: Frekvenču maskēšana [5]

Zı̄mējumā 3.1. tiek parādı̄ts, kā strādā frekvenču maskēšana. Dzirdētais signāls maskē visus
citus signālus, kas atrodas zem skaļāka signāla.

16
3.2. Uztveršanas robežas

Rı̄kojoties pēc iepriekš definēta audio kodēšanas ar zudumiem principa, nav jakodē informācija,
kas netiks uztverta ar cilvēka dzirdes organiem. Pētot cilvēka dzirdes ı̄pašı̄bas, tika noteikti
dzirdes ierobežojumi, kurus var izmantot tādas kompresijas veidam. Ierobežojumi tiek attēloti
zı̄mējumā 3.2.

3.2. Zı̄m.: Cilvēka dzirdes ierobežojumi [4]

Kā ir redzams no 3.2., dzirde ir ierobežota kā uz frekvenču ass, tā arı̄ uz decibelu skaņas spie-
diena lı̄meņa ass. Izmantojot šo informāciju, var panākt, lai lieka informācija, kas neiekļaujas
šajās robežās netiktu kodēta.

3.3. Laika maskēšana

Laika maskēšnas darbı̄bas pamatā ir cita cilvēka dzirdes ı̄pašı̄ba - ja tika uztvērts ļoti skaļš
skaņas signāls, nelielu laiku pēc tā mūsu dzirdes uztveršanas spēja ir daudz mazāka. Ņēmot
verā šo ı̄pašı̄bu, var samazināt audiofaila izmēru, nekodējot audio informāciju šajos periodos,
kas seko pēc skaļām skaņām.

3.4. Uztveršanas jūtı̄gums

Skaņas uztveršanas jūtı̄gums ir mainı̄gs, atkarı̄bā no skaļuma. Zı̄mējums 3.3. parāda ”isofonu”
lı̄knes. Katra lı̄nija parāda toņus, kas ir uztverti vienādi skaļi (ar vienādu skaļuma lı̄meni,
kas tiek mērı̄ts fonos). Pēc definı̄cijas, 1kHz sinusoı̄das skaņa ar 20dB skaņas spiediena lı̄meni
atbilst 20 foniem.

17
1. Piemērs: Lai uztvertu tāda paša skaļuma lı̄meni (20 fonus) ar 100Hz skaņu, skaņas spiedi-
ena lı̄menis jāpalielina par 17dB, salı̄dzinot ar 1kHz skaņas spiediena lı̄meni.

2. Piemērs: Lai uztvertu 20 fonus ar 20Hz skaņu, 1kHz skaņas spiediena lı̄menis jāpalielina
jau par 62dB.

3.3. Zı̄m.: Uztveršanas jūtı̄guma izmaiņa atkarı̄bā no skaļuma [4]

No zı̄mējuma 3.3. ir redzams, ka dzirdes vislielākā jūtı̄ba atrodas ap 4kHz. Tādu rezultātu var
paskaidrot ar rezonansi auss kanālā.

3.5. Audio kodēšanas pielietojums

Audio uztveršanas analı̄zei ir ļoti plašas pielietošanas iespējas:

1. Dažādu audio formātu ar zudumiem izveidošana, kas vairākkārtı̄gi samazinā audiofailu


izmērus.
2. Balss kodēšana, kur frekvenču josla, kas jākodē, var būt samazināta vēl vairāk, salı̄dzinot
ar parasto audio kodēšanu
3. Balss atpazı̄šanas sistēmās
4. Balss ǧeneratoros

Audio datu kompresija ir viens no svārı̄gākiem audio uztveršanas analı̄zes izmantošanas piemēriem.

Mēs sastopamies ar audio datu kompresiju mūsu ikdienā ļoti bieži:

• Izmantojot Skype vai citas balss pārraides programmas


• Klausoties mūziku
• Skatoties digitālās televı̄zijas kanālus
• Ciparu telefonı̄jā

18
4. Nodaļa

Nobeigums

Darba gaitā tika izpildı̄ti visi izvirzı̄tie uzdevumi:

1. Tika definēti un paskaidroti pamatlielumi informācijas mērı̄šanai - Šenona informācijas


saturs un entropija.

2. Balstoties uz Šenona informācijas satura un entropijas definı̄cijām, tika aprakstı̄tas teorētiskās


robežas bezzudumu datu kompresijai, kas ir definētas ar Šenona avota kodēšanas teorēmu.

3. Tika paskaidroti svarı̄gākie novirzieni datu kompresijā - kompresija ar zudumiem un bez-


zudumu kompresija.

4. Tika izpētı̄ti pazı̄stamākie bezzudumu datu kompresijas algoritmi - Hafmana kods, ar-
itmētiskā kodēšana, Lempel-Ziv algoritms.

5. Tika piedāvāts ieskats audio kompresijā ar zudumiem, veicot dzirdes ı̄pašı̄bu analı̄zi.

Apkopojot darbā pateikto:

1. Šenona informācijas saturs un entropija ir dabı̄skie informācijas mērı̄šanas raksturlielumi.

2. Šenona avota kodēšanas teorēma ir svarı̄gs informācijas teorijas aspekts, kas nosāka datu
kompresijas robežu. Svarı̄gi saprast, ka šı̄ robeža attiecas tikai uz bezzudumu kompresiju
un ”nosācı̄ti bezzudumu kompresiju” (t.i. kompresiju, kad kļūdas iespēja tiecas uz 0).
”Tı̄ri” kompresijas ar zudumiem gadı̄jumā šı̄s ierobežojums nav svarı̄gs, jo kompresija
tiek panākta nevis tuvinoties entropijai, bet izmetot lieko informāciju. Tāpēc arı̄ tika
secināts, ka:

3. Bezzudumu kompresija un kompresija ar zudumiem ir principiāli atšķirı̄gie datu kompre-


sijas veidi.

4. Bezzudumu kompresijā eksistē vairāki algoritmi no kuriem darbā tika minēti Hafmana
kods, aritmētiskā kodēšana un Lempel-Ziv algoritms. Praksē plaši tiek pielietots Lempel-
Ziv algoritms, jo tā darbı̄bai nevajag zināt simbolu varbūtı̄bu sadalı̄jumu un šı̄s algoritms
efektı̄vi strādā ar dažadu tipu avotiem.

5. Plaši izplatı̄ti ir Lempel-Ziv un Hafmana koda apvienotie algoritmi.

6. Teksta informācijas kompresijā dominē aritmētiskā kodēšana.

7. Audio kompresija, kas ir viens no kompresijas ar zudumiem izcilākiem piemēriem, samazinā


failus, izmantojot cilvēka dzirdes ı̄pašı̄bas.

19
Datu kompresijas algoritmu pētı̄šana un attı̄stı̄ba mūsdienās ir ļoti aktuāla:

1. Mūsdienās ir ļoti populāri portatı̄vie audio atskaņotāji. Atskaņotāja ietilpı̄ba ir svarı̄gs


parametrs, kas ir ļoti atkarı̄gs no tā, kādā formāta tiek saglābāta audio informācija. Jaunu
audio kompresijas formātu izveidošana ir ļoti aktuāla šajā nozarē, jo tā ļauj palielināt
skaņdarbu skaitu, ko var ierakstı̄t atmiņā, vai arı̄ palielināt skaņdarbu kvalitāti.

2. Balss kompresijas attı̄stı̄ba ir ļoti aktuāla tādos populāros servisos kā Skype, ICQ, MSN,
ka arı̄ telefonı̄jā.

3. Bezzudumu kompresijas attı̄stı̄ba ir svarı̄ga precı̄zas informācijas saglabāšanai, ka arı̄


informācijas pārraidei. Tas izpaužas informācijas pārraides protokolu izstrādāšanā un
jaunu failu sistēmas kompresijas principu attı̄stı̄šanā.

Turpmākai kompresijas algoritmu attı̄stı̄bai ir sekojošas tendences:

1. Mākslı̄gā intelekta un neironu tı̄klu algoritmi var būt noderı̄gi datu kompresijas nolūkiem,
jo tie varēs analizēt avotus, sastādot to varbūtı̄bu sadalı̄jumu un izvelējoties optimalākus
kodu garumus.

2. Joprojām tiek modificēts Lempel-Ziv algoritms un parādās tā jaunas versijas. Nākotnē,
visiespējamāk tiks izveidotas vēl jaunākas Lempel-Ziv modifikācijas.

3. Dažādiem speciālu avotu kompresijas veidiem ir augstas prası̄bas skaitļošanas resursiem.


Tāpēc, piemērām, video kompresijai, eksistē speciālā aparatūra, kas ir domāta tieši video
kompresijai un izpilda video kompresiju ātrāk. Ar televı̄zijas un video ierakstu kvalitātes
paaugstināšanas tendenci, tādu tehnoloǧiju attı̄stı̄šana būs arvien aktuālāka.

4. Labāku audio, video un attēlu kompresiju var sasniegt, izmantojot komplicētākas kom-
presijas shēmas, kas sākumā veic kompresiju ar zudumiem, pēc tam apstrādājot datus ar
bezzudumu kompresijas algoritmu.

20
Literatūras saraksts

[1] David J.C. MacKay, Information Theory, Inference, and Learning Algorithms
Cambridge University press

[2] Paul Penfield ”Information and Entropy” course lecture notes


The Massachusetts Institute of Technology OpenCourseWare (http://ocw.mit.edu/)

[3] Robert Gray Gallager ”Principles of Digital Communication”

[4] Glen Ballou - Handbook for Sound Engineers - The New Audio Cyclopedia (second edition)

[5] Peter Svennson - Audio Technology TTT4170 course materials


Norwegian University of Science and Technology

21

You might also like