Code covered by the BSD License  

Highlights from
Miura et al. vein extraction methods

5.0 | 2 ratings Rate this file 51 Downloads (last 30 days) File Size: 6.91 KB File ID: #35716
image thumbnail

Miura et al. vein extraction methods


Bram Ton (view profile)


19 Mar 2012 (Updated )

Two vein extraction methods as described by Miura et al. for finger vein authentication.

| Watch this File

File Information

Maximum curvature:
This method will try to extract the centre lines of the veins. This is done by calculating local maximum curvatures in cross-sectional profiles of a vein image. The method is supposed to be robust against varying vein widths and non-uniform brightness.

Repeated line tracking:
This algorithm will start at several random points and will try to track a line. If a pixel has been visited by the line tracking algorithm multiple times it is likely to be a vein. A movie showing the algorithm in action can be found here:
 - N. Miura, A. Nagasaka, and T. Miyatake "Feature extraction of finger vein patterns based on repeated line tracking and its application to personal identification" Machine Vision and Applications.
doi: 10.1007/s00138-004-0149-2
 - N. Miura, A. Nagasaka, and T. Miyatake "Extraction of finger-vein patterns using maximum curvature points in image profiles." IAPR conference on machine vision applications 9 (2005).

The file "miura_usage.m" gives an impression of how to use the feature extraction methods. Finger region localisation can be found here:

Please leave a comment, if you like it, find a bug, or know (made) good improvements to the code.

MATLAB release MATLAB 7.13 (R2011b)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (12)
08 Apr 2015 Naidile sidduswamy

in miura_max_curvature function, could you pls tell me how you got this formula
f1 = 0.5*sqrt(2)*(fx + fy)?

Comment only
15 Apr 2014 vivekanandastudents

Sir,i want to ask that which are all the features you are extracting from the image

Comment only
24 Oct 2013 Arya

Arya (view profile)

I got the following error while trying this code. The error is with max_curvature function.Reapeted line tracking is working properly. As am new to matlab i could not troubleshoot the error. Please help me
??? Subscripted assignment dimension mismatch.

Error in ==> miura_max_curvature at 54
k(:,:,1) = (fxx./((1 + fx.^2).^(3/2))).*fvr; % hor

Error in ==> miura_usage at 15
v_max_curvature = miura_max_curvature(img,fvr,sigma);

Comment only
11 Dec 2012 Smart

Smart (view profile)

Thx a lot
can u explain how can i calculate FAR and FRR plz

Comment only
03 Jul 2012 Mohamed

Dear Dr. Bram Ton,

would I ask you for an implementation for this simple and efficient paper for vein extraction

I already sent the paper to your e-mail account

thank you very much for your help and support

11 Jun 2012 Bram Ton

Bram Ton (view profile)

@Adem Trey & Bo
I have added an updated 'miura_usage.m' script, which should be foolproof now ;)

Comment only
08 Jun 2012 bo

bo (view profile)

Hello, Bram Ton:
I am a new beginner to study vein extract. Thanks you for the great work. miura usage is our main function or not?
I have download your code, when I am trying to run your code, here the error information:
??? Undefined function or method 'finger_region' for input arguments of
type 'double'.

Error in ==> miura_usage at 11
fvr = finger_region(img,'mask',40); % Get finger region
when I try to modify to the function finger_region to lee_region. then I got the following information:
??? Error using ==> zeros
Leading inputs must be numeric.

Error in ==> lee_region at 36
mask = zeros(mask_h,mask_w);

Error in ==> miura_usage at 10
fvr = lee_region(img,'mask',40); % Get finger region
I am wondering May I get help from you to send me send me an correct version of your code.Here is my email:

Comment only
10 May 2012 Adam Trey

Is finger_region() the same as lee_region()?

I got an error when I run miura_usage.m

Error in ==> miura_usage at 11
fvr = lee_region(img,'mask',40); % Get finger region

??? Error using ==> zeros
Leading inputs must be numeric.

Error in ==> lee_region at 37
mask = zeros(mask_h,mask_w);

And, what about the full binarize() function? Thanks.

08 May 2012 Bram Ton

Bram Ton (view profile)

Miura et al. his paper is not clear about the binarisation method. I have used binarisation based on the median value with good results:
md = median(img(img>0));
BW = img > md;

Comment only
02 May 2012 nourul

nourul (view profile)

what about binarize function? Thanks.

Comment only
21 Mar 2012 Bram Ton

Bram Ton (view profile)

Please see my recently submitted work:

Comment only
21 Mar 2012 Suhan Shetty

cannot find fingerregion function.Please pass it.Thanks a ton.

Comment only
21 Mar 2012

Added link to finger region localization.

11 Jun 2012

Updated the 'miura_usage.m' script to make it foolproof.

06 Nov 2012

Added link to movie showing the repeated line tracking algorithm in action.

Contact us