0% found this document useful (0 votes)
704 views

Report IX Final

The document describes a fingerprint attendance system project created using MATLAB. The project uses fingerprint extraction and matching techniques to scan, process, and match fingerprint images. Key steps in the MATLAB code include fingerprint image enhancement, binarization, thinning, minutiae extraction of ridge endings and bifurcations, orientation field estimation, and saving minutiae data to a text file. The project demonstrates basics of fingerprint processing and has potential for expansion into a full attendance management system.

Uploaded by

Danish Refai
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
704 views

Report IX Final

The document describes a fingerprint attendance system project created using MATLAB. The project uses fingerprint extraction and matching techniques to scan, process, and match fingerprint images. Key steps in the MATLAB code include fingerprint image enhancement, binarization, thinning, minutiae extraction of ridge endings and bifurcations, orientation field estimation, and saving minutiae data to a text file. The project demonstrates basics of fingerprint processing and has potential for expansion into a full attendance management system.

Uploaded by

Danish Refai
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 32

 

Fingerprint  
Attendance  
System
Using  MATLAB  Simulator

Danish  Refai
Siddharth  Upadhyay
Anurag  Choudhary

B.tech  –  EXTC  –  Trim  IX


MPSTME,  NMIMS  Shirpur  Campus
CertiGicate
 

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

Fingerprint  Attendance  System

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.

We  wish  them  a  great  success.

_______________________

Prof.  Shashikant  Patil

   (Project  Guide)

_______________________               _________________________

Prof  B.Shailendra                  Prof.  R.R.Sedamkar

           (H.O.D  EXTC)                      (Associate  Dean)

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   acknowledge   the   invaluable   assistance   from   the  


IEEE  Xplore  Section  who  have  provided  with  the  necessary  documents  and  technical  papers;.

    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

Feature or Search Area! 9

Finger Plasticity! 9

Important Terms:! 9

MATLAB Simulation! 12
Requirements! 12

Preparations! 12

Code! 12

Functions! 15

Stepwise Code Explanation! 16

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

Show ROI on Print:! 23

Suppress extrema minutiae! 24

Orientation! 25

Termination Orientation! 25

Bifurcation Orientation! 26

Save in a text file! 27

Results ! 27
Storage! 27

Screenshot of the Saved File! 28

For Attendance System:! 28

Future Prospects:! 29

Appendix! 30
Supplement Files! 30

Bibliography:! 32

5
Introduction:

! Modern digital technology has made it possible to manipulate multi-dimensional


signals with systems that range from simple digital circuits to advanced parallel computers.
The goal of this manipulation can be divided into three categories:

• Image Processing image in -> image out


• Image Analysis image in -> measurements out
• Image Understanding image in -> high-level description out

! In the project, we focus on the fundamental concepts of image processing


especially with fingerprint. Space does not permit us to make more than a few introductory
remarks about image analysis.

! An image defined in the "real world" is considered to be a function of two real


variables, for example, a(x,y) with a as the amplitude (e.g. brightness) of the image at the
real coordinate position (x,y).

! An image may be considered to contain sub- images sometimes referred to as


regions-of-interest, ROIs, or simply regions. This concept reflects the fact that images
frequently contain collections of objects each of which can be the basis for a region. In a
sophisticated image processing system it should be possible to apply specific image
processing operations to selected regions.

Introduction to Fingerprints

! Fingerprints have been used toFingerprint


Figure 1. secure with commercial
ridge patternstransactions since
Figure 2. Digital the days
Persona U.are.Uof
Pro Figure 3.
and minutia points—the tiny, unique fingerprint
ancient Babylon, where fingerprints have been found among the ruins on clay seals scanner. Fingerprint scanners scans an
characteristics of fingerprint ridges. can be attached to USB ports as an potentia
attached to business documents. Each fingerprint contains global features,
external which
peripheral or theycan be
can be identific
FINGERPRINTS embedded
seen with the naked eye, and local features, also called minutia points, the tiny, unique within devices. the iris h
Fingerprints have been used to with reg
characteristics of fingerprint ridges. Ridge patterns can be loops, arches, or whorls;
secure commercial transactions since police fingerprinting stores the entire
minutia types associated with athe ridge
dayspattern
of ancientinclude
Babylon, ridge endings,
where fin- image,bifurcations,
fingerprint scanning systems right. E
gerprints have been found among the store
divergences (ridges so small that they appear as dots or islands), and enclosures only the template. An original
(ridges of the
ruins on clay seals attached to business image cannot be constructed from its pupil d
that bifurcate and reunite around a ridgeless
documents. Eacharea).
fingerprint contains data template alone. affect a
global features, which can be seen with Fingerprint scanners such as the contact
the naked eye, and local features, also Digital Persona U.are.U Pro model
6 as long
called minutia points, the tiny, unique shown in Figure 2 are increasingly
characteristics of fingerprint ridges. As common. This unit has an advertised
Figure 1 shows, ridge patterns can be FAR of 0.01 percent and an FRR of io
! While two or more fingerprints can have the same global features, no known pair, at
least since the first criminal fingerprint identification was made in 1892, have the same
minutia. Fingerprint scanners detect ridge pat- terns and minutia and then characterize the
minutia based upon orientation (the direction the minutia are facing), spatial frequency
(how far apart the ridges are around a particular mark), curvature (rate of orientation
change), and position (X,Y location relative to some fixed point). There are about 60 to 70
minutia points on each finger, and even identical twins have different minutia points.

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

Fig. 1. Physiology of the skin.


(Physiology of Skin)

! The uniqueness of a configuration of pores depends on several factors, such as the


