• No results found

Skurlängdskodning. Faxkodning. Faxkodning, forts. Faxkodning, forts.

N/A
N/A
Protected

Academic year: 2022

Share "Skurlängdskodning. Faxkodning. Faxkodning, forts. Faxkodning, forts."

Copied!
7
0
0

Loading.... (view fulltext now)

Full text

(1)

Skurlängdskodning

Ibland har man källor som producerar långa delsekvenser av samma symbol. Det kan då vara praktiskt att istället för att beskriva sekvensen som en följd av enstaka symboler, se sekvensen som en följd avskurar.

En skur är en tupel som talar om dels vilken symbol som skuren består av och dels hur lång skuren är.

Till exempel så kan man beskriva sekvensen

aaaabbbbbbbccbbbbaaaa som

(a, 4)(b, 7)(c, 2)(b, 4)(a, 4)

Man beskriver alltså sekvensen med ett annat alfabet än det ursprungliga.

Vinsten är att det kan vara enklare att hitta en effektiv kod för det nya alfabetet, samt att man lättare kan utnyttja källans minne.

Datakompression f ¨o 4 – p. 1

Faxkodning

Faxkodning är ett typiskt exempel på när man använder skurlängdskodning.

Det finns två digitala faxstandarder: Grupp 3 (T.4) och grupp 4 (T.6).

En faxmaskin läser av en sida en linje i taget (1728 punkter per linje på en A4). Varje punkt är antingen vit eller svart. Typiskt får man skurar av vita respektive svarta bildpunkter.

En linje kan antingen kodas separat eller med hjälp av föregående linje.

Datakompression f ¨o 4 – p. 2

Faxkodning, forts.

När man kodar en linje separat, används skurlängdskodning. Eftersom det möjliga antalet skurlängder är så stort skulle det vara opraktiskt att ha en huffmankod över alla skurlängder. Istället beskriver man en skurlängd rsom

r = 64 · m + t , t = 0, . . . , 63ochm = 1, . . . , 27

Man inför även en extra symbol som talar om att linjen är slut (EOL), dvs att resten av linjen har samma färg.

Den första skuren på en linje antas vara vit.

Alfabetet med olikam,toch EOL kodas med fixa trädkoder, en vardera för vita respektive svarta skurar.

Denna typ av kodning kallas MH (modified huffman).

Faxkodning, forts.

Två linjer efter varandra är förmodligen ganska lika varandra. Detta kan utnyttjas vid kodningen.

Några definitioner:

a0 Den sista bildpunkten på en linje som är känd för både sändare och mottagare, dvs aktuell position på linjen. När man börjar är det en tänkt vit bildpunkt till vänster om linjens första punkt.

a1 Första bildpunkt till höger oma0 med motsatt färg. Känd endast av sändaren.

a2 Första bildpunkt till höger oma1 med motsatt färg. Känd endast av sändaren.

b1 Första bildpunkt till höger oma0på linjen ovanför som har motsatt färg. Känd av både sändare och mottagare.

b2 Första bildpunkt till höger omb1som har motsatt färg. Känd av både sändare och mottagare.

(2)

Faxkodning, forts.

Vid kodningen får man tre fall

1. Om bådeb1ochb2ligger mellana0ocha1 så skickas kodordet 0001.

Alla bildpunkter fram till punkten underb2 har samma färg. Denna punkt blir vår nyaa0. Nyab1 ochb2tas fram.

2. a1 ligger föreb2och avståndet mellanb1ocha1är högst 3. Avståndet a1− b1, {−3, −2, −1, 0, 1, 2, 3}kodas med

{0000010, 000010, 010, 1, 011, 000011, 00000011}. a1blir nya0. 3. I övriga fall skickas 001 och skurlängderna fråna0tilla1och fråna1

tilla2kodas med den endimensionella koden.

Datakompression f ¨o 4 – p. 5

Faxkodning, forts.

I grupp 3 använder man båda metoderna och kodar med jämna

mellanrum en linje rent endimensionellt, för att eventuella överföringsfel ska fortplanta sig till hela bilden. Denna kodningsmetod kallas MR (modified READ).

I grupp 4 använder man bara den tvådimensionella metoden. Detta kallas MMR (modified MR).

Datakompression f ¨o 4 – p. 6

Systematiska koder

