File Exchange

image thumbnail

Miura et al. vein extraction methods

version 1.4 (6.91 KB) by

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

4.71429
12 Ratings

16 Downloads

Updated

View License

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:
https://vimeo.com/51757793

Literature:
- 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).

Usage:
The file "miura_usage.m" gives an impression of how to use the feature extraction methods. Finger region localisation can be found here:
http://www.mathworks.in/matlabcentral/fileexchange/35752-finger-region-localisation

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

Comments and Ratings (25)

Liona Soleman

Dear Mr.Bram Ton, I'm very interested in your research about fingervein recognation, and I'm also doing the same research like you. That I want to ask, do you have other images or database sets for sample testing in this research? if you have, may I have your data for sample testing my research? I'm very grateful if you can respond my message. Thanks before.
Deep best regards,

ahmed essam

I got this error msg. Could you please assist/
??? Error using ==> plus
Matrix dimensions must agree.
Error in ==> lee_usage at 13
edge_img(edges(1,:) + size(img,1)*[0:size(img,2)-1]) = 1;
&
Error in ==> miura_max_curvature at 64
k(:,:,1) = (fxx./((1 + fx.^2).^(3/2))).*fvr; % hor
Error in ==> miura_usage at 22
v_max_curvature = miura_max_curvature(img,fvr,sigma);
Plz sir tell me how i will solve it....
May I get help from you to send me send me an correct version of your code.Here is my email:
eng.a.essam1@gmail.com

dpc

dpc (view profile)

Very good solution. Thks

Roya Roshani

Hi
I got this error msg. Could you please assist/
??? Error using ==> plus
Matrix dimensions must agree.

Error in ==> lee_usage at 13
edge_img(edges(1,:) + size(img,1)*[0:size(img,2)-1]) = 1;

i can't under stand the repeated line tracking function.
what you mean by locus point here.
i can't under stand the locus point matrix.
my email id is:
lakshmirada94@gmail.com

ROSE

ROSE (view profile)

i can't understand the miura_max_curvature function working.
i go through base paper ' extraction of finger-vein patterns using maximum curvature point in image profile by miura' and understand that this function was implemented the equations in that paper. please explain the basics of the equations here used.

Serj Abramov

I have of implementation of this method in c++. I can sell it.
Here is my email: serj@doctor.com

ismot ara

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

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

Plz sir tell me how i will solve it....

May I get help from you to send me send me an correct version of your code.Here is my email:
preetycse07@yahoo.com

ismot ara

Dear sir When i use im2double() to run then the file cannot run. but when i use im2bw() then the file can run.. but pattern is not visible... Now what can i do.. how i run this file using im2double(); i cant understand what i will do... Sir plz urgent

ismot ara

Dear Sir
In miura_usage.m line 18, 19
md = median(v_max_curvature(v_max_curvature>0));
v_max_curvature_bin = v_max_curvature > md;

How can I execute these binarise code in miura_max_curvature.m file. please inform me...

ismot ara

ismot ara

Dear Sir
In miura_usage.m line 18, 19
md = median(v_max_curvature(v_max_curvature>0));
v_max_curvature_bin = v_max_curvature > md;

How can I execute these binarise code in miura_max_curvature.m file. please inform me...

ismot ara

Dear Sir,
I am novice in matlab. So when i run miura_max_cuvature file then face several problems. But i dont understand the problems. it says parameter argument sigma,img, fvr undefined How to define these parameter. Please help me. I need to know in badly.....

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

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

Arya

Arya (view profile)

Sir,
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);

Smart

Smart (view profile)

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

Mohamed

Dear Dr. Bram Ton,

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

http://www.sciencedirect.com/science/article/pii/S0167865512000748

I already sent the paper to your e-mail account

thank you very much for your help and support

Bram Ton

Bram Ton (view profile)

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

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:
bo.zhang-1@ou.edu

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.

Bram Ton

Bram Ton (view profile)

@Nourul
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;

nourul

nourul (view profile)

what about binarize function? Thanks.

Bram Ton

Bram Ton (view profile)

Suhan Shetty

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

Updates

1.4

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

1.3

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

1.1

Added link to finger region localization.

MATLAB Release
MATLAB 7.13 (R2011b)

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video