Report IX Final
Report IX Final
Fingerprint
Attendance
System
Using
MATLAB
Simulator
Danish
Refai
Siddharth
Upadhyay
Anurag
Choudhary
This
is
to
certify
that
Mr.
Danish
Refai
with
“Gr.
No.:
C07009153”
&
Mr.
Siddharth
Upadhyay
with
“Gr.
No.:
C07009085“
&
“Mr.
Anurag
Choudhary
with
“Gr.
No.:
C07009819”
have
undertaken
the
minor
project
titled
The
students
have
successfully
completed
the
project
report
for
the
partial
fulGillment
of
the
B.Tech
(EXTC)
as
per
the
norms
prescribed
by
NMIMS
University
during
the
ninth
trimester
of
academic
year
2009-‐10.
The
project
report
has
been
assessed
and
found
to
be
satisfactory.
_______________________
(Project Guide)
_______________________ _________________________
2
Acknowledgments
This
project
could
not
have
been
accomplished
without
the
splendid
support
and
guidance
of
Prof.
Shashikant
Patil.
His
tremendous
efforts
and
profound
inputs
have
made
this
report
of
a
great
class
and
standard.
We
would
also
like
to
thank
Prof.
Shashikant
Patil
for
the
collaboration
on
the
IEEE
Internet
Archives
which
made
our
research
very
perceptive.
Also
expressing
credit
toward
the
MPSTME
Library
for
providing
us
with
great
resources
for
this
project.
Last
but
not
the
least,
we
would
also
like
to
thank
our
Head
of
Department,
Prof.
B.Shailendra,
for
being
such
a
great
source
of
inspiration
for
the
this
project.
3
Table
of
Contents
Introduction:! 6
Introduction to Fingerprints! 6
Physiology of Fingers! 7
Extraction Process! 8
Pore Extraction Technique! 8
Scanning Resolution! 8
Finger Plasticity! 9
Important Terms:! 9
MATLAB Simulation! 12
Requirements! 12
Preparations! 12
Code! 12
Functions! 15
Load image! 16
Enhancement! 16
Binarize! 17
Thining! 18
Minutiae! 18
Termination! 19
Bifurcation! 20
Remarks! 20
Process 1! 21
Process 2! 21
4
Process 3! 21
ROI! 22
Orientation! 25
Termination Orientation! 25
Bifurcation Orientation! 26
Results ! 27
Storage! 27
Future Prospects:! 29
Appendix! 30
Supplement Files! 30
Bibliography:! 32
5
Introduction:
Introduction to Fingerprints
These data describing the minutia provide the essential components of the template
computed from the enrollment and bid samples. Whereas police fingerprinting stores the
entire image, fingerprint scanning systems store only the template. An original image
cannot be constructed from its data template alone.
Physiology of Fingers
Extraction Process
Pore Extraction Technique
! The method used to extract the pores as fingerprint features is critical to the
matching routine. The poreʼs position, size, and shape are features that make it distinct
from other objects in an image. Techniques used for the fingerprint data capture can be
used to enhance the pore information. For example, high-resolution scanning and
manipulation of the gain and contrast camera controls can highlight the pores. The position
of the pore is determined by processing the gray-scale fingerprint image and trans-
forming it to a skeleton representation. By applying models and processing routines to the
skeleton of the fingerprint image, the pore locations can be extracted. Pores are
transformed into isolated and connected short lines in the skeleton image. Given this
information, the size of the pore can be determined by region-growing routines operating
on a binary version of the fingerprint image.
Scanning Resolution
! Some parameters become critical to the matching routine. For instance, the
resolution at which the fingerprints are scanned determines the accuracy of feature
location mea- surements. Inherently, there may be only one pore in a given 1x1 mm
section of print, and at 1000 pixels per inch (ppi), this section is represented by
approximately 40x40 (1600) pixels. In comparison, at a scanning resolution of 500 ppi, the
same segment is represented by 20x20 (400) pixels. Therefore, the probability of another
1 mm! segment of printʼs matching with respect to pore position is either 1/1600 or 1/400
depending on the scanning resolution. It can be seen that the FAR(False Accept Ratio) will
be reduced at a higher scanning resolution at the cost of an increased FRR (False Reject
Ratio).
8
can make: a missed detect and an incorrect (fals
pixels. Therefore, the probability of another 1 mm segment A missed detect occurs when a feature (pore or m
of print’s matching with respect to pore position is either discernible in an image yet is not picked up by the
1/1600 or 1/400 depending on the scanning resolution. It algorithm. A false detect occurs when the algori
can be seen that the FAR will be reduced at a higher takenly marks a feature when in fact no feature is
scanning resolution at the cost of an increased FRR. The degree of noise and degradation in the image i
the quantity of errors. The probability of incorrect
Feature or Search Area and missed detection are parameters on w
C. Feature or Search Area performance of the system depends. A high or
The scanning resolution issue can be made invariant tend to increase the FRR but have little effect on
! The scanning resolution
by defining an absoluteissue can
area to be be madewith
associated invariant
each by defining an absolute area
to be associated with each feature (a feature area orthesearch
feature (a feature area or search area). For instance, F. area). For instance, the
Match Score
location of a pore in the enrolled print segment may be
location of a pore in the
determined enrolledbutprint
to be in thesegment be determined to be matching
maylive-scan
corresponding
A particular (x,y) buttechnique
in the will produce
representing the fraction of features matching bet
correspondingsegment,
live-scan its location
segment, may its
be location
shifted some maydistance as some distance (as a result of
be shifted enrolled and live-scan prints. Fig. 6 provides an
a result of rotation, plasticity, or other distortion. For the
rotation, plasticity, orofother distortion. of matching basedsegments,
on either minutiae or pores
purpose matching these two For the purpose
segments, of matching
a search area these two a
segments from different fingers and also for two
search area , asas
seen in Fig.in5,Fig.
seen can 5, can be defined such that if
from the same finger. Generally, the number of
be defined such that if the feature is within , the features
the feature is within!,
match withtherespect
features within, match with respect todetected
to position. position.in theThe
two size
different
of prints,
is a and
different. Therefore, the matching routine must
parameter that The size of
influences is the
a parameter that influences
performance of the
theperfor-
systemtwo (decreasing produces
sets, or configurations, witha a different nu
mance of the system (decreasing produces a decreasing
decreasing FAR andincreasing
increasing FRR; increasing elements. For example,
produces an increasing FAR and a pore match score
FAR and FRR; increasing produces an increas-
defined as
decreasing FRR).
ing FAR and decreasing FRR). Practically, should be
large enough to account for effects such as plasticity of the
finger and deviations in feature position due to variations
! Practically,
in theshould be as
data, as well large
effectsenough to account
of the processing for effects
algorithms, such as plasticity of the
where
but not large enough for areas associated with distinct
finger and deviations in feature position due to variations in the data, as well as effects of
features to overlap. In a forensic comparison, plasticity
the processingand algorithms,
distortion ofbut
the not
fingerlarge enoughfor
are accounted forbyareas
humanassociated withtotal
distinct
numberfeatures
of pores in both segme
to overlap. In aprocessing,
forensicbut in an automated process, tolerances such
comparison, plasticity and distortion of the finger arenumber of pores that
accounted formatch
as must be incorporated to accommodate these inherent number of pores that do not match
by human processing,
variations. but in an automated process, tolerances such as must be
incorporated to accommodate these inherent variations. and using
D. Finger Plasticity
Finger Plasticity
The distance between two features can change signifi- The pore matching score can be rewritten a
cantly due to plasticity of the finger. This relative change
of position is generally not significant for nearby features
! The distance between
within small areas oftwo features
print. Therefore,can change
when signifi-
measuring the cantly due to plasticity of the
finger. This relative
positionchange of positionfeatures
of small high-density is generally not asignificant
such as pores, local A for nearby
match occurs features within
when a pore is detected in the co
origin should be established. A minutia point can be used image at an enrolled pore’s location. A mismatc
small areas of toprint. Therefore,
establish when measuring the position of small
a local origin. when a high-density features
detected pore from either image does not co
such as pores, a local origin should be established. A minutia point can be used to
RODDY AND STOSZ: FINGERPRINT FEATURES
establish a local origin.
Authorized licensed use limited to: Vivekanand Education Society's Inst of Tech. Downloaded on August 13, 2009 at 08:15 from IEEE Xplore. Restrictions apply.
Important Terms:
1. Attribute: a subfeature; the position, shape, and size are attributes of a pore.
4. Distribution (spatial): the way that a set of points is positioned in space or in an image.
5. dpi: refers to scanning resolution measured in dots (pix- els) per inch.
6. EER: equal error rate; the value at which the FAR and FRR are equal.
9
7. FAR: false accept error rate; fraction of attempts for which the system allows access to
an imposter or invalid user.
8. FRR: false reject error rate; fraction of attempts for which a fingerprint system denies
access to a valid user.
10. Feature area: search area; the area assigned to an individual feature in which no other
feature is assumed to exist. A small area of fingerprint surrounding the feature location
in which the featureʼs exact position is not important. Related to resolution and search
area.
11. Feature characteristic (subfeature): attributes of features such as shape, size, and
location for pores; type, orientation, and position for minutiae.
12. Feature configuration: a feature set for which the specific arrangement of the features
within the area occupied by the set is known.
13. Feature position or location: defined as the center of mass of a pore or the center of
the ridge at the point at which it ends (for end points) or branches (for bifurcations).
15. Homogeneous: uniformly spatially distributed; the density of pores is constant over the
entire area of print.
16. Identification: a scenario in which the identity of the user who presents a live-scan
image to the system is unknown. The system must determine who the unknown user is
from a database of valid users.
18. Latent: the fingerprint impression left on an objectʼs surface resulting from contact with
a finger.
19. Live Scan: an image of the fingerprint acquired using an electronic scanner for the
purpose of real-time fingerprint processing or matching. A live scan represents a
pressed finger as opposed to a rolled print.
20. Match (of a feature): a feature represented in the enrolled template (or fingerprint)
corresponds to a feature from the live-scan fingerprint.
10
21. Mismatch (of a feature): a feature represented in the enrolled template (or fingerprint)
does not correspond to a feature from the live-scan fingerprint, or a feature from the
live-scan print does not correspond to a feature in the enrolled template.
22. Minutia: a ridge structure that differs from the usual (normal) continuous and
nondiverging flow; examples are ridge branches (bifurcations) and ridge ends.
25. Performance: measure of FRR and FAR for a given system; match time and cost
should also be considered but are not addressed in this paper.
26. Pixel: can be used as a unit of length or area; mag- nitude is established by the
magnification of the input image and the dimensions of the image produced by the
frame-grabber.
27. Pore: opening of a sweat gland that is visible on the surface of the finger ridges.
28. ppi: refers to scanning resolution measured in pixels per inch of fingerprint.
29. Resolution Scanning: number of samples per unit length (or area) determined by the
degree of magnification of the fingerprint image on the charge-coupled device (CCD)
sensor.
30. Scanned Area: the area of fingerprint incident on the active area of the CCD sensor
device and represented in the fingerprint image.
31. Search Area: a small area in which a feature is searched for; designed to account for
detected feature position deviations due to noise, plasticity, distortion, or processing
variations. Increasing the search area is equivalent to reducing the scanning resolution,
reducing the accuracy of detection of the feature position.
33. Template: a set of data that is extracted from a fingerprint and then used to represent
that finger. Fingerprints are matched against templates or templates are matched
against templates.
MATLAB Simulation
Requirements
1. Matlab
2. Image Processing Toolbox
3. A sample fingerprint of 200x200 pixels
Preparations
1. Make a root folder where all the ʻ.mʼ files will be stored. This is the working Matlab
directory.
2. Make sure the resolution of the sample fingerprint is 200 x 200 pixels in bitmap color
mode.
3. Name the sample image as: Empreinte.bmp
4. The source fileʼs name will be ʻfingerprint.mʼ
Code
fingerprint.m
I=imread('Empreinte.bmp');
imshow(I)
set(gcf,'position',[1 1 600 600]);
J=I(:,:,1)>160;
imshow(J)
set(gcf,'position',[1 1 600 600]);
K=bwmorph(~J,'thin','inf');
imshow(~K)
set(gcf,'position',[1 1 600 600]);
fun=@minutie;
L = nlfilter(K,[3 3],fun);
12
(contd.) fingerprint.m
LTerm=(L==1);
imshow(LTerm)
LTermLab=bwlabel(LTerm);
propTerm=regionprops(LTermLab,'Centroid');
CentroidTerm=round(cat(1,propTerm(:).Centroid));
imshow(~K)
set(gcf,'position',[1 1 600 600]);
hold on
plot(CentroidTerm(:,1),CentroidTerm(:,2),'ro')
LBif=(L==3);
LBifLab=bwlabel(LBif);
propBif=regionprops(LBifLab,'Centroid','Image');
CentroidBif=round(cat(1,propBif(:).Centroid));
plot(CentroidBif(:,1),CentroidBif(:,2),'go')
D=6;
Distance=DistEuclidian(CentroidBif,CentroidTerm);
SpuriousMinutae=Distance<D;
[i,j]=find(SpuriousMinutae);
CentroidBif(i,:)=[];
CentroidTerm(j,:)=[];
Distance=DistEuclidian(CentroidBif);
SpuriousMinutae=Distance<D;
[i,j]=find(SpuriousMinutae);
CentroidBif(i,:)=[];
Distance=DistEuclidian(CentroidTerm);
SpuriousMinutae=Distance<D;
[i,j]=find(SpuriousMinutae);
CentroidTerm(i,:)=[];
hold off
imshow(~K)
hold on
plot(CentroidTerm(:,1),CentroidTerm(:,2),'ro')
plot(CentroidBif(:,1),CentroidBif(:,2),'go')
hold off
Kopen=imclose(K,strel('square',7));
KopenClean= imfill(Kopen,'holes');
KopenClean=bwareaopen(KopenClean,5);
imshow(KopenClean)
KopenClean([1 end],:)=0;
KopenClean(:,[1 end])=0;
ROI=imerode(KopenClean,strel('disk',10));
imshow(ROI)
13
(contd.) fingerprint.m
imshow(I)
hold on
imshow(ROI)
alpha(0.5)
hold on
plot(CentroidTerm(:,1),CentroidTerm(:,2),'ro')
plot(CentroidBif(:,1),CentroidBif(:,2),'go')
hold off
[m,n]=size(I(:,:,1));
indTerm=sub2ind([m,n],CentroidTerm(:,1),CentroidTerm(:,2));
Z=zeros(m,n);
Z(indTerm)=1;
ZTerm=Z.*ROI';
[CentroidTermX,CentroidTermY]=find(ZTerm);
indBif=sub2ind([m,n],CentroidBif(:,1),CentroidBif(:,2));
Z=zeros(m,n);
Z(indBif)=1;
ZBif=Z.*ROI';
[CentroidBifX,CentroidBifY]=find(ZBif);
imshow(I)
hold on
plot(CentroidTermX,CentroidTermY,'ro','linewidth',2)
plot(CentroidBifX,CentroidBifY,'go','linewidth',2)
for ind=1:length(CentroidTermX)
Klocal=K(CentroidTermY(ind)-2:CentroidTermY(ind)+2,CentroidTermX(ind)-2:CentroidTermX(ind)+2);
Klocal(2:end-1,2:end-1)=0;
[i,j]=find(Klocal);
OrientationTerm(ind,1)=Table(i,j);
end
dxTerm=sin(OrientationTerm)*5;
dyTerm=cos(OrientationTerm)*5;
figure
imshow(K)
set(gcf,'position',[1 1 600 600]);
hold on
plot(CentroidTermX,CentroidTermY,'ro','linewidth',2)
plot([CentroidTermX CentroidTermX+dyTerm]',...
[CentroidTermY CentroidTermY-dxTerm]','r','linewidth',2)
14
(contd.) fingerprint.m
for ind=1:length(CentroidBifX)
Klocal=K(CentroidBifY(ind)-2:CentroidBifY(ind)+2,CentroidBifX(ind)-2:CentroidBifX(ind)+2);
Klocal(2:end-1,2:end-1)=0;
[i,j]=find(Klocal);
if length(i)~=3
CentroidBifY(ind)=NaN;
CentroidBifX(ind)=NaN;
OrientationBif(ind)=NaN;
else
for k=1:3
OrientationBif(ind,k)=Table(i(k),j(k));
dxBif(ind,k)=sin(OrientationBif(ind,k))*5;
dyBif(ind,k)=cos(OrientationBif(ind,k))*5;
end
end
end
plot(CentroidBifX,CentroidBifY,'go','linewidth',2)
OrientationLinesX=[CentroidBifX CentroidBifX+dyBif(:,1);CentroidBifX CentroidBifX+dyBif(:,2);
CentroidBifX CentroidBifX+dyBif(:,3)]';
OrientationLinesY=[CentroidBifY CentroidBifY-dxBif(:,1);CentroidBifY CentroidBifY-dxBif(:,2);CentroidBifY
CentroidBifY-dxBif(:,3)]';
plot(OrientationLinesX,OrientationLinesY,'g','linewidth',2)
MinutiaTerm=[CentroidTermX,CentroidTermY,OrientationTerm];
MinutiaBif=[CentroidBifX,CentroidBifY,OrientationBif];
saveMinutia('John Doe',MinutiaTerm,MinutiaBif);
Functions
! The List of all the function calls have been listen in the appendix with their code.
Ensure to put all of them in the same directory as the ʻfingerprint.mʼ file.
Sample Fingerprint:
15
Stepwise Code Explanation
Load image
! The general shape of the fingerprint is generally used to pre-process the images,
and reduce the search in large databases. This uses the general directions of the lines of
the fingerprint, and the presence of the core and the delta. Several categories have been
defined in the Henry system: whorl, right loop, left loop, arch, and tented arch.
Most algorithms are using minutiae, the specific points like ridges ending, bifurcation...
Only the position and direction of these features are stored in the signature for further
comparison.
I=imread('Empreinte.bmp');
imshow(I)
set(gcf,'position',[1 1 600 600]);
Enhancement
In our case, the quality of the image is really good, and we won't need to enhance our
image.
16
Binarize
! We binarize the image. After the operation, ridges in the fingerprint are highlighted
with black color while furrow are white.
J=I(:,:,1)>160;
imshow(J)
set(gcf,'position',[1 1 600 600]);
17
Thining
Ridge thining is to eliminate the redundant pixels of ridges till the ridges are just one pixel
wide.
K=bwmorph(~J,'thin','inf');
imshow(~K)
set(gcf,'position',[1 1 600 600]);
Minutiae
We filter the thinned ridge map by the filter "minutie". "minutie" compute the number of
one-value of each 3x3 window: * if the central is 1 and has only 1 one-value neighbor, then
the central pixel is a termination. * if the central is 1 and has 3 one-value neighbor, then
the central pixel is a bifurcation. * if the central is 1 and has 2 one-value neighbor, then the
central pixel is a usual pixel.
fun=@minutie;
L = nlfilter(K,[3 3],fun);
18
Termination
LTerm=(L==1);
imshow(LTerm)
LTermLab=bwlabel(LTerm);
propTerm=regionprops(LTermLab,'Centroid');
CentroidTerm=round(cat(1,propTerm(:).Centroid));
imshow(~K)
set(gcf,'position',[1 1 600 600]);
hold on
plot(CentroidTerm(:,1),CentroidTerm(:,2),'ro')
19
Bifurcation
LBif=(L==3);
LBifLab=bwlabel(LBif);
propBif=regionprops(LBifLab,'Centroid','Image');
CentroidBif=round(cat(1,propBif(:).Centroid));
plot(CentroidBif(:,1),CentroidBif(:,2),'go')
Remarks
We have a lot of spurious minutae. We are going to process them. process 1: if the
distance between a termination and a biffurcation is smaller than D, we remove this
minutiae process 2: if the distance between two biffurcations is smaller than D, we remove
this minutia process 3: if the distance between two terminations is smaller than D, we
remove this minutia
D=6;
20
Process 1
Distance=DistEuclidian(CentroidBif,CentroidTerm);
SpuriousMinutae=Distance<D;
[i,j]=find(SpuriousMinutae);
CentroidBif(i,:)=[];
CentroidTerm(j,:)=[];
Process 2
Distance=DistEuclidian(CentroidBif);
SpuriousMinutae=Distance<D;
[i,j]=find(SpuriousMinutae);
CentroidBif(i,:)=[];
Process 3
Distance=DistEuclidian(CentroidTerm);
SpuriousMinutae=Distance<D;
[i,j]=find(SpuriousMinutae);
CentroidTerm(i,:)=[];
hold off
imshow(~K)
hold on
plot(CentroidTerm(:,1),CentroidTerm(:,2),'ro')
plot(CentroidBif(:,1),CentroidBif(:,2),'go')
hold off
21
ROI
We have to determine a ROI. For that, we consider the binary image, and we aply an
closing on this image and an erosion. With the GUI, I allow the use of ROI tools of
MATLAB, to define manually the ROI.
Kopen=imclose(K,strel('square',7));
KopenClean= imfill(Kopen,'holes');
KopenClean=bwareaopen(KopenClean,5);
imshow(KopenClean)
KopenClean([1 end],:)=0;
KopenClean(:,[1 end])=0;
ROI=imerode(KopenClean,strel('disk',10));
imshow(ROI)
22
Show ROI on Print:
imshow(I)
hold on
imshow(ROI)
alpha(0.5)
hold on
plot(CentroidTerm(:,1),CentroidTerm(:,2),'ro')
plot(CentroidBif(:,1),CentroidBif(:,2),'go')
hold off
23
Suppress extrema minutiae
Once we defined the ROI, we can suppress minutiae external to this ROI.
[m,n]=size(I(:,:,1));
indTerm=sub2ind([m,n],CentroidTerm(:,1),CentroidTerm(:,2));
Z=zeros(m,n);
Z(indTerm)=1;
ZTerm=Z.*ROI';
[CentroidTermX,CentroidTermY]=find(ZTerm);
indBif=sub2ind([m,n],CentroidBif(:,1),CentroidBif(:,2));
Z=zeros(m,n);
Z(indBif)=1;
ZBif=Z.*ROI';
[CentroidBifX,CentroidBifY]=find(ZBif);
imshow(I)
hold on
plot(CentroidTermX,CentroidTermY,'ro','linewidth',2)
plot(CentroidBifX,CentroidBifY,'go','linewidth',2)
24
Orientation
Once we determined the differents minutiae, we have to find the orientation of each one.
Termination Orientation
We have to find the orientation of the termination. For finding that, we analyze the position
of the pixel on the boundary of a 5 x 5 bounding box of the termination. We compare this
position to the Table variable. The Table variable gives the angle in radian.
for ind=1:length(CentroidTermX)
Klocal=K(CentroidTermY(ind)-2:CentroidTermY(ind)+2,CentroidTermX
(ind)-2:CentroidTermX(ind)+2);
Klocal(2:end-1,2:end-1)=0;
[i,j]=find(Klocal);
OrientationTerm(ind,1)=Table(i,j);
end
dxTerm=sin(OrientationTerm)*5;
dyTerm=cos(OrientationTerm)*5;
figure
imshow(K)
set(gcf,'position',[1 1 600 600]);
hold on
plot(CentroidTermX,CentroidTermY,'ro','linewidth',2)
plot([CentroidTermX CentroidTermX+dyTerm]',...
[CentroidTermY CentroidTermY-dxTerm]','r','linewidth',2)
25
Bifurcation Orientation
For each bifurcation, we have three lines. So we operate the same process than in
termination case three times.
for ind=1:length(CentroidBifX)
Klocal=K(CentroidBifY(ind)-2:CentroidBifY(ind)+2,CentroidBifX
(ind)-2:CentroidBifX(ind)+2);
Klocal(2:end-1,2:end-1)=0;
[i,j]=find(Klocal);
if length(i)~=3
CentroidBifY(ind)=NaN;
CentroidBifX(ind)=NaN;
OrientationBif(ind)=NaN;
else
for k=1:3
OrientationBif(ind,k)=Table(i(k),j(k));
dxBif(ind,k)=sin(OrientationBif(ind,k))*5;
dyBif(ind,k)=cos(OrientationBif(ind,k))*5;
end
end
end
plot(CentroidBifX,CentroidBifY,'go','linewidth',2)
OrientationLinesX=[CentroidBifX CentroidBifX+dyBif(:,1);CentroidBifX
CentroidBifX+dyBif(:,2);CentroidBifX CentroidBifX+dyBif(:,3)]';
OrientationLinesY=[CentroidBifY CentroidBifY-dxBif(:,1);CentroidBifY
CentroidBifY-dxBif(:,2);CentroidBifY CentroidBifY-dxBif(:,3)]';
plot(OrientationLinesX,OrientationLinesY,'g','linewidth',2)
26
Save in a text file
MinutiaTerm=[CentroidTermX,CentroidTermY,OrientationTerm];
MinutiaBif=[CentroidBifX,CentroidBifY,OrientationBif];
saveMinutia('John Doe',MinutiaTerm,MinutiaBif);
Results
The final feature extraced image is as shown below:
Storage
! The orientation of all the features viz. Terminations & Bifurcations are stored in text
file names as ʻJohn_Doe_(Date).txtʼ. The screenshot of the text file is given on the next
page.
27
Screenshot of the Saved File
28
Future Prospects:
! In the future, we hope to extend this project to Feature Validation. This could
provide us with a challenge to match two fingerprints. In succeeding of such event, we
would like to implement the same on Hardware and operate it in Real-time Scenarios.
! Since all the files are in ʻ.mʼ extension, they can be easily converted to ʻ.cʼ or ʻ.cppʼ
or ʻ.hexʼ files and then be burned on a micro-controller. This provides a real time
implementation of this system.
29
Appendix
Supplement Files
DistEuclidian.m
function D=DistEuclidian(dataset1,dataset2)
h = waitbar(0,'Distance Computation');
switch nargin
case 1
[m1,n1]=size(dataset1);
m2=m1;
D=zeros(m1,m2);
for i=1:m1
waitbar(i/m1)
for j=1:m2
if i==j
D(i,j)=NaN;
else
D(i,j)=sqrt((dataset1(i,1)-dataset1(j,1))^2+(dataset1(i,
2)-dataset1(j,2))^2);
end
end
end
case 2
[m1,n1]=size(dataset1);
[m2,n2]=size(dataset2);
D=zeros(m1,m2);
for i=1:m1
waitbar(i/m1)
for j=1:m2
D(i,j)=sqrt((dataset1(i,1)-dataset2(j,1))^2+(dataset1(i,2)-
dataset2(j,2))^2);
end
end
otherwise
error('only one or two input arguments')
end
close(h)
lissage.m
function y = lissage(x)
m=sum(x(:));
if m>3
y=1;
else
y=0;
end
30
minutie.m
function y=minutie(x)
i=ceil(size(x)/2);
if x(i,i)==0;
y=0;
else
y=sum(x(:)) - 1;
end
saveMinutia.m
function saveMinutia(name,MinutiaFin,MinutiaSep)
name=strrep(name,' ','_');
date=datestr(now,29);
FileName=[name '_' date '.txt'];
file=fopen(FileName,'wt');
fprintf(file,'%s
\n','-------------------------------------------------------------------');
fprintf(file,'%s \n',['Name: ' name]);
fprintf(file,'%s \n',['Date: ' date]);
fprintf(file,'%s','Number of Terminations: ');
fprintf(file,'%2.0f \n',size(MinutiaFin,1));
fprintf(file,'%s','Number of Bifurcations: ');
fprintf(file,'%2.0f \n',size(MinutiaSep,1));
fprintf(file,'%s
\n','-------------------------------------------------------------------');
fprintf(file,'%s
\n','-------------------------------------------------------------------');
fprintf(file,'%s \n','Terminations :');
fprintf(file,'%s
\n','-------------------------------------------------------------------');
fprintf(file,'%s \n','X Y Angle');
fprintf(file,'%3.0f \t %3.0f \t %3.2f \n',MinutiaFin');
fprintf(file,'%s
\n','-------------------------------------------------------------------');
fprintf(file,'%s \n','Bifurcations :');
fprintf(file,'%s
\n','-------------------------------------------------------------------');
fprintf(file,'%s \n','X Y Angle 1 Angle 2 Angle 3');
fprintf(file,'%3.0f \t %3.0f \t %3.2f \t \t %3.2f \t \t %3.2f
\n',MinutiaSep');
fclose(file);
31
Bibliography:
[1.] Huang D.S., Andréa Rowdy. “Fingerprint Analysis and Pattern Recognition”
[2.] Jain K. A. Ross and Jolene Ayer kenos Lama. “Biometric Template Security”
[3.] Miltonic D. D’Amico, A.K. Jain and Muhammad Kumara Khan. “Fingerprint
Analysis”
32