a mathematically derived matching scheme, and results member of Osterburg’s team, S. Sclove, published a paper
number of pores involved, their respective shapes
from measurements of real fingerprint images. The resulting
and sizes, the locations of these pores
presenting the occurrence of Galton features as a two-
withisrespect
model intended toto each
simulateother,
a real and so on.
matching These
system and factors all areMarkov
dimensional a function of morphology.
model [10]. Both of these models can
provide the ability to estimate error rates for a given set of be adapted to use pores instead of Galton features.
system parameters. Pores historically have been used to assist in forensic

Pores are formed where sweat glands in the
Inherent in developing this theoretical model, and es-
subcutaneous layer of the skin
matching. Although most matching methods have empha-
generate
pecially sweattheducts.
in gauging These
performance of sweat ductsde-
the internally grow through the subcutaneous
sized minutia comparisons and usedlayerpores
and as ancillary
dermis to the epidermis, where the open duct on the skinʼs surface presents itself prints
veloped system of the NSA, is exploring the efficacy of comparison features, the ability to match as a based on
using pores to match fingerprints. Automated matching pore information alone has been documented [1], [7], [13].
pore. According
techniques traditionallytohave
a 1973 study on skin-ridge
used configurations consist- formation,
The concept sweat glands
of using poresbegin to form
to match printsinhas
thebeen
fifth
ing month of gestation.
of medium-resolution The
features, sweat-gland
such ducts reach
as branch points thedormant
essentially surface of the
during epidermis
the rise in the
of automated fingerprint-
(bifurcations) and end points of epidermal ridges, but it is recognition systems.
sixth month, forming pores.
also possible to implement pores, which are high-resolution
features. The NSA internal system is one of only a few
III. PHYSIOLOGY
systems to date that utilizes pores as features to match
fingerprints. (For those interested in exploring this topic The uniqueness of a configuration of pores depends on
further, [16]–[35] are suggested reading.) several factors, such as the number of pores involved, their
respective shapes and sizes, the locations of these pores 7
with respect to each other, and so on. These factors all
II. HISTORY are a function of morphology. Thus, it would be helpful
Branch and end points of epidermal ridges were used to discuss briefly the genesis and formation of fingerprints
! The epidermal ridges are not formed until after the sixth month; then, the pattern
that has been forming in the glandular fold region is transferred to the epidermis. Hirsch
and Schweichel concluded that several forces affect the epidermal pattern formation. One
of these forces is the stabilization that occurs “when sweat gland secretion ducts open on
to the surface, at regular intervals, in the papillary ridges.” These openings of the ducts on
the surface are the pores, and the regularity of their appearance plays a significant part in
the uniqueness of pore configurations. Once these pores form on the ridge, they are fixed
at that location. Considerable research has shown that pores do not disappear, move, or
spontaneously generate over time.

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.

2. Authentication: confirmation of proper identity.

3. Distribution (probability): the pdf of a random variable.

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.

9. Feature: a characteristic; pores and minutia points are fingerprint features.

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

14. Feature Set:(a,b,c....); a group of features associated with a specified area of


fingerprint.

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.

17. Isotropic: having the same properties independent of direction or orientation.

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.

23. M x N pixels: an area of fingerprint M pixels in width and N pixels in height.

24. Measurement Accuracy: the accuracy of determined locations of features; higher


resolution allows more precise estimation of an actual featureʼs position, shape, and
size.

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.

32. Sub-feature: an attribute of a fingerprint feature.

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.

34. Uniqueness: key to FAR; probability of occurrence of a configuration of features.


11
35. Verification: a scenario in which a user claims an identity (enters a personal
identification number) and the system then authenticates the userʼs claim by matching
his live- scan print against the template corresponding to his claimed identity.

MATLAB Simulation

Requirements

! In order to perform a Matlab simulation, we need the following:

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

clear all,close all,clc

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)

Table=[3*pi/4 2*pi/3 pi/2 pi/3 pi/4


5*pi/6 0 0 0 pi/6
pi 0 0 0 0
-5*pi/6 0 0 0 -pi/6
-3*pi/4 -2*pi/3 -pi/2 -pi/3 -pi/4];

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

! A critical step in automatic fingerprint matching is to automatically and reliably


extract minutiae from the input fingerprint images. However, the performance of a minutiae
extraction algorithm relies heavily on the quality of the input fingerprint images. In order to
ensure that the performance of an automatic fingerprint identification/verification system
would be robust with respect to the quality of the fingerprint images, it would be essential
to incorporate a fingerprint enhancement algorithm in the minutiae extraction module.

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.

Table=[3*pi/4 2*pi/3 pi/2 pi/3 pi/4


5*pi/6 0 0 0 pi/6
pi 0 0 0 0
-5*pi/6 0 0 0 -pi/6
-3*pi/4 -2*pi/3 -pi/2 -pi/3 -pi/4];

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

In this step, we are going to save the minutia in a file

MinutiaTerm=[CentroidTermX,CentroidTermY,OrientationTerm];
MinutiaBif=[CentroidBifX,CentroidBifY,OrientationBif];
saveMinutia('John Doe',MinutiaTerm,MinutiaBif);

Results
The final feature extraced image is as shown below:

(Fig. Extracted Images)

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

For Attendance System:


! Since the saved file contain all the information of the features. Each individuals can
store their fingerprints on a server database, which later can be used to validate and mark
attendances. The hardware implementation is reserved for future.

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

! These files are to be put in the same root as ʻfingerprint.mʼ

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”

[4.] Gourav Aggarwal, Embedded Solutions. “Authentication phase”

[5.] R.K. Rowe, “A Multi-modal Authentication for Fingerprint Spoof Detection”

[6.] A.K. Jain and A. Ross “A Multi modal Authentication Scheme”

[7.] Mathwork’s Image Processing Toolbox

32

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy