Professional Documents
Culture Documents
Studiju Darbs Telekomunik Aciju Sist Emu Ciparu Iek Art As Datu Kompresija
Studiju Darbs Telekomunik Aciju Sist Emu Ciparu Iek Art As Datu Kompresija
Studiju darbs
Telekomunikāciju sistēmu ciparu iekārtās
Datu kompresija
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:
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.
1. Pamatjēdzieni 2
4. Nobeigums 19
1
1. Nodaļa
Pamatjēdzieni
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”).
Š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
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:
Paskaidrojums: Ja notikums simtprocentı̄gi notiks, tā notikšana nesatur sevı̄ nekādu in-
formāciju.
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.
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.
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 .
Tipiskā kopa ir secı̄bu kopa, kuras katra elementa (secı̄bas) informācijas saturs ir N H.
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 δ.
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.
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.
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.
5
2. Nodaļa
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. 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 ).
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)
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.
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.
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.
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
I
X
L(C, X) = pi li , (2.3)
i=1
Ansamblim X eksistē bezzudumu mainı̄ga koda vārda garuma kods C, kura vidējais koda vārda
garums L(C,X) apmierinās:
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:
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 ).
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
I
X
2−li = 1 (2.7)
i=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]
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:
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:
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:
• Avots ir secı̄ba x1 , x2 , . . . , xn . . ..
• 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:
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šā.
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”.
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.
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.
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
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.
• 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.
• 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”).
• LZS algoritms.
Lempel-Ziv pielietošana:
• LZMA algoritms tiek pielietots tādā populārā datu kompresijas programā kā 7-zip.
• 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.
• LZX algoritms tiek pielietots LZX kompresijas programmā ka arı̄ Microsoft Xbox Live
Avatars kompresijā.
15
3. Nodaļa
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:
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.
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.
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.
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.
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.
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ā.
Audio datu kompresija ir viens no svārı̄gākiem audio uztveršanas analı̄zes izmantošanas piemēriem.
18
4. Nodaļa
Nobeigums
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.
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:
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.
19
Datu kompresijas algoritmu pētı̄šana un attı̄stı̄ba mūsdienās ir ļoti aktuāla:
2. Balss kompresijas attı̄stı̄ba ir ļoti aktuāla tādos populāros servisos kā Skype, ICQ, MSN,
ka arı̄ telefonı̄jā.
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.
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
[4] Glen Ballou - Handbook for Sound Engineers - The New Audio Cyclopedia (second edition)
21