Vid kodning av vågformsdata, såsom ljud eller bilder, har man ofta fördelningar där alfabetet är heltalA = {0, 1, 2, 3, . . .}(eller

A = {. . . , −2, −1, 0, 1, 2, . . .}) och där sannolikheterna avtar monotont med ökande värden.

I stället för att räkna statistik och konstruera trädkoder kan man då ofta användasystematiska koder, där kodorden enkelt kan fås fram direkt ur symbolerna.

Datakompression f ¨o 4 – p. 7

Den unära koden (Umbra-koden)

Kodordet för ett heltalnbestår avnettor följt av en nolla (OBS inkonsistens i Sayood, s. 61)

Symbol kodord

0 0

1 10

2 110

3 1110

4 11110

... ...

Den unära koden når entropigränsen för den dyadiska fördelningen p(i) = 2−(i+1)

Datakompression f ¨o 4 – p. 8

(3)

Eliaskoden

Tag den binära representationen av taleti, repetera varje bit och invertera den sista biten

Symbol binärt kodord

0 0 01 (alt. 0)

1 1 10

2 10 1101

3 11 1110

4 100 110001

5 101 110010

6 110 111101

7 111 111110

... ...

För att bli optimal måste man låta kodordet för 0 vara 0, annars får man ett outnyttjat kodord (00).

Datakompression f ¨o 4 – p. 9

Eliaskoden, forts.

