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.

7. Udvikling af programmet 7.3 De enkelte moduler og deres funktioner.<br />

samt højde og bredde p˚a disse. Vi benytter ogs˚a to ints til at tælle sammen<br />

p˚a antallet af pixels, som er uændret, og dem som har ændret sig. Modulet<br />

returnerer ikke noget, men bruger “call by reference” p˚a de to ints.<br />

px match<br />

Denne sammenligningsprocess er den mest avancerede sammenligningsalgoritme,<br />

vi benytter i dette sammenligningsmodul. Funktion tager et delomr˚ade<br />

af billedet og bruger det til en sammenligning. For at finde ud af<br />

hvor store disse delomr˚ader skal være benytter vi modulus. Vi beregner en<br />

talrække, som b˚ade g˚ar op i den halve højde og halve bredde af billedet.<br />

Vi udskriver en talrække p˚a skærmen, s˚a brugeren kan vælge et af tallene<br />

til sammenligningen. Alt efter hvilket tal brugeren vælger, bestemmer dette<br />

hvor stort et omr˚ade vi skal kigge p˚a af gangen.<br />

Derefter laver vi plads i hukommelsen til det array, som funktionen skal<br />

bruge til at holde styr p˚a hver pixel i det enkelte delomr˚ade vi kigger p˚a. Vi<br />

allokerer ogs˚a plads i hukommelsen til det array, som bliver returneret til<br />

sidst i funktionen. De to arrays er af typen int og double, grunden til at den<br />

sidste er af typen double er at den skal indholde flydende tal, som vi f˚ar ved<br />

at regne gennemsnittet ud af de forskellige delomr˚ader.<br />

Det næste der sker i denne funktion er selve kernen i funktionen. Det er<br />

her sammenligningen finder sted. Denne del best˚ar af 4 “for” løkker, som<br />

holder styr p˚a hele billedet og det aktuelle delomr˚ade. Selve udregningerne<br />

af fejlen, som er opst˚ar i billedet beregnes i de indre “for” løkker. Her finder<br />

vi de gennemsnitlige forskelle mellem de to billeder i det aktuelle delomr˚ade.<br />

Herefter tages de numeriske værdier og disse bliver gemt i et array, som bliver<br />

returneret til sidst i denne funktion. N˚ar vi har beregnet gennemsnittet i et<br />

delomr˚ade hopper vi ud af den indre løkke. Den ydre løkke sørger for, at vi<br />

kommer ind i det næste delomr˚ade.<br />

Funktionen tager en pointer til en struktur af typen sammenligning og<br />

en pointer af typen double, som skal indeholde det tal, vi finder ved hjælp<br />

af modulus. Denne funktion returner et array af typen double til systemet<br />

sammen <strong>med</strong> pointer af typen double. Grunden til at vi bruger double er at<br />

vi benytter flydende tal til nogle af udregningerne i denne funktion.<br />

vektor match<br />

Denne funktion benytter tre forskellige normer vektorer til at beskrive forskellene<br />

i billedet. Vi kigger her p˚a max normen, første normen og anden normen.<br />

Vi starter i denne funktion <strong>med</strong> at beregne forskellen mellem de to billeder<br />

ved at trække de to arrays fra hinanden.<br />

v = a − b (7.2)<br />

83

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

Saved successfully!

Ooh no, something went wrong!