Titel: Om fingeraftryk – komprimering med ... - of Arne Mejlholm
Titel: Om fingeraftryk – komprimering med ... - of Arne Mejlholm
Titel: Om fingeraftryk – komprimering med ... - of Arne Mejlholm
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
6.2 Huffman kodning 6. Komprimeringsteknikker<br />
Træstrukturen har yderligere den nyttige egenskab at der ikke er to tegn,<br />
som starter <strong>med</strong> den samme værdi. N˚ar alle tegn er slutknuder, kan man ikke<br />
lave flere værdier, som har den samme start bit. F.eks. giver B værdien 10.<br />
Da B ikke har nogen børn kan vi ikke finde et tegn <strong>med</strong> værdien 101, eller p˚a<br />
anden m˚ade starter <strong>med</strong> 10. Dette er utrolig vigtigt for de<strong>komprimering</strong>en<br />
af vores fil. S˚adanne knudepunkter, som ikke har nogen børn, kaldes ogs˚a<br />
for træets blade.<br />
N˚ar man har oprettet en træstruktur, kan man udfra dens værdier, for<br />
hvert tegn, opstille en tabel. Denne tabel indeholder s˚a hvert tegn, og dets<br />
værdi. Tabellen skal gemmes <strong>med</strong> i den komprimerede fil for at vi kan dekomprimere<br />
filen igen. N˚ar vi har skrevet tabellen i filen, erstattes alle de tidligere<br />
tegn <strong>med</strong> de nye fundne værdier, og som resultat heraf fylder filen mindre.<br />
6.2.4 De<strong>komprimering</strong><br />
N˚ar vi har en komprimeret fil, <strong>med</strong> tilhørende de<strong>komprimering</strong>stabel, kan<br />
vi dekomprimere filen igen. De<strong>komprimering</strong>en er baseret p˚a det princip ,<br />
som træet er opbygget efter. Som det kan ses p˚a figur 6.1 er alle vores tegn<br />
bladene p˚a træet. Vi tager nu blot vores række af bitværdier og begynder<br />
at sammenligne bit for bit <strong>med</strong> tabellen over tegn. F.eks. vil vores fil starte<br />
<strong>med</strong> 111111... hvilket i den originale fil er en række A’er. Først ser vi et<br />
1. Dette kan kun blive 2 tegn, A eller B, da ingen andre starter <strong>med</strong> 1.<br />
Næste bit er ogs˚a 1, hvilket s˚a snævrer mulighederne ned til kun en mulig<br />
tegnrepræsentation, nemlig A. Derefter fortsætter man denne metode og<br />
erstatter løbende bitværdierne <strong>med</strong> korrekte tegn.<br />
Ud fra vores afkodningsnøgle 5 , kan man ogs˚a genskabe træstrukturen.<br />
Dette vil i nogle tilfælde være nyttigt for overblik og de<strong>komprimering</strong>. Man<br />
tager udgangspunkt i filens samlede antal tegn. S˚a tager man tegnene et efter<br />
et og erstatter disse <strong>med</strong> deres korsponderende bitværdi. F.eks. vil A kræve<br />
to skridt til højre fra roden, da hvert 1-tal kræver et skridt til højre. Man<br />
fortsætter s˚aledes blot denne udskridtning <strong>med</strong> alle tegn og f˚ar derved hele<br />
træet. Bagefter kan man ogs˚a optælle de forskellige “frekvenser” og s˚aledes<br />
udfylde træet helt. Dette kræver, at man dekomprimerer hele filen og p˚a<br />
ny optæller hvert tegns “frekvens”. Det er utroligt vigtigt for de<strong>komprimering</strong><br />
at filen bliver gemt korrekt. Hvis man under oprettelsen af filen, ved en<br />
fejl, kommer til at bytte rundt p˚a nogle bits, vil dette skabe fejl i de<strong>komprimering</strong>en<br />
og i alvorlige tilfælde skabe en fil der ikke ville give mening efter<br />
de<strong>komprimering</strong>. Efter at have set p˚a en Lossless <strong>komprimering</strong>smetode vil<br />
vi nu se p˚a splines, som vil vi benytte som lossy <strong>komprimering</strong>.<br />
5 De tegn tabellen indeholder og tilhørende bitværdi<br />
50