Search code examples
androidopencvfingerprint

How to determine if fingerprint scan is of good quality


I am working on fingerprint project first time i need your help.

I am working on a android project.

I have a chinese fingerprint reader they provided me the sdk.

I am successfully able to read fingerprint. But My problem is sdk does not have any procedure to check whether fingerprint is correct or not.Mean it also accept if we press half finger. as u can see in pictures.

Image

so far i searched many verification system but all of them do verify image by comparing to other image but my problem is i don't have the access correct fingerprints of that person.

my goal of project is to send correct image to server which will compare image and send me response. it costs me on every image compare so i can't bear expense by sending incorrect fingerprint.

please tell me some method,some algorithm so i can determine fingerprint image is correct.

Sorry for my poor English.


Solution

  • This will check if finger is a good scan, so you only send clean once to your server:

    Check if whole finger is scanned:

    • Put a boundingbox around the scanned finger and check if it has a required size.
    • Maybe: Check if enough of your picture is black, so you avoid "hovering" of finger

    Check if Finger touches border:

    • Much more difficult, you could forbid it (check for overlap of boundingbox and edge of scanner) but that might be too strict
    • Maybe you can check the direction of the finger and forbid it if the finger is not vertical enough (do that by recognizing outer edge of finger with canny edge detection, compute the boundingbox (a rotatedrect) and check the angle of it.

    This Tutorial shows how you can generate a rotated bounding box (a RotatedRect Object).

    Here is described how you can get the angle of the box.

    For the intersection: Test if the corner of your RotatedRect are inside the 'normal' area.