Fingerprint enhancement and recognition
A while ago, I posted some pretty pictures of my toe when I figured out the image format used by the Digital Persona and Microsoft fingerprint readers.
While it’s pretty cool to see your fingerprint on-screen, the real question is how do we make use of these prints? We need a way of storing fingerprints, and a way of saying “does this fingerprint equal the one we stored earlier?” From that point, we can implement fingerprint-based login and other things.
There are various open-source projects aiming to do this kind of thing, I made a list of them here. Unfortunately all of them appear to be dead projects and most of them aren’t useful at all, but I’ve made progress with one of them at least: FVS.
There are various different algorithms which can be used to compare fingerprints. I’ll try to describe the method used by FVS: minutiae detection.
A fingerprint is made up of ridges, basically just the curvy lines which you see. Ridges start and finish, and some of them split (bifurcate) into 2 other ridges. The points where ridge endings and bifurcations happen are known as minutiae. We can compare the positions and directions of the minutiae on two fingerprint images to decide whether they are equal. This is certainly throwing a lot of information away, but this method is very widely used in the fingerprint recognition world.
We start with the initial toe-print. I actually cheated by subtracting an image seen by the sensor before I scanned my toe from the toe-print, so what you can see below is slightly enhanced (clearer) than the original image.

The ridges of the fingerprint are visible above in white. The enhancement step involves finding the ridge direction and the ridge frequency. These details can then be used to apply a Gabor filter to the image, which produces a greatly enhanced version:

The above enhancement takes a few seconds on my system. This is OK for prototyping but is too slow for a real fingerprint login system, I hope we can find ways to optimise this. In addition to the Gabor filter, the image was further enhanced by binarization: all pixels are either black or white, no noise.
The ridges are now shown in black on a white background. The next step is to reduce each ridge line to a single pixel in width. This is known as thinning.

The advantage of thinning is that minutiae are now really easy to detect. We take every pixel on the image, and we ignore it if it is not a ridge (i.e. if it is white). For all the ridge pixels, we count the number of adjacent ridge pixels. If there is only one ridge pixel neighbour, we have found a ridge ending. If there are three ridge pixel neighbours, we have found a bifurcation.
FVS includes minutiae detection code based on the above algorithm:

The code isn’t perfect, as it detected many minutiae around the edge of the fingerprint image, where they do not exist. However it should be relatively simple to exclude those as FVS already knows about the edges of the print.
The next challenge is to compare two minutiae sets and decide how similar they are. FVS includes some code to do this, but it just crashes, and I haven’t spent much time debugging it yet. This is a difficult operation: prints of the same finger are never identical: sometimes some minutiae are not visible, they can be spaced slightly differently, and the finger might even be significantly rotated since the last print.
A project called eFinger has built a complete fingerprint recognition database. It uses FVS’s enhancement code, but ships it’s own code for thinning, minutiae detection, and minutiae set comparison. The code is not brilliant (does not consider rotation or anything like that) but should provide a good starting point.
August 13th, 2006 at 6:29 pm
What about issues with hackers stealing your own fingerprint? AFAIK decent fingerprint readers do not provide real fingerprint information but just some other kind of information (maybe some md5 kind of stuff…)
August 13th, 2006 at 9:10 pm
It depends how you look at it.
Sure, this device sends your whole fingerprint over a wire, which someone could be sniffing, but similarly, someone could be sniffing your keyboard cable as you type in your password.
That said, there are definite security issues with fingerprints and storing them. We leave them everywhere too. So while it may not be ultimately secure to replace passwords with fingerprints, maybe they could be combined so that a login requires a finger and a password. Maybe we could use the fingerprint to select the username. There are many possible uses.
Interestingly, when fingerprint recognition is done in hardware (such as the UPEK stuff in thinkpads), it actually rules out many things such as using fingerprint to select login name, since you typically have to say “this is the one finger I’m expecting, does it match the one the user is about to scan?”
August 16th, 2006 at 6:30 am
plz send me fingerprint recognition code plz plz pzl plz thanx
August 16th, 2006 at 5:23 pm
[...] dsd’s weblog friend of the night « Fingerprint enhancement and recognition [...]
August 30th, 2006 at 3:21 am
[...] This release contains code from eFinger and FVS to enhance the fingerprint images. The capture_finger_enhanced example program now produces images like the ones in this post, which is rather cool. Again, the enhancement takes a few seconds to complete, hopefully we can improve on this. Also, I think I saw an infinite loop in the thinning code, but have been unable to reproduce this. [...]
August 30th, 2006 at 1:21 pm
DSD, you rule! I have used and tested your stuff and its really cool. I have even tried to use the output as input to a Russian open source project for fingerprint matching, but so far with no luck, as it uses a raw scanner image (from a scanner I dont have) and wont accept any form of converted image (spent quite some time with ImageMagick, etc). So, I am – like many others – desperately waiting for your matching software code. It seems you are the only non-commercial biometrics wizard out there – and using Microsoft scanners – its beautiful!
August 31st, 2006 at 5:48 am
If you want to test your own solutions for fingerprint matching but you don’t have a fingerprint scanner, check out these sample images: http://biometrics.cse.msu.edu/fvc04db/index.html
November 7th, 2006 at 3:18 pm
I don’t know if this would be of value, but there is a standard biometric interface called BioAPI which is available under a BSD style license (it’s designed to be a cross-platform standard – I think it’s supported by NIST). http://www.bioapi.org/DownloadsPage1.html
December 14th, 2006 at 4:03 am
Anxiously waiting on your fingerprint matching code. Thanks
February 23rd, 2007 at 5:05 am
i want the source code for this project
April 20th, 2007 at 3:55 pm
can I have your code , thanks
August 30th, 2007 at 1:03 am
I need your algorithm to enhance the fingerprint image. would you mind to give it? thanks before!
October 24th, 2007 at 5:45 am
Hi Can i get your source code please? I really need it for a project. Please help me.
November 21st, 2007 at 10:33 am
Dear Prof.
Can i get your source code please? I really need it for a project for my students. Your help is very appreciated.
November 27th, 2007 at 7:25 pm
Dear Mr.
I try build similary system in C++ language. I have fingerprint reader Fujitsu MBF200, I’m write driver to this device , and I can get fingerprint image and show it or write to file. Now I try enhancement this image, I work on it few weeks and nothing, I have’t got good algoritm, or I can’t interprete it. Can You help me? Please, even You can’t send me source code. Can You send me algoritm or just equations?
I’m from Poland and in my country this problem isn’t know. I’m appologise for my language.
Please help me.
November 28th, 2007 at 7:46 am
I am sorry. I dont have such programs. I am working in other fields.
Wish you good luck. In case I found any thing new , Then I will provide you with required material.
November 30th, 2007 at 9:17 am
can we do a project without using matlab
January 3rd, 2008 at 9:03 am
hi,there i need your code for our project can i get that,please
January 14th, 2008 at 3:46 pm
Hello!
I have fingerprint reader Fujitsu MBF200. Unfortunately I don’t know how to connect it to PC via USB. Does anyone has a schema with connection mbf-200 to USB?
January 15th, 2008 at 12:00 pm
sir try to send the algorithm for finding the singular points form a fingerprint
shaji
January 16th, 2008 at 9:53 am
If you need to connect Fujitsu MBF200, you must download driver for it. Probably the best way to run this stuf you must download VeriFinger from “www.neurotechnologija.com/download.html”, it has got driver and trial program.
Good luck
March 10th, 2008 at 3:56 pm
hello!
kan i have your code for a project please?
April 23rd, 2008 at 6:58 am
Hi,
I need generalization process in fingerprint. i don’t know how to get common minutiae from images Does anyone help me?
May 21st, 2008 at 5:20 pm
plzzz send me the source code…..i really need it plzz do that as soon as possilble
June 3rd, 2008 at 8:44 am
hello
i have fingerprint reader u.are.u 4000b, but i have a problem on how to interact the fingerprint
reader with my interface design.really need your help..
June 4th, 2008 at 8:24 pm
please send me code source mtlab
August 21st, 2008 at 8:26 pm
I’m doing a project on attendance system using thumb print to authenticate the system,..could you please send me your examples of source code for my project reference,…
October 11th, 2008 at 1:34 pm
can i get your code for study
November 4th, 2008 at 12:38 pm
HI,
CAN U SEND ME THE CODE OF THIS PROJECT,,,THIS WILL BE BENIFICIAL FOR ME.
THANKS
November 4th, 2008 at 12:40 pm
IF U CAN ,THEN SEND IT ON k5geet_2006@yahoo.com
THANKS
November 14th, 2008 at 5:58 pm
hi,
i am working on finger print compression, do you have any information related to that. just mail me trysaran@gmail.com
December 23rd, 2008 at 9:36 am
hi friends i am swathi studying final year b.tech.my project is finger print authontication.i don’t know any thing abt my project n i need source code for finger print authentication .if any one knows abt this plz send to my mail.its very urgent
February 9th, 2009 at 1:57 pm
i have fingerprint reader .i want to interact with that by using .net (c#) how can i please tell
May 8th, 2009 at 10:14 am
I m writing my thesis on fingerprint recognition. i have done binarization & thining of fingerprint image i have problem to extract minutiae.can u send coding to extract minutiae at bhangukiranjot@yahoo.co.in
thanks………..
July 6th, 2009 at 12:43 am
hi friends i am mourad studying final year b.tech.my project is finger print authontication.i don’t know any thing abt my project n i need source code for finger print authentication i have fingerprint reader .if any one knows abt this plz send to my mail.its very urgent
i want to interact with that by using .net (c#) how can i please tell
mouradking@gmail.com
mouradel2001@hotmail.com
November 3rd, 2009 at 6:56 am
Will U please give me its source code… It will be really helpful for me….
November 5th, 2009 at 5:59 am
hellow man can i found aproject about enhance thumb print noise and ithank you
February 2nd, 2010 at 6:24 am
I need the code for this….
thanks in advance.
February 16th, 2010 at 10:05 pm
i’m making a project on fingerprint recognition in matlab. will you please tell the circuit i should use and also the hardware requirements. please mail the details to amandeepgautam@ymail.com
July 6th, 2010 at 8:29 am
hi! thanks got i found you, i’m now working on my final year project and i hope you can send me the code for the fingerprint system..thanks in advance really appreciate if you can help me out..
July 25th, 2010 at 12:30 pm
i viewed your documentation and its really a good project.
i am working on this project so can you please mail be your project for reference as this can be helpful for me to build my project.
thanks
October 9th, 2010 at 12:51 pm
My project is finger print authontication.i don’t know any thing abt my project n i need source code for finger print authentication i have fingerprint reader .if any one knows abt this plz send to my mail.its very urgent
i want to interact with that by using .net (c#) how can i please tell
meetsenthilrvs@gmail.com
October 20th, 2010 at 4:21 pm
I m writing my thesis on fingerprint recognition. i have done binarization & thining of fingerprint image i have problem to extract minutiae.can u send coding to extract minutiae at maha_saad_tolba@yahoo.com
Thanks
February 18th, 2011 at 1:59 am
i’m trying to smoothing my binarized fingerprint image, but i got nothing.
could you help me with smoothing the image?
i really need it now
February 18th, 2011 at 2:00 am
and could you send me an example of gabor filtering to my email fiest_alph@yahoo.co.id
thanks before
February 21st, 2011 at 9:02 am
can you please tell me the source code for this project using matlab.
June 9th, 2011 at 10:58 am
i have done to match 1 to with many finger print in database ….
if u want to any suggetion contact on my email address:
dipen.ec2010@gmail.com
January 24th, 2019 at 10:30 pm
download
dsd
January 29th, 2019 at 9:06 am
file
dsd
March 5th, 2019 at 3:02 pm
2
dsd
April 13th, 2019 at 8:22 pm
Download site
dsd
April 16th, 2019 at 3:09 pm
Download site
dsd
April 25th, 2019 at 8:33 am
file
dsd
June 18th, 2019 at 6:51 pm
download
dsd’s weblog » Blog Archive » Fingerprint enhancement and recognition
November 12th, 2019 at 6:46 pm
buy hcg in Alexandria
dsd’s weblog » Blog Archive » Fingerprint enhancement and recognition