15.07.2013 Views

Titel: Om fingeraftryk – komprimering med ... - of Arne Mejlholm

Titel: Om fingeraftryk – komprimering med ... - of Arne Mejlholm

Titel: Om fingeraftryk – komprimering med ... - of Arne Mejlholm

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!