home  |   research   |  members   |  projects  |  publications   |  conferences of interest   |  downloads   |  contact  |  intern

PLUS OpenVein Finger- and Hand-Vein Toolkit

This is "The Multimedia Signal Processing and Security Lab", short WaveLab, website. We are a research group at the Computer Sciences Department of the University of Salzburg headed by Andreas Uhl. The short name "WaveLab" already indicates that wavelets are among our favorite tools - we have 15 years of experience in this area. Our research is focused on Multimedia Security including Watermarking, Image and Video Compression, Medical Image Classification, and Biometrics.
LyX Document

Finger- and Hand-Vein Recognition Framework Information

The PLUS OpenVein Toolkit is a feature extraction and matching/evaluation framework for finger- and hand- vein recognition implemented in MATLAB. It was tested on MATLAB 2016 and should work with all version of MATLAB newer or equal to 2016. This software is covered under the New BSD license (which can be found here: BSD 3 Clause License). In the following the included pre-processing, feature extraction, comparison and evaluation schemes are listed and described, followed by set-up and usage instructions for the whole framework.

Note: This page will be updated with the most recent information regarding the framework soon.

Pre-Processing Methods

The recognition framework includes implementations of the following hand- and finger-vein specific pre-processing methods:
  • Contrast Adaptive Limited Histogram Equalisation (CLAHE) [1]
  • Finger Masking (LeeRegion) [2]
  • Finger Rotation Compensation Normalisation (HuangNormalise) [3]
  • Retinex [4], [5]
  • High Frequency Emphasis Filtering (HFE) [6]
  • Circular Gabor Filtering (CGF) [7]
  • Multi-Channel Gabor Filter (Yang09) [8]
  • Light Scattering Removal in Combination with Even Gabor Filtering (Shi12) [9]
  • Light Scattering Removal based on Biological Optical Model (Yang12) [10]
  • Scattering Removal in Combination with Even Gabor Filtering (YangShi12) [11]
  • Speeded Up Adaptive Contrast Enhancement (SUACE) [12]
  • Further Filtering / Image Processing Schemes:
    • Resizing
    • Median filtering
    • Wiener filtering
    • Unsharp masking
    • Gaussian high pass filtering

Feature Extraction Schemes

The following feature extractors are contained within the vein recognition framework:

  • Maximum Curvature (MC) [13]
  • Repeated Line Tracking (RLT) [14]
  • Wide Line Detector (WLD) [3]
  • Principal Curvature (PC) [15]
  • Gabor Filter (GF) [16], [17]
  • SIFT (SIFT) [18], [19]
  • SURF (SURF) [18], [20]
  • Local Binary Patterns Based (LBP) [2]
  • Phase Only Correlation (POC) [21]
  • Isotropic Undecimated Wavelet Transform (IUWT) [22]
  • Deformation Tolerant Feature Point Matching (DTFPM) [23]
  • Finger Vein Recognition with Anatomical Structure Analysis (ASAVE) [24]
  • Finger Vein Recognition based on Deformation Information (Meng18) [25]
  • Enhanced Maximum Curvature [35]
  • Morphological Post Processing Options:
    • These operations include: Skeletonisation, Thinning, Bridging, Fill, Shrink, Spur, Clean, Area Open, Inverse Area Open, Dilation, Erosion, Top Hat, Bottom hat, Open and Close. Their implementation is based on the morphological image processing operations provided by MATLAB.

Evaluation Methods

The following performance metrics and plots can be generated / calculated using the vein recognition framework:
  • EER (the point where the FMR and the FNMR are equal )
  • FMR100 (the lowest FNMR for FMR = 1%)
  • FMR1000 (the lowest FNMR for FMR = 0.1%)
  • ZeroFMR (the lowest FNMR for FMR = 0%)
  • FMR vs FNMR Plot
  • ROC Plot
  • DET Plot