Den modifierade eliaskoden uppnår entropigränsen för fördelningen (

p(0) = 0.5

p(i) = 2−2(1+blog ic)

dvs för en fördelning som avtar ungefär som1/i2

Datakompression f ¨o 4 – p. 10

Golombkoder

A = {0, 1, 2, . . .}

Välj parameterm

Representera heltaletnmedq = bmncochr = n − qm. Kodaqmed en unär kod.

Ommär en jämn tvåpotens, kodarbinärt medlog mbitar.

Omminte är en jämn tvåpotens:

0 ≤ r < 2dlog me− m Kodarbinärt medblog mcbitar 2dlog me− m ≤ r ≤ m − 1 Kodar + 2dlog me− m

binärt meddlog mebitar

Exempel på golombkoder

Symbol m = 1 m = 2 m = 3 m = 4

0 0 0 0 0 0 0 00

1 10 0 1 0 10 0 01

2 110 10 0 0 11 0 10

3 1110 10 1 10 0 0 11

4 11110 110 0 10 10 10 00

5 111110 110 1 10 11 10 01

6 1111110 1110 0 110 0 10 10 ... ... ... ... ... Golombkoder är optimala för fördelningar av typen

p(i) = qi· (1 − q) ; 0 < q < 1 om man väljerm = d−log q1 e

(4)

Exp-golombkoder

Symbol k = 0 k = 1 k = 2

0 0 0 0 0 00

1 10 0 0 1 0 01

2 10 1 10 00 0 10

3 110 00 10 01 0 11

4 110 01 10 10 10 000

5 110 10 10 11 10 001

6 110 11 110 000 10 010

7 1110 000 110 001 10 011 8 1110 001 110 010 10 100 9 1110 010 110 011 10 101 10 1110 011 110 100 10 110

... ... ... ...

Exp-golombkoder används bl.a. i H.264

Datakompression f ¨o 4 – p. 13

Tunstallkoder

En tunstallkod är en kod där alla kodorden har ett fixt antal bitar, men där antalet källsymboler som kodas med varje kodord är variabelt.

Bestäm kodordslängdenn(maximalt2nkodord).

Elementen i kodboken är strängar av symboler ur alfabetet.

Börja med en kodbok som består av deLsymbolerna i alfabetet.

I varje steg, tag bort det mest sannolika elementet i kodboken och ersätt det med deLsträngar som fås då man konkatenerar elementet med var och en av deLsymbolerna. Beräkna sannolikheter för de nya elementen.

Datakompression f ¨o 4 – p. 14

Tunstallkodning, forts.

Vid varje steg utökar vi kodboken medL − 1element, så vi kan göra detta kggr därkär det största heltal sådant att

L + k(L − 1) ≤ 2n Ge varje element i kodboken ett kodord mednbitar.

Elementen i kodboken är löv i ettL-närt träd, så vi kan beräkna

medeldjupetd¯(symboler/kodord) i detta träd. Eftersom varje kodord harn bitar blir datataktenR

R = n

d¯ [bitar/symbol]

Tunstallkoder är oftast något sämre än huffmankoder. De funkar bra när alfabetet är litet, men är väldigt opraktiska när man har ett stort alfabet.

Datakompression f ¨o 4 – p. 15

Testbild Goldhill

512 × 512bildpunkter, 8 bitar/bildpunkt

Datakompression f ¨o 4 – p. 16

(5)

Enkel huffmankodning

Histogram för Goldhill:

0 50 100 150 200 250

0 500 1000 1500 2000 2500 3000

Huffmankodning ger en medeldatatakt på 7.50 bitar/bildpunkt Längsta kodord 16 bitar, kortaste kodord 7 bitar.

Vi har inte utnyttjat något av det beroende som finns mellan bildpunkter

Datakompression f ¨o 4 – p. 17

Huffmankodning av skillnader

Istället för att koda bildpunkterna direkt, kodar vi skillnaden i pixelvärde mellan en bildpunkt och den ovanför. Minsta skillnaden är -112, största skillnaden 185.

Histogram för skillnader:

−1500 −100 −50 0 50 100 150 200

2000 4000 6000 8000 10000 12000 14000 16000 18000

Huffmankodning av skillnaderna ger en medeldatatakt på 5.34 bitar/bildpunkt.

Längsta kodord 18 bitar, kortaste kodord 4 bitar.

Datakompression f ¨o 4 – p. 18

Golombkodning I

Vi måste först modifiera värdena så att vi bara har icke-negativa värden, vilket vi t.ex. kan göra med avbildningen

F (x) =

( 2x ; x ≥ 0

−2x − 1 ; x < 0

dvs de negativa talen avbildas på udda positiva tal och de positiva talen avbildas på jämna positiva tal.

F−1(x) =

( x

2 ; xjämn

x+12 ; xudda

Golombkodning I, forts.

Histogram för modifierade skillnader

−500 0 50 100 150 200 250 300 350 400

2000 4000 6000 8000 10000 12000 14000 16000 18000

Den bästa golombkoden är den med parameterm = 10, vilken ger en medeldatatakt på 5.38 bitar/bildpunkt.

(6)

Golombkodning II

Alternativt kan vi koda absolutvärdet av skillnaderna med en golombkod och skicka en extra teckenbit för varje nollskilt värde

Histogram för absolutvärdet av skillnaderna

−500 0 50 100 150 200

0.5 1 1.5 2 2.5 3 3.5x 104

Den bästa golombkoden är den med parameterm = 5, vilken ger en medeldatatakt på 5.42 bitar/bildpunkt.

Datakompression f ¨o 4 – p. 21

Lossless JPEG

JPEG är normalt en bildkodningsmetod som ger distorsion, men det finns även distorsionsfri mod i standarden.

Bildpunkterna kodas radvis uppifrån och ner.

BildpunktenIijpå position(i, j)predikteras från närliggande bildpunkter.

Det finns 7 val av prediktor:

1.Iˆij= Ii−1,j

2.Iˆij= Ii,j−1

3.Iˆij= Ii−1,j−1

4.Iˆij= Ii,j−1+ Ii−1,j− Ii−1,j−1

5.Iˆij= Ii,j−1+ b(Ii−1,j− Ii−1,j−1)/2c 6.Iˆij= Ii−1,j+ b(Ii,j−1− Ii−1,j−1)/2c 7.Iˆij= b(Ii,j−1+ Ii−1,j)/2c

Datakompression f ¨o 4 – p. 22

Lossless JPEG, forts.

Skillnadendij= Iij− ˆIijkodas antingen med en adaptiv aritmetisk kodare, eller med en huffmankod.

Huffmankodning sker inte direkt på skillnadsvärdena. Istället bildar man

kij= dlog(|dij| + 1)e

Man beräknar statistik och bygger ett huffmanträd för signalenkij. Kodordet för en skillnaddijbestår av huffmankodordet förkij pluskij

stycken extra bitar för att exakt specificeradij.

kij dij extra bitar

0 0

1 −1, 1 0, 1

2 −3, −2, 2, 3 00, 01, 10, 11 3 −7, . . . , −4, 4, . . . , 7 000, . . . , 011, 100, . . . , 111

... ... ...

Datakompression f ¨o 4 – p. 23

Lossless JPEG, forts.

Kodning av Goldhill med lossless JPEG:

Prediktor 1 5.39 bitar/bildpunkt Prediktor 2 5.42 bitar/bildpunkt Prediktor 3 5.80 bitar/bildpunkt Prediktor 4 5.27 bitar/bildpunkt Prediktor 5 5.16 bitar/bildpunkt Prediktor 6 5.15 bitar/bildpunkt Prediktor 7 5.13 bitar/bildpunkt

För olika bilder kommer olika prediktorer vara bäst. Standarden stöder även att man kodar olika delar i bilden med olika prediktorer.

Datakompression f ¨o 4 – p. 24

(7)

JPEG-LS

Standard för att koda bilder distorsionsfritt och nästan distorsionsfritt (near lossless). Nästan distorsionsfritt innebär att man tillåter att

bildpunktsvärdena i den avkodade bilden avviker lite från originalbilden.

Bildpunkterna kodas radvis uppifrån och ner.

När bildpunkten(i, j)ska kodas tittar man först på de omgivande

bildpunkterna i position(i, j − 1),(i − 1, j − 1),(i − 1, j)och(i − 1, j + 1). Man bildar enkontext genom att först beräkna gradienterna

D1 = Ii−1,j+1− Ii−1,j

D2 = Ii−1,j− Ii−1,j−1

D3 = Ii−1,j−1− Ii,j−1

Datakompression f ¨o 4 – p. 25

JPEG-LS, forts.

GradienternaDkkvantiseras sen till tre heltalQkså att−4 ≤ Qk≤ 4. Kvantiseringsgränserna kan väljas av användaren. VarjeQkkan ta 9 olika värden, vilket innebär att vi har 729 möjliga kombinationer. Kombinationer med inverterade tecken räknas som samma kontekt vilket alltså slutligen ger oss 365 olika kontexter.

Prediktionen avIijgörs enligt:

OmIi−1,j−1≥ max(Ii,j−1, Ii−1,j) ⇒ ˆIij= max(Ii,j−1, Ii−1,j) OmIi−1,j−1≤ min(Ii,j−1, Ii−1,j) ⇒ ˆIij= min(Ii,j−1, Ii−1,j) Annars:Iˆij= Ii,j−1+ Ii−1,j− Ii−1,j−1

För varje kontextqhåller vi reda på om vår prediktion har ett systematiskt fel, om så är fallet justeras prediktionen lite i rätt riktning.

Datakompression f ¨o 4 – p. 26

JPEG-LS, forts.

Skillnaden mellan det riktiga pixelvärdet och det predikterade värdet dij= Iij− ˆIijkodas med en golombkod med parameterm = 2kq. För varje kontextqhåller man reda på vilken golombkod som är optimal, och kqjusteras hela tiden adaptivt under kodningsprocessen.

Kodaren detekterar även om det uppträder långa skurar med samma värde i rad, i sådana fall går den över till att koda skurlängder istället.

Kodar vi Goldhill med JPEG-LS får vi en medeldatatakt på 4.71 bitar/bildpunkt.

References

Related documents

Syftet med denna studie var att undersöka om det fanns ett samband mellan organisatoriskt engagemang och upplevd nivå av stress på arbetsplatsen samt om sambandet kan observeras

Utifrån den föreliggande studiens presenterade resultat anser vi att undersökta rekryteringsfaktorer som är vanligt förekommande i CV:n inte bidrar till att tillförlitligt förutse

[r]

[r]

Beträffande prestationsbaserad självkänsla och kontraproduktivt arbetsbeteende återfanns ett negativt signifikant samband, vilket till viss del styrker Hypotes 3 gällande att

Aktiva, devizový kurz, FIFO, LIFO, majetek, náklady, náklady s pořízením související, oceňování, pasiva, pevná skladová cena, pořizovací cena, rozvaha,

a) Konstruera av kodomvandlare som omvandlar koden som kommer från en Flash- omvandlares komparatorer (termometerkod) till binärkod. Flash-omvandlaren är på 2- bitar.. b) Konstruera

a) Konstruera av kodomvandlare som omvandlar koden som kommer från en Flash- omvandlares komparatorer (termometerkod) till binärkod. Flash-omvandlaren är på 2- bitar. b)