Top Banner

of 12

FP_IITB.pdf

Apr 14, 2018

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • 7/27/2019 FP_IITB.pdf

    1/12

    Fingerprint Matching

    Overview of fingerprint Matching Process

    Registration

    Get person As fingerprint Image

    Extract Features and store against A is ID

    Verification

    Get A fingerprint Image

    Extract Featuresretrieve features stored in database for A

    Match both features

    (1 : 1] matching

    IdentificationGot some fingerprint image (who is this?)

    Extract features

    Match against every feature stored in the database

    Get the ID for the best matching features, he/she is the likely person

    (1 to N matching)

  • 7/27/2019 FP_IITB.pdf

    2/12

    Fingerprint Matching

    The Fingerprint ImageScanners provides API to get the image

    Typical fingerprint has 256 gray scales, so needs 1

    byte to represent each pixel.

    value 0 is BLACK and value 255 is WHITE

    Typical resolution is 500 PPI

    Simple representation of an Image would be

    unsigned char image [Height] [Width];

    Getting a pixel value in an Image is indexing

    unsigned char value = image[row] [column];

  • 7/27/2019 FP_IITB.pdf

    3/12

    Fingerprint Matching

    The FeaturesFingerprint have ridges and valleys

    (the black are the ridges and white

    valleys)

    Ridge ending and Ridge Bifurcation

    are of interest.

    Find these ridge endings and

    bifurcations and store their position

    X,Y and angleThese features are minutiae and the

    set of all the minutiae together is the

    template!! (with some additional info)

    bifurcations

    ending

  • 7/27/2019 FP_IITB.pdf

    4/12

    Fingerprint Matching

    Feature MatchingGiven two sets of features determine if they are of the same finger.

    Find the amount of similarity between features, if it is above some threshold then

    probably they are from the same finger.

    Point pattern Matching Problem.

  • 7/27/2019 FP_IITB.pdf

    5/12

    Steps in feature extraction-Reduce Noise from Image

    Histogram Equalization, Gaussian Filter

    -Segment Image (identify the background and foreground)Simple variance based to complex direction based

    -Binarize Image

    Simple Threshold or adaptive threshold or direction based

    -Image Thinning

    reduce to 1 pixel width without breaking lines.-Minutiae Detection

    Find pixel where ridge ends or bifurcates

    -Minutiae Post Processing

    Remove false minutiae such as border, artifacts generated by

    earlier processing, and not so sure!!-Store minutiae in database (along with persons ID)

    Fingerprint Matching

  • 7/27/2019 FP_IITB.pdf

    6/12

    Fingerprint Matching

    Noise Reduction

  • 7/27/2019 FP_IITB.pdf

    7/12

    Fingerprint Matching

    Noise ReductionConsider Image represented as 2 dimensional array of unsigned char with h as height

    and w as width. Following code filters the image and creates a new filtered image

    using Gaussian 3x3 kernel

    unsigned char gfilt[3][3] = { { 1, 2, 1 },

    { 2, 4, 2 },

    { 1, 2, 1 } };

    for ( int a = 1; a < height - 1; a++ ) {for ( int b = 1; b < width1; b++ ) {

    value = 0;

    for ( int j = -1; j

  • 7/27/2019 FP_IITB.pdf

    8/12

    Fingerprint Matching

    Binarization

    Adaptive Directional Threshold

  • 7/27/2019 FP_IITB.pdf

    9/12

    Fingerprint Matching

    Thinning

  • 7/27/2019 FP_IITB.pdf

    10/12

    Fingerprint Matching

    Minutiae Detection

  • 7/27/2019 FP_IITB.pdf

    11/12

    Fingerprint Matching

    Minutiae DetectionCompute Crossing number for a black pixel in image.

    Crossing at P is define as CN(P) = half the sum of the differences between the

    adjacentpixels in the 8 neighborhood of P

    if CN = 1 then termination if CN = 3 then bifurcation above 3 is complex minutiae

    such as cross over etc.

    CN(P) = j = 0..8 | val (P j mod 8)val (p j-1)|

    Here P j are pixels belonging to the 8 neighborhood of P, for example if the current

    pixel we are considering is at row = 10 and column = 10 then we sum the pixel

    values at ABS(P(10,9)P(9,9)), ABS((P(11,9)P(10,9)), ABS((P(11,10)P(11,9)) and so

    on.

    Check this out by actually drawing a 8X8 neighborhood!!!

  • 7/27/2019 FP_IITB.pdf

    12/12

    Fingerprint Matching// MINUTIAE COMPUTATION ON THINNED IMAGE

    #define PVAL(x) (x) == 0 ? 1 : 0

    int FPDetectMinutiae ( unsigned char *image, int h, int w, char *minfile)

    {

    int r, c, count, cn;

    FILE *fp;if (( fp = fopen(minfile,"w")) == NULL )return -1;

    for ( r = 16; r < h - 16; r++ ) {

    for ( c = 16; c < w - 16; c++ ) {

    if ( image[r*w+c] == WHITE_PIXEL ) continue;

    cn = 0;

    cn += abs(PVAL(image[(r-1)*w+c]) - PVAL(image[(r-1)*w+(c-1)]));

    cn += abs(PVAL(image[(r-1)*w+(c+1)]) - PVAL(image[(r-1)*w+c]));

    cn += abs(PVAL(image[(r)*w+(c+1)]) - PVAL(image[(r-1)*w+(c+1)]));

    cn += abs(PVAL(image[(r+1)*w+(c+1)]) - PVAL(image[(r)*w+(c+1)]));cn += abs(PVAL(image[(r+1)*w+c]) - PVAL(image[(r+1)*w+(c+1)]));

    cn += abs(PVAL(image[(r+1)*w+(c-1)]) - PVAL(image[(r+1)*w+c]));

    cn += abs(PVAL(image[(r)*w+(c-1)]) - PVAL(image[(r+1)*w+(c-1)]));

    cn += abs(PVAL(image[(r-1)*w+(c-1)]) - PVAL(image[r*w+(c-1)]));

    cn /= 2;

    // Termination Minutia

    if ( cn == 1 )

    fprintf(fp,"%d %d 0 0\n", c, r );

    // Bifurcation or complex minutiaelse if ( cn >= 3 )

    fprintf(fp,"%d %d 1 0\n", c, r );

    }

    }

    fclose(fp);

    return 0;

    }