150 likes | 285 Views
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.
E N D
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 • Kodning: Till varje källsymbol (eller grupp av symboler) tilldelas ett kodord från ett utvidgat binärt alfabet. • Typer av koder: • FIFO: Fixed input, fixed output. • FIVO: Fixed input, variable output. • VIFO: Variable input, fixed output. • VIVO: Variable input, variable output. • FIVO och VIVO kallas variabellängd-koder (VLC). Bör vara kommafria.
Exempel • Antag en minnesfri källa med alfabet A = {a1, …, a4}sannolikheter P(a1) = ½P(a2) = ¼P(a3) = P(a4) = 1/8. • a1FIFO: 00FIVO: 0a20101a310110a411111
Fyra olika klasser Singulära Icke-singulära Unikt avkodbara Momentana 0000 00100110 100011110 010110111 Alla koder Icke-singulära Unikt avkodbara (”kommafria koder”) Momentana a1a2a3a4 Avkodningsproblem: 010 kanbetyda a1a4 eller a2 eller a3a1. Avkodningsproblem: 1100000000000000001…är unikt avkodbart, men den första symbolen (a3 eller a4) kan inte avkodas förrän den tredje ’1’ har kommit(Jämför 11010 och 110010).
Datakompression • Effektiva koder utnyttjar följande egenskaper: • Olika symbolsannolikheter • Beroenden mellan symbolerna (minneskälla) • Accepterbar distorsion • Exempel: • FIVO-exemplet • ”Symbol a3 följer alltid efter a1”. • ”Spelar ingen roll om symbolen är a3 eller a4”.
a1 a2 0 0 a3 0 1 1 a4 1 Del 2: Kodträd och Trädkoder • Betrakta åter det tidigare exemplet:{a1, …, a4} = {0, 10, 110, 111}. • Kodorden kan ses som löv i ett kodträd. • Trädkoder är kommafria och momentana. Inget kodord utgör början på (”prefix”) till något annat kodord!
Kraft’s olikhet • För en unikt avkodbar kod med kodordslängderna li gäller • Omvänt, om detta gäller för en viss uppsättning kodordslängder, så är det möjligt att konstruera ett motsvarande kodträd. (Proof: Sayood 2.4)
Kraft’s olikhet och Trädkoder • Om K.I. gäller för en uppsättning kodordslängder så finns det en trädkod med dessa längder. • Bevis: Skapa ett maximalt träd med storlek som bestäms av det längsta kodordet lmax. • Trädet har då 2lmax löv. • Placera ut kodorden, ansa trädet, och använd KI för att visa att det finns tillräckligt många löv. • Låt oss illustrera.
Kan inte användas: klipp bort! Försök med {li} = {1, 2, 3, 3}respektive {li} = {1, 2, 2, 3} ! lmax = 3 leder till följande träd: l1 l2 l4 l3 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. 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., 2-l1< 1.
Kraft’s olikhet Kodordsmedellängden [bitar/kodord] Del 3: Optimala koder Minimera under bivillkoret Om vi bortser från heltalsvillkoret får vi skall minimeras Derivera: Kraft’s olikhet:
Del 3: Optimala koder Minimera under bivillkoret Optimal kodordslängd -> entropigränsen nås! Men vad gör vi åt heltalsbegränsningen?li = – logpi är inte alltid ett heltal! Välj där
Källkodningsteoremet • Antag att källan X är minnesfri och skapa trädkoden för den utökade källan, dvs, block av n symboler. • Vi får då: • Man kan komma godtyckligt nära entropin!
I praktiken • Två praktiska problem behöver lösas: • Bit-tilldelning • Heltalsbegränsningen • I teorin: välj li = – log pi • Att avrunda uppåt är inte alltid bäst! • Exempel: Binär källa p1 = 0.25, p2 = 0.75l1 = – log 0.25 = 2l2 = – log 0.75 = 1 (efter avrundning) • Använd istället exempelvis Huffman algoritmen (D.Huffman, 1952) för att skapa en optimal trädkod!
Sammanfattning • Kodning: Tilldela binära kodord till (block av) källsymboler. • Variabellängdskoder (VLC) respektive fixlängdskoder. • Momentana koder, Unikt avkodbara koder,Icke-singulära, alla koder • Trädkoder är momentana. • Trädkoder och Kraft’s olikhet. • Källkodningsteoremet.