In order to calculate the false match rate (FMR) and the false non-match rate (FNMR) prior to determining further performance numbers like the equal error rate (EER), several different protocols are included:
  • FVC: This protocol is adopted from the fingerprint verification contests (e.g. the FVC2004 [26]). All possible genuine comparison are performed, i.e. each sample is compared against all remaining samples of the same finger/hand. No symmetric comparisons are performed. The number of genuine compares is: n=((#images * (#images - 1)) / 2) * #fingers_hands. For the impostor comparisons, only the the first sample of each finger/hand is compared against the first sample of all remaining fingers/hands. As with the genuine comparisons, no symmetric comparisons are performed. The number of impostor compares is: n=(#fingers_hands * (#fingers_hands - 1)) / 2. This protocol speeds up the comparison process as the number of impostor compares is greatly reduced while still ensuring that at least each finger/hand is compared against each other finger/hand once.
  • FVC (short): An even shorter version of the FVC protocol in terms of the number of compares that are performed is included as well. In this version, the same number of genuine compares as for the FVC protocol is performed, but the number of impostor compares is further reduced. For the impostor compares, only the first sample of each finger/hand per subject is compared with the first sample of the finger/hand with the same ID for all other subjects, resulting in n=#fingers_hands * (#subjects * (#subjects - 1)) / 2 impostor compares.
  • Full: This protocol simply performs all possible compares without doing any symmetric ones, i.e. n=(#images * (#images - 1)) / 2 genuine compares and n=((#images * #fingers_hands) * (#images * #fingers_hands - 1)) / 2 impostor compares are performed.
  • Ton: Ton and Veldhuis used a reduced version of the “Full” protocol in the paper about UTFVP finger vein data set [27]. As they used about 10% of the dataset to tune the parameters of the recognition schemes, they excluded these samples from the subsequent performance evaluation. In order to do so, they skipped the first finger of the first subject, the second finger of the second subject, the first finger of the seventh subject and so on. This protocol is included in our vein recognition framework too, mainly to obtain recognition performance results that can be directly compared to the ones of the original UTFVP paper.

Supported Data Sets

  • UTFVP [27]
  • SDUMLA-HMT [28]
  • FV-USM [29]
  • HKPU [16]
  • VERA FingerVein Spoofing [30]
  • VERA PalmVein [31]
  • PLUSVein-FV3 [32]
  • PLUSVein-3D-FV [33]
  • PROTECT Hand-/ Finger-/ and Wrist-Vein [34]
Image file handling is done in readImages.m. Parsing of the file names (subject, finger/hand and sample ID) is based on regular expressions. A new dataset can be easily added by adding a new case to the switch-case clause in readImages.m, providing a suitable regular expression for parsing the file name.

Settings Files

TODO: Re-Write the text
Several settings files for the supported data sets are provided in the Settings subdirectory. There is an example settings file in this directory, called settingsExample.ini, which lists all possible options (excluding all parameters of the different pre-processing, feature extraction and matching methods) together with a short explanation. All the important parameters and options are controlled via these settings files and by automatically generating settings files, various different settings can be tested in batch processing for parameter tuning. The settings are grouped according to general settings, pre-processing settings, feature extraction settings, optional post-processing settings, comparison settings and results settings. The settings are described in more detail in the readme of the PLUS OpenVein Toolkit, so here we only explain the most important ones. The EvaluationType determines the extracted features. If hand vein images are to be processed, HandVeinProcessing should be set to True. If OverrideResults is set to True, previous saved results are overwritten, otherwise they are loaded and the previous results are displayed. The DataBaseType determines the dataset to use. The Methods and Options in the [Preprocessing] section set the desired pre-processing methods together with their options. The list of options has to have the same number of elements as the list of methods. The Options in the [Feature Extraction] section set optional options for the feature extraction scheme. MatchMode in the [Matching] section determines the comparison protocol and Options sets additional options. If SaveScores is set to True, the scores are saved as .mat file. The ResultsTextFile and ResultsFile are the names of the files where the results are saved, in text format and as .mat file. If Plots is set to True, the plots are generated and if ShowPlots is set to True, they are displayed (otherwise only the values are saved in the results .mat file).

Package Information

The main file is the Matcher.m, which contains most of the program logic, including the preprocessing, feature extraction, comparison execution functions. The “matcher” is actually a MATLAB object, also storing the input images, the extracted features, the comparison scores and the results. Some parts of the recognition schemes are directly implemented in Matcher.m, but most of the schemes are called as external functions, implemented in distinct .m files.
These .m files are organised in the following subdirectories:
  • Automation: several scripts for batch automation, automated testing of setting files, etc.
  • EEREvaluation: functions to determine the performance figures and plots
  • FeatureExtraction: most of the self-contained feature extraction functions, like the ones provided by B.T. Ton
  • FeatureLevelFusion: tools to perform feature level fusion and evaluate fusion results
  • GUI: graphical user interface related stuff, deprecated, does not work with current version
  • Matching: different comparison functions, e.g. the Miura matcher
  • Preprocessing: various pre-processing functions for vein images
  • QualityAssessment: a few general image contrast metrics as well as vein specific quality metrics
  • ScoreLevelFusion: tools and functions to perform (simple) score level fusion
  • Settings: contains the settings files for various datasets
  • UtilityFunctions: several helper functions, e.g. for handling ini files, progress bar, plotting SIFT key-points, etc.
  • vl_feat: directory where to put the vl_feat sources

Usage Instructions

Set-Up Instructions

In order to use the vein recognition framework some prerequisites and set-up steps are necessary. At first all the external dependencies listed in external dependencies have to be downloaded and the files placed in the respective subdirectories (especially vl_feat). If vl_feat is placed in a different subdirectory then the vl_feat directory inside the main directory, the path has to be adjusted in automateMatcher.m. Then the dataset(s) have to be prepared, i.e. unzipping the images and putting them in a directory which is accessible to the recognition framework and MATLAB.

Automated Recognition Tool-Chain Processing

Each step of the program execution can be called manually, but for convenience an automated program execution is provided by automateMatcher.m. This file controls the program flow using Matcher.m. It requires 3 input parameters only: the path of the gallery directory (can be empty), the path of the probe directory and the path to the settings file. Hence, to start the whole recognition tool-chain, including reading of the vein images, pre-processing, feature extraction, matching and performance determination, automateMatcher() has to be called with the paths to the input images and the desired settings file. All further options are controlled via the settings file. For more detailed usage instructions have a look at the readme.txt file contained in the package.

External Dependencies

The following software packages are not included in the sources of the framework, have to be downloaded separately and put into the respective subdirectories:

Other Dependencies

The following methods have not been implemented by ourselves but are already included in the framework sources:

For LeeRegion and HuangNormalise implementations are provided by B.T. Ton and are available on MATLAB Central: https://de.mathworks.com/matlabcentral/fileexchange/35826-simple-finger-normalisation and https://de.mathworks.com/matlabcentral/fileexchange/35752-finger-region-localisation.

For the Retinex method a publicly available MATLAB implementation of Brian Funt, Florian Ciurea, and John McCann is utilised. It can be found at: http://www.cs.sfu.ca/~colour/publications/IST-2000/.

For SUACE the implementation provided by the original authors of [12] is used. It is available on github: https://github.com/ravimalb/suace/.

For the Maximum Curvature [13], Repeated Line Tracking [14], Wide Line Detector [3] and Principal Curvature [15] feature extraction as well as for the finger boundary detection and the finger normalisation an implementation of B.T. Ton was utilised which is publicly available through MATLAB Central. The Gabor Filter approach is a custom implementation of the approach by Kumar et al. [16] done by Emanuela Piciucco in [17], which is also included in the vein recognition framework package.

For matching an implementation of B.T. Ton of the method proposed by Miura et al. [13], [14] which can also be downloaded via MATLAB Central was used.

For the EER determination and generation of the DET plots the routine of the Biosecure Tool was utilisied which can be found here.

For adaptive thresholding an implementation by Guanglei Xiong, which freely available at MATLAB Central was used.

For Gaussian filtering an implementation by F. van der Heijden, freely available at MATLAB Central was used.

For several of the included histogram comparison distances the implementation of Boris Schauerte, available at https://de.mathworks.com/matlabcentral/fileexchange/39275-histogram-distances are used.

The ini file handling is accomplished using an open-source ini library for MATLAB by Primoz Cermelj, available at: https://de.mathworks.com/matlabcentral/fileexchange/2976-inifile.

For several basic image processing as well as morphological image operations, functions provided by MATLAB's image processing toolbox are utilised.


Here the references to all the included pre-processing, feature extraction and comparison schemes are listed:

[1]    ZUIDERVELD, Karel. Contrast limited adaptive histogram equalization. Graphics gems, 1994, S. 474-485.
[2]    LEE, Eui Chul; LEE, Hyeon Chang; PARK, Kang Ryoung. Finger vein recognition using minutia‐based alignment and local binary pattern‐based feature extraction. International Journal of Imaging Systems and Technology, 2009, 19. Jg., Nr. 3, S. 179-186.
[3]    HUANG, Beining, et al. Finger-vein authentication based on wide line detector and pattern normalization. In: Pattern Recognition (ICPR), 2010 20th International Conference on. IEEE, 2010. S. 1269-1272.
[4]    XIE, Shan Juan, et al. Intensity variation normalization for finger vein recognition using guided filter based singe scale retinex. Sensors, 2015, 15. Jg., Nr. 7, S. 17089-17105.
[5]    MCCANN, John. Lessons learned from mondrians applied to real images and color gamuts. In: Color and imaging conference. Society for Imaging Science and Technology, 1999. S. 1-8.
[6]    ZHAO, Jianjun, et al. A new approach to hand vein image enhancement. In: Intelligent Computation Technology and Automation, 2009. ICICTA'09. Second International Conference on. IEEE, 2009. S. 499-501.
[7]    ZHANG, Jing; YANG, Jinfeng. Finger-vein image enhancement based on combination of gray-level grouping and circular gabor filter. In: Information Engineering and Computer Science, 2009. ICIECS 2009. International Conference on. IEEE, 2009. S. 1-4.
[8]    YANG, Jinfeng; YANG, Jinli. Multi-channel gabor filter design for finger-vein image enhancement. In: Image and Graphics, 2009. ICIG'09. Fifth International Conference on. IEEE, 2009. S. 87-91.
[9]    SHI, Yihua; YANG, Jinfeng; YANG, Jucheng. A New Algorithm for Finger-Vein Image Enhancement and Segmentation. Information Science and Industrial Applications, 2012, 4. Jg., Nr. 22, S. 139-144.
[10]    YANG, Jinfeng; SHI, Yihua; YANG, Jucheng. Finger-Vein image restoration based on a biological optical model. In: New Trends and Developments in Biometrics. InTech, 2012.
[11]    YANG, Jinfeng; SHI, Yihua. Finger–vein ROI localization and vein ridge enhancement. Pattern Recognition Letters, 2012, 33. Jg., Nr. 12, S. 1569-1579.
[12]    BANDARA, A. M. R. R.; RAJARATA, KASH Kulathilake; GIRAGAMA, PWGRMPB. Super-efficient spatially adaptive contrast enhancement algorithm for superficial vein imaging. In: Industrial and Information Systems (ICIIS), 2017 IEEE International Conference on. IEEE, 2017. S. 1-6.
[13]    Naoto Miura, Akio Nagasaka, Takafumi Miyatake. Extraction of finger-vein patterns using maximum curvature points in image profiles. IEICE transactions on information and systems, 90(8):1185—1194, 2007
[14]    Naoto Miura, Akio Nagasaka, Takafumi Miyatake. Feature extraction of finger-vein patterns based on repeated line tracking and its application to personal identification. Machine Vision and Applications, 15(4):194—203, 2004
Joon Hwan Choi, Wonseok Song, Taejeong Kim, Seung-Rae Lee, Hee Chan Kim. Finger vein extraction using gradient normalization and principal curvature. IS&T/SPIE Electronic Imaging:725111—725111, 2009
[16]    Ajay Kumar, Yingbo Zhou
. Human identification using finger images. Image Processing, IEEE Transactions on, 21(4):2228—2244, 2012
[17]    E. Piciucco, E. Maiorana, C. Kauba, A. Uhl, P. Campisi
. Cancelable Biometrics for Finger Vein Recognition. 2016 International Workshop on Sensing, Processing and Learning for Intelligent Machines (SPLINE), 2016.
[18]    Christof Kauba, Andreas Uhl. Robustness Evaluation of Hand Vein Recognition Systems. Proceedings of the International Conference of the Biometrics Special Interest Group (BIOSIG'15), 2015.
[19]    LOWE, David G. Object recognition from local scale-invariant features. In: Computer vision, 1999. The proceedings of the seventh IEEE international conference on. Ieee, 1999. S. 1150-1157.
[20]    BAY, Herbert; TUYTELAARS, Tinne; VAN GOOL, Luc. Surf: Speeded up robust features. In: European conference on computer vision. Springer, Berlin, Heidelberg, 2006. S. 404-417.
[21]    MAHRI, Nurhafizah; SUANDI, Shahrel Azmin Sundi; ROSDI, Bakhtiar Affendi. Finger vein recognition algorithm using phase only correlation. In: Emerging Techniques and Challenges for Hand-Based Biometrics (ETCHB), 2010 International Workshop on. IEEE, 2010. S. 1-6.
[22]    Jean-Luc Starck, Jalal Fadili, Fionn Murtagh. The Undecimated Wavelet Decomposition and its Reconstruction. IEEE Transactions on Image Processing, 16(2):297—309, 2007. URL http://dx.doi.org/10.1109/TIP.2006.887733
[23]    MATSUDA, Yusuke, et al. Finger-vein authentication based on deformation-tolerant feature-point matching. Machine Vision and Applications, 2016, 27. Jg., Nr. 2, S. 237-250.
[24]    YANG, Lu, et al. Finger vein recognition with anatomy structure analysis. IEEE Transactions on Circuits and Systems for Video Technology, 2018, 28. Jg., Nr. 8, S. 1892-1905.
[25]    MENG, Xianjing, et al. Finger vein recognition based on deformation information. Science China Information Sciences, 2018, 61. Jg., Nr. 5, S. 052103.
[26]    MAIO, Dario, et al. FVC2004: Third fingerprint verification competition. In: Biometric Authentication. Springer, Berlin, Heidelberg, 2004. S. 1-7.
[27]    TON, Bram T.; VELDHUIS, Raymond NJ. A high quality finger vascular pattern dataset collected using a custom designed capturing device. In: Biometrics (ICB), 2013 International Conference on. IEEE, 2013. S. 1-5.
[28]    YIN, Yilong; LIU, Lili; SUN, Xiwei. SDUMLA-HMT: a multimodal biometric database. In: Chinese Conference on Biometric Recognition. Springer, Berlin, Heidelberg, 2011. S. 260-268.
[29]    ASAARI, Mohd Shahrimie Mohd; SUANDI, Shahrel A.; ROSDI, Bakhtiar Affendi. Fusion of band limited phase only correlation and width centroid contour distance for finger based biometrics. Expert Systems with Applications, 2014, 41. Jg., Nr. 7, S. 3367-3382.
[30]    TOME, Pedro; VANONI, Matthias; MARCEL, Sébastien. On the vulnerability of finger vein recognition to spoofing. In: Biometrics Special Interest Group (BIOSIG), 2014 International Conference of the. IEEE, 2014. S. 1-10.
[31]    TOME, Pedro; MARCEL, Sébastien. On the vulnerability of palm vein recognition to spoofing attacks. In: Biometrics (ICB), 2015 International Conference on. IEEE, 2015. S. 319-325.
[32]    KAUBA, Christof; PROMMEGGER, Bernhard; UHL, Andreas. The Two Sides of the Finger - An Evaluation on the Recognition Performance of Dorsal vs. Palmar Finger-Veins. In: Biometrics Special Interest Group (BIOSIG), 2018 International Conference of the. IEEE, 2018. S. 1-8.
[33]    PROMMEGGER, Bernhard; KAUBA, Christof; UHL, Andreas. A Different View on the Finger - Multi-Perspective Score Level Fusion in Finger-Vein Recognition. In: Handbook of Vascular Biometrics, Springer Science+Business Media, 2019, S. 45 pages.
[34]    UNIVERSITY OF READING; PROTECT Multimodal DB Dataset. 2017
[35]    SYARIF, Munalih Ahmad, et al. Enhanced maximum curvature descriptors for finger vein verification. Multimedia Tools and Applications, 2017, 76. Jg., Nr. 5, S. 6859-6887.


OpenVein Toolkit Download

The source code can be found on our gitlab server: OpenVein-Toolkit Git Repository

The latest release version of the OpenVein-Toolkit is available upon request.

Please fill out this form to request a download link for the OpenVein-Toolkit source files:

Email address: