For my final masters thesis I am currently working on finger vein authentication. Vein authentication is an upcoming type of biometrics which uses the vascular pattern of a certain body part as an unique unique property. As with all biometrics the idea is that no two person will exhibit the same vascular pattern. Currently the vascular patterns of the palm and finger are used for biometrics. Advantages of using vascular patterns for biometrics is that they are difficult to forge. For example a vascular pattern is not left behind after touching a surface as is the case with fingerprints. Another advantage the (probable) higher accuracy rate in terms of false rejections and false acceptances.

Vascular pattern of the finger
Vascular pattern of the finger

The assignment of my final thesis is to design a device for capturing the vascular pattern of the finger. Furthermore a small database of vascular patterns of the finger will be collected. And finally some of the algorithms mentioned in the scientific literature are implement and verified.

The sensor

The basic idea of the sensor is that haemoglobin in blood is absorbed by NIR light. Thus by the transmitting NIR light through the finger the blood veins and arteries will appear darker in the image than surrounding tissue. The final sensor can be seen in the figure below. The inner dimensions of the 'black box' are roughly 11x8x50cm.

Finger vein sensor
Sensor used to capture vascular patterns of the finger

The wires sticking out are connected to a USB controlled power regulating device. The device is capable of controlling the output power of each of the eight LEDs individually using PWM. In order to capture a clear vascular pattern it is important that the image has a uniform brightness. The uniform brightness is achieved by regulating the output power of each individual LED using a simple control algorithm. The current sensor uses TSFF5210 LEDs which have a wavelength of 870nm. This wavelength is in the same range as an average television remote control.

Vein sensor internals
Internals of the finger vein sensor

The internals of the sensor can be seen in the figure above. It can be seen that there are two compartments, one containing the illumination controller and the other one containing a slanted mirror and a standard CMOS camera.

Image processing

After an image is captured the vascular pattern needs to be extracted from the image using some form of image processing. Currently I have implemented two methods for finger vein extraction, a method based on maximal curvature and a method based on repeated line tracking. These are both described by Miura et al. and the results described in their papers look very promising. The two methods can be seen in the figure below, the extracted veins are overlaid in green across the original image. The image used is the same one as the one at the top of the post.

Extracted finger veins
Two finger vein extraction algorithms

Conclusion

Finger vein authentication seems to be a very promising technique but further research is needed, especially the performance figures mentioned in current literature always lack estimated uncertainties and sometimes even look quite dodgy. At the end of my thesis I hope to have some clear results about this new form of biometrics. Any suggestions, questions, remarks, etc. are always welcome.

Files:
Update 20th March 2012 Most recent code can now be found at the Matlab File Exchange

4 Comments

Showing 1 - 10 of 4 comments.
Felix Fergosen

Hi Bram, Can you tell me what is the second parameter in function miura_repeated_line_tracking? have you any example?

Hi Felix, the second argument 'fvr' is a binary image which indicates the 'search' region. Only in this region the algorithm will try to find the vascular pattern.

nourul

Hi Bram, in http://www.mathworks.com/matlabcentral/fileexchange/35716-miura-et-al-vein-extraction-methods/content/miura_usage.m , it has been noted that finger_region() and binarize() are the designer's own functions. The function of finger_region() has been given in another post. What about binary() function? Do you have code for that function?

Felix

Hi Bram, can u tell me how can i calculate FAR and FRR in matlab

Leave a Reply