föreläsning 3: datakompressionsteori
DESCRIPTION
TSBK02 Bild- och ljudkodning. Föreläsning 3: Datakompressionsteori. Författare:Jörgen Ahlberg Översättning&modifiering:Robert Forchheimer. Innehåll. Kodning & koder Kodträd and trädkoder Optimala koder Källkodningsteoremet. Del 1: Kodning & koder. - PowerPoint PPT PresentationTRANSCRIPT
Föreläsning 3:Föreläsning 3:DatakompressionsteoriDatakompressionsteori
TSBK02 Bild- och ljudkodningTSBK02 Bild- och ljudkodning
Författare:Jörgen AhlbergÖversättning&modifiering:Robert Forchheimer
InnehållInnehåll
1.1. Kodning & koderKodning & koder
2.2. Kodträd and trädkoderKodträd and trädkoder
3.3. Optimala koderOptimala koder KällkodningsteoremetKällkodningsteoremet
Del 1:Del 1: Kodning & koder Kodning & koder
Kodning:Kodning: Till varje källsymbol (eller grupp av Till varje källsymbol (eller grupp av symboler) tilldelas ett symboler) tilldelas ett kodordkodord från ett utvidgat från ett utvidgat binärt alfabet.binärt alfabet.
Typer av koder:Typer av koder:– FIFO: FIFO: Fixed input, fixed output.Fixed input, fixed output.– FIVO:FIVO: Fixed input, variable output.Fixed input, variable output.– VIFO:VIFO: Variable input, fixed output.Variable input, fixed output.– VIVO:VIVO: Variable input, variable output.Variable input, variable output.
FIVO och VIVO kallas FIVO och VIVO kallas variabellängd-kodervariabellängd-koder (VLC). (VLC). Bör vara Bör vara kommafriakommafria..
ExempelExempel
Antag en minnesfri källa medAntag en minnesfri källa med alfabet alfabet AA = { = {aa11, …, , …, aa44}} sannolikhetersannolikheter PP((aa11) = ½) = ½
PP((aa22) = ¼) = ¼PP((aa33) = P() = P(aa44) = 1/8) = 1/8..
aa11 FIFO:FIFO: 0000 FIVO:FIVO: 00aa22 0101 0101aa33 1010 110110aa44 1111 111111
Alla koder
Icke-singulära
Fyra olika klasserFyra olika klasser
a1
a2
a3
a4
0000
Singulära
00100110
Icke-singulära
100011110
Unikt avkodbara
010110111
Momentana
Unikt avkodbara(”kommafria koder”)
Momentana
Avkodningsproblem: 010 kanAvkodningsproblem: 010 kanbetyda betyda aa11aa44 eller eller aa22 eller eller aa33aa11..
Avkodningsproblem: 1100000000000000001…Avkodningsproblem: 1100000000000000001…är unikt avkodbart, men den första symbolen (är unikt avkodbart, men den första symbolen (aa33 eller eller
aa44) kan inte avkodas förrän den tredje ’1’ har kommit) kan inte avkodas förrän den tredje ’1’ har kommit
(Jämför 11010 och 110010).(Jämför 11010 och 110010).
DatakompressionDatakompression
Effektiva koder utnyttjar följande Effektiva koder utnyttjar följande egenskaper:egenskaper:– Olika symbolsannolikheterOlika symbolsannolikheter– Beroenden mellan symbolerna (minneskälla)Beroenden mellan symbolerna (minneskälla)– Accepterbar distorsionAccepterbar distorsion
Exempel:Exempel:– FIVO-exempletFIVO-exemplet– ””Symbol Symbol aa33 följer alltid efter följer alltid efter aa11”.”.– ””Spelar ingen roll om symbolen är Spelar ingen roll om symbolen är aa33 eller eller aa44””..
Betrakta åter det tidigare exemplet:Betrakta åter det tidigare exemplet:{{aa11, …, , …, aa44} = {0, 10, 110, 111}} = {0, 10, 110, 111}..
Kodorden kan ses som löv i ett Kodorden kan ses som löv i ett kodträdkodträd..
Trädkoder Trädkoder är är kommafria kommafria och och momentanamomentana. Inget . Inget kodord utgör början på (”prefix”) till något annat kodord utgör början på (”prefix”) till något annat kodord!kodord!
Del 2: Del 2: Kodträd och TrädkoderKodträd och Trädkoder
0
1
a1
0
1
a2
0
1
a3
a4
Kraft’s olikhetKraft’s olikhet
För en unikt avkodbar kod med För en unikt avkodbar kod med kodordslängderna kodordslängderna llii gäller gäller
Omvänt, om detta gäller för en viss Omvänt, om detta gäller för en viss uppsättning kodordslängder, så är det uppsättning kodordslängder, så är det möjligt att konstruera ett motsvarande möjligt att konstruera ett motsvarande kodträd.kodträd.
(Proof: Sayood 2.4)
Kraft’s olikhet och TrädkoderKraft’s olikhet och Trädkoder
Om K.I. gäller för en uppsättning Om K.I. gäller för en uppsättning kodordslängder så finns det en trädkod med kodordslängder så finns det en trädkod med dessa längder.dessa längder.
Bevis:Bevis: Skapa ett maximalt träd med storlek Skapa ett maximalt träd med storlek som bestäms av det längsta kodordet som bestäms av det längsta kodordet llmaxmax..
– Trädet har då Trädet har då 22llmaxmax löv. löv.– Placera ut kodorden, ansa trädet, och använd Placera ut kodorden, ansa trädet, och använd
KI för att visa att det finns tillräckligt många löv.KI för att visa att det finns tillräckligt många löv.– Låt oss illustrera. Låt oss illustrera.
l1
Kan inte användas: klipp bort!
Placera l1 i trädet.
Då försvinner 2lmax – l1 löv...
..och 2lmax – 2lmax – l1 = 2lmax (1 – 2-l1) löv återstår.
Placera l2 i trädet. Då återstår 2lmax (1 – 2-l1 – 2-l2) löv.
l2
l3l4
Efter att ha lagt ut N kodordslängder återstår 2lmax (1 – 2-l1) löv.
Detta är möjligt sålänge som K.I. gäller, dvs., Detta är möjligt sålänge som K.I. gäller, dvs., 2 2--ll11 << 1 1..
Försök med {li} = {1, 2, 3, 3}respektive {li} = {1, 2, 2, 3} !
lmax = 3 leder till följande träd:
Del 3: Del 3: Optimala koderOptimala koder
Kodordsmedellängden [bitar/kodord] Kraft’s olikhet
Minimera under bivillkoret
Om vi bortser från heltalsvillkoret får vi skall minimeras
Derivera:
Kraft’s olikhet:
Optimal kodordslängd -> entropigränsen nås!Optimal kodordslängd -> entropigränsen nås!
Del 3: Del 3: Optimala koderOptimala koder
Men vad gör vi åt heltalsbegränsningen?Men vad gör vi åt heltalsbegränsningen?llii = – = – loglog ppii är inte alltid ett heltal! är inte alltid ett heltal!
Minimera under bivillkoret
Välj där
KällkodningsteoremetKällkodningsteoremet
Antag att källan Antag att källan XX är minnesfri och skapa är minnesfri och skapa trädkoden för den utökade källan, dvs, block av trädkoden för den utökade källan, dvs, block av nn symboler.symboler.
Vi får då:Vi får då:
Man kan komma godtyckligt nära entropin!Man kan komma godtyckligt nära entropin!
I praktikenI praktiken
Två praktiska problem behöver lösas:Två praktiska problem behöver lösas:– Bit-tilldelningBit-tilldelning– HeltalsbegränsningenHeltalsbegränsningen
I teorin: välj I teorin: välj llii = – = – log log ppii
– Att avrunda uppåt är inte alltid bäst!Att avrunda uppåt är inte alltid bäst!– Exempel:Exempel: Binär källa Binär källa pp11 = 0.25, = 0.25, pp22 = 0.75 = 0.75
ll11 = – = – loglog 0.25 = 2 0.25 = 2ll22 = – = – loglog 0.75 = 1 (efter 0.75 = 1 (efter
avrundning)avrundning) Använd istället exempelvis Använd istället exempelvis Huffman algoritmenHuffman algoritmen
(D.Huffman, 1952) för att skapa en optimal trädkod!(D.Huffman, 1952) för att skapa en optimal trädkod!
SammanfattningSammanfattning
Kodning:Kodning: Tilldela binära kodord till (block av) Tilldela binära kodord till (block av) källsymboler.källsymboler.
VariabellängdskoderVariabellängdskoder (VLC) respektive (VLC) respektive fixlängdskoderfixlängdskoder.. Momentana koderMomentana koder,, Unikt avkodbara koder, Unikt avkodbara koder, Icke-Icke-
singulära, alla kodersingulära, alla koder Trädkoder Trädkoder är momentana.är momentana. TrädkoderTrädkoder och och Kraft’s olikhet. Kraft’s olikhet. Källkodningsteoremet.Källkodningsteoremet.