Finger Print PDF
Finger Print PDF
Finger Print PDF
Project Report
on
“FiNger-Print Recognition By
MiNutiae extractiON usiNg MatLab”
SUBMITTED IN PARTIAL FULFILLMENT OF THE REQUIREMENTS FOR THE AWARD
OF
THE DEGREE OF
BACHELOR OF TECHNOLOGY
IN
Submitted by:-
AWIK (ET)
SUPERVISED BY
Mr ESHAAN VERMA
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
CONTENTS
Cover Page……………………………………………………………………… 1
Student’s Declaration………………………………………………………….. 2
Certificate………………………………………………………………………. 3
Acknowledgement……………………………………………………………... 4
Abstract………………………………………………………………………… 5
Introduction to MATLAB...…………………………………………………….. 9
Introduction………………………………………………... 9
History………………………………………………………. 10
Components………………………………………………… 10
Graphics…………………………………………………….. 12
Interfacing………………………………………………….. 13
License……………………………………………………… 13
Alternatives………………………………………………… 14
File Extension………………………………………………. 14
Working Environments……………………………………. 15
Command Window…………………….. 16
Editor Window…………………………. 17
Guide……………………………………. 18
Developmental Tools……………………………………….. 19
Image Processing………………………………………………………………. 20
Image Processing…………………………………………… 20
Purpose………………………………… 20
Fundamentals…………………………. . 21
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
Bio-metric
verification…………………………………………………. 33
Minutiae………………………………………………….. 34
The Code ……………………………………………………………………………...
42
Conclusion……………………………………………………………………….. 61
Reference………………………………………………………………………… 62
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
STUDENT’S DECLARATION
We hereby declare that the work, which is being represented in this thesis, titled
“Finger-Print Recognition by Minutiae Extraction using MatLab” in the
fulfilment of the requirement of the degree of Bachelor of Technology in
Electrical and Electronics Engineering, and Electronics and Telecommunication
Engineering, submitted to “CETPA INFOTECH PRIVATE LIMITED” is an authentic
record of our own work carried out under the supervision of Mr. Eshaan Verma.
The work contained in this thesis has not been submitted to any other Institute
for the award of any other degree.
Shashank Kumar (EEE)
Awik (ET)
Vikrant Negi(ET)
This is to certify that the above statement made by the student(s) is correct to the best of my
knowledge.
Signature of Supervisor(s)
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
ACKNOWLEDGEMENT
innovation. Words cannot express our guidance for all those people who
calls for cooperation and guidance from seniors and colleagues. This was
We would like to thank all the lab assistants who were ready to extend
not complete without thanking our colleagues for their lively discussions
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
ABSTRACT
Human fingerprints are rich in details called minutiae, which can be used as
different people.
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
INTRODUCTION TO MATLAB
INTRODUCTION
MATLAB (matrix laboratory) is a numerical computing environment and fourth-
generation programming language. Developed by MathWorks, MATLAB
allows matrix manipulations, plotting of functions and data, implementation
of algorithms, creation of user interfaces, and interfacing with programs written in
other languages, including C, C++, Java, and Fortran.
Although MATLAB is intended primarily for numerical computing, an optional
toolbox uses the MuPAD symbolic engine, allowing access to symbolic
computing capabilities. An additional package, Simulink, adds graphical multi-
domain simulation and Model-Based Design for dynamic and embedded systems.
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
History
Cleve Moler, the chairman of the computer-science department at the University
of New Mexico, started developing MATLAB in the late 1970s. He designed it to
give his students access to LINPACK and EISPACK without them having to
learn FORTRAN. It soon spread to other universities and found a strong audience
within the applied mathematics community. Jack Little, an engineer, was exposed
to it during a visit Moler made to Stanford University in 1983. Recognizing its
commercial potential, he joined with Moler and Steve Bangert. They rewrote
MATLAB in C and founded MathWorks in 1984 to continue its development. These
rewritten libraries were known as JACKPAC. In 2000, MATLAB was rewritten to
use a newer set of libraries for matrix manipulation, LAPACK.
COMPONENTS
Syntax
The MATLAB application is built around the MATLAB language, and most use of
MATLAB involves typing MATLAB code into the Command Window (as an
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
Variables
Variables are defined using the assignment operator, =. MATLAB is
a weekly dynamically typed programming language. It is a weekly typed language
because types are implicitly converted. It is a dynamically typed language because
variables can be assigned without declaring their type, except if they are to be
treated as symbolic objects, and that their type can change. Values can come
from constants, from computation involving values of other variables, or from the
output of a function. For example:
y=
104 97 116
>> x = [3*4, pi/2]
x=
12.0000 1.5708
>> y = 3*sin(x)
y=
-1.6097 3.0000
Vectors/matrices
As suggested by its name (a contraction of "Matrix Laboratory"), MATLAB can
create and manipulate arrays of 1 (vectors), 2 (matrices), or more dimensions. In
the MATLAB vernacular, a vector refers to a one dimensional (1×N or N×1) matrix,
commonly referred to as an array in other programming languages.
A matrix generally refers to a 2-dimensional array, i.e. an m×n array
where m and n are greater than 1. Arrays with more than two dimensions are
referred to as multidimensional arrays. Arrays are a fundamental type and many
standard functions natively support array operations allowing work on arrays
without explicit loops. Therefore the MATLAB language is also an example
of array programming language.
A simple array is defined using the syntax: init:increment:terminator. For instance:
>> array = 1:2:9
array =
13579
Defines a variable named array (or assigns a new value to an existing variable with
the name array) which is an array consisting of the values 1, 3, 5, 7, and 9. That is,
the array starts at 1 (the initvalue), increments with each step from the previous
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
value by 2 (the increment value), and stops once it reaches (or to avoid exceeding)
9 (the terminator value).
Semicolons
Unlike many other languages, where the semicolon is used to terminate
commands, in MATLAB the semicolon serves to suppress the output of the line
that it concludes. Commands that have return values would be:
numbers/vectors/matrices and various mathematical functions executed with
these (addition, multiplication etc.), strings and strings functions etc. Each
number/vector/matrix/string/function with a return value, if it appears in a line not
terminated by a semicolon, will have its value displayed on the screen once the
line is interpreted. Some Matlab commands (such as the graphical "plot"
command), however, will not have any return value associated with them, in
which case the semicolon is redundant in that sense.
However, a semicolon, as it symbolizes the end of a command, can allow another
command to be listed in the same line. That will hardly be used at all in a Matlab
program file (i.e., a Matlab file with extension ".m") which typically groups several
commands, each in a separate line - for better "readability"; but it could be handy
when typing commands in the command line prompt window in the desktop,
whereby each line is interpreted and executed immediately after the pressing of
the enter key (and therefore the semicolon allows to type a command and not
execute it before typing another one).
Structures
MATLAB supports structure data types. Since all variables in MATLAB are arrays, a
more adequate name is "structure array", where each element of the array has
the same field names. In addition, MATLAB supports dynamic field names (field
look-ups by name, field manipulations etc.). Unfortunately, MATLAB JIT does not
support MATLAB structures, therefore just a simple bundling of various variables
into a structure will come at a cost.[citation needed]
Secondary programming
MATLAB also carries secondary programming which incorporates the MATLAB
standard code into a more user friendly way to represent a function or system.
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
x = 0:pi/100:2*pi;
y = sin(x);
plot(x,y)
produces the following figure of the sine function:
License
MATLAB is a proprietary product of MathWorks, so users are subject to vendor
lock-in. Although MATLAB Builder can deploy MATLAB functions as library files
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
which can be used with .NET or JAVA application building environment, future
development will still be tied to the MATLAB language.
Each toolbox is purchased separately. If an evaluation license is requested, the
MathWorks sales department requires detailed information about the project for
which MATLAB is to be evaluated. Overall the process of acquiring a license is
expensive in terms of money and time. If at all granted (which happens often), the
evaluation license is valid for two to four weeks. A student version of MATLAB is
also available.
Alternatives
MATLAB has a number of competitors. Commercial competitors
include Mathematica, Maple, IDL by ITT Visual Information Solutions and Metlynx.
There are also free open source alternatives to MATLAB, in particular GNU
Octave, FreeMat, and Scilab which are intended to be mostly compatible with the
MATLAB language (but not the MATLAB desktop environment).
Among other languages that treat arrays as basic entities (array programming
languages) are APL and J, Fortran 95 and 2003, as well as the statistical
language S (the main implementations of S areS-PLUS and the popular open
source language R).
There are also several libraries to add similar functionality to existing languages,
such as IT++ for C++, Perl Data
Language for Perl, ScalaLab for Scala and SciPy together
with NumPy and Matplotlibfor Python.
File Extensions
Native
.fig
MATLAB Figure
.m
MATLAB function, script, or class
.mat
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
Third-party
.jkt
GPU Cache file generated by Jacket for MATLAB (AccelerEyes)
.mum
MATLAB CAPE-OPEN Unit Operation Model File (AmsterCHEM
WORKING ENVIRONMENTS
The MATLAB language supports the vector and matrix operations that are
fundamental to engineering and scientific problems.
2. Editor Window: For creating and saving files for future use. It saves files with
“.m” extension
3. GUI: Graphical User Interface for making user friendly softwares. It also
provides deployment tool.
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
COMMAND WINDOW
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
EDITOR WINDOW
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
GUIDE
DEVELOPMENTAL TOOLS
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
*MATLAB Profiler - Records the time spent executing each line of code
*Directory Reports - Scan all the files in a directory and report on code
efficiency, file differences, file dependencies, and code coverage
IMAGE PROCESSING
What is an image?
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
An image refers to a 2D light intensity function f(x,y), where (x,y) denote spatial
coordinates and the value of f at any point (x,y) is proportional to the brightness or
gray levels of the image at that point. A digital image is an image f(x,y) that has been
discretized both in spatial coordinates and brightness. The elements of such a digital
Image processing
physical image. The image signal can be either digital or analog. The actual output
produce a physical picture, the image is processed using the appropriate technology
digital image processing has many advantages over analog image processing.
measurement.
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
2. Image preprocessing: to improve the image in ways that increase the chances for
objects.
4. Image representation: to convert the input data to a form suitable for computer
processing.
of interest or features that are basic for differentiating one class of objects from
another.
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
GUIs (also known as graphical user interfaces or UIs) provide point-and-click control of
software applications, eliminating the need to learn a language or type commands in order to
run the application.
MATLAB apps are self-contained MATLAB programs with GUI front ends that automate a
task or calculation. The GUI typically contains controls such as menus, toolbars, buttons, and
sliders. Many MATLAB products, such as Curve Fitting Toolbox, Signal Processing
Toolbox, and Control System Toolbox, include apps with custom user interfaces. You can
also create your own custom apps, including their corresponding UIs, for others to use.
GUIDE (GUI development environment) provides tools for designing user interfaces for
custom apps. Using the GUIDE Layout Editor, you can graphically design your UI. GUIDE
then automatically generates the MATLAB code for constructing the UI, which you can
modify to program the behavior of your app.
For more control over design and development, you can also create MATLAB code that
defines all component properties and behaviors. MATLAB contains built-in functionality to
help you create the GUI for your app programmatically. You can add dialog boxes, user
interface controls (such as push buttons and sliders), and containers (such as panels and
button groups).
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
Software Reference
MATLAB
This example shows how to build user GUI in Matlab. We will build a simple calculator to do that.
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
windows.
Double-click on an object to open the properties dialog. Change the captions on the buttons and remove
"Static Text" string from the text window. Set the font size 30 for the text windows and change
horizontal alingment to "right."
OBJECTS
Push button
Slider
Radio button
Check box
Edit text
Static text
Pop up menu
List box
Toggle button
Table
Axes
Panel
Button group
ActiveX control
Select
3.Object achievement
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
Push Buttons
Push buttons generate an action when pressed (e.g., an OK button may close a
dialog box and apply settings). When you click down on a push button, it
appears depressed; when you release the mouse, the button's appearance
returns to its nondepressed state; and its callback executes on the button up
event.
Properties to Set
*String - set this property to the character string you want displayed on the push button.
*Tag- GUIDE uses theTag property to name the callback subfunction in the application M-file. Set Tag
to a descriptive name (e.g., close_button ) before activating the GUI.
When the user clicks on the push button, its callback executes. Push buttons
Sliders
Sliders accept numeric input within a specific range by enabling the user to move a sliding bar. Users
move the bar by pressing the mouse button and dragging the slide, by clicking in the trough, or by
clicking an arrow. The location of the bar indicates a numeric value.
Frames
Frames are boxes that enclose regions of a figure window. Frames can make a user interface easier to
understand by visually grouping related controls. Frames have no callback routines associated with them
and only uicontrols can appear within frames (axes cannot).
List Boxes
List boxes display a list of items and enable users to select one or more items. The String property
contains the list of strings displayed in the list box. The first item in the list has an index of 1. The Value
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
property contains the index into the list of strings that correspond to the selected item. If the user selects
multiple items, then Values a vector of indices. By default, the first item in the list is highlighted when
the list box is first displayed. If you do not want any item highlighted, then set the Value property to
empty, [].
The ListboxTop property defines which string in the list displays as the top most item when the list box
is not large enough to display all list entries. ListboxTop is an index into the array of strings defined by
the String property and must have a value between 1 and the number of strings. Noninteger values are
fixed to the next lowest integer.
Popup Menus
Popup menus open to display a list of choices when users press the arrow. The String property contains
the list of string displayed in the popup menu. The Value property contains the index into the list of
strings that correspond to the selected item.
When not open, a popup menu displays the current choice, which is determined by the index contained in
the Value property. The first item in the list has an index of 1. Popup menus are useful when you want to
provide users with a number of mutually exclusive choices, but do not want to take up the amount of
space that a series of radio buttons requires.
Toggle Buttons
Toggle buttons generate an action and indicate a binary state (e.g., on or off). When you click on a toggle
button, it appears depressed and remains depressed when you release the mouse button, at which point
the callback executes. A subsequent mouse click returns the toggle button to the nondepressed state and
again executes its callback.
The callback routine needs to query the toggle button to determine what state it is in. MATLAB sets the
Value property equal to the Max property when the toggle button is depressed ( Max is 1 by default) and
equal to the Min property when the toggle button is not depressed ( Min is 0 by default).
.slider
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
You can determine the current value of a slider from within its callback by querying its Value
property, as illustrated in the following example:
The Max and Min properties specify the slider's maximum and minimum values. The slider's range is
Max - Min.
Radio Buttons
Radio buttons are similar to checkboxes, but are intended to be mutually exclusive within a group of
related radio buttons (i.e., only one button is in a selected state at any given time). To activate a radio
button, click the mouse button on the object. The display indicates the state of the button.
You can determine the current state of a radio button from within its Callback callback by querying the
state of its Value property. If the radio button is selected, its Value property is equal to its Max property.
If the radio button is not selected, it is equal to its Min property. This example illustrates such a test.
You can also change the state of a radio button programmatically by setting the radio button Value
property to the value of the Max or Min property. This example illustrates a possible syntax for such an
assignment.
set(handles.radiobutton1,'Value','Max')
.Check Box
You can determine the current state of a check box from within its callback by querying the state of its
Value property. The Value property is equal to the Max property when the check box is checked and
equal to the Min property when the check box is not checked. This example illustrates such a test.
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
Else
% Checkbox is not checked-take approriate action
end
You can also change the state of a check box programmatically by setting the check box Value property
to the value of the Max or Min property. This example illustrates a possible syntax for such an
assignment.
maxVal = get(handles.checkbox1,'Max');
set(handles.checkbox1,'Value',maxVal);
puts the check box with Tag property checkbox1 in the checked state.
Back to Top
selects the radio button with Tag property radiobutton1 and deselects the previously selected radio
button.
Note You can use a button group to manage exclusive selection behavior for radio buttons.
See Button Group for more information.
.List Box
When the list box Callback callback is triggered, the list box Value property contains the index of the
selected item, where 1 corresponds to the first item in the list. The String property contains the list as a
cell array of strings.
This example retrieves the selected string. It assumes listbox1 is the value of the Tag property. Note that
it is necessary to convert the value returned from the String property from a cell array to a string.
You can also select a list item programmatically by setting the list box Value property to the index of the
desired item. For example,
set(handles.listbox1,'Value',2)
selects the second item in the list box with Tag property listbox1.
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
MATLAB software executes the list box's Callback callback after the mouse button is released or after
certain key press events:
The arrow keys change the Value property, trigger callback execution, and set the figure
SelectionType property to normal.
The Enter key and space bar do not change the Value property but trigger callback execution and
set the figure SelectionType property to open.
If the user double-clicks, the callback executes after each click. The software sets the figure
SelectionType property to normal on the first click and to open on the second click. The callback can
query the figure SelectionType property to determine if it was a single or double click.
See the following examples for more information on using list boxes:
List Box Directory Reader — Shows how to creates a GUI that displays the contents of
directories in a list box and enables users to open a variety of file types by double-clicking the
filename.
Accessing Workspace Variables from a List Box — Shows how to access variables in the
MATLAB base workspace from a list box GUI.
Edit Text
Edit text controls are fields that enable users to enter or modify text strings. Use edit text when you
want text as input. The String property contains the text entered by the user. To obtain the string typed by
the user, get the String property in the callback.
Static Text
Static text controls displays lines of text. Static text is typically used to label other controls, provide
directions to the user, or indicate values associated with a slider. Users cannot change static text
interactively and there is no way to invoke the callback routine associated with it.
Toggle button
Table
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
Convert rectangular cell array into table and insert it into report
Description
This component converts a rectangular cell array into a table and inserts the table into the report.
Table Content
Workspace variable name: Specifies the workspace variable name with which to construct the
table.
Collapse large cells to a single description: Consolidates large cells into one description.
.Axes Properties
Modifying Properties
You can set and query graphics object properties in two ways:
The Property Editor is an interactive tool that enables you to see and change object property
values.
The set and get commands let you set and query the values of properties.
Panel
Panels group GUI components and can make a GUI easier to understand by
visually grouping related controls. A panel can contain panels and button
groups as well as axes and user interface controls such as push buttons,
sliders, pop-up menus, etc. The position of each component within a panel is
interpreted relative to the lower-left corner of the panel.
Generally, if the GUI is resized, the panel and its components are also
resized. However, you can control the size and position of the panel and its
components. You can do this by setting the GUI Resize behavior to Other
(Use ResizeFcn) and providing a ResizeFcn callback for the panel.
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
Even when Resize behavior for the figure is Other (Use ResizeFcn), if
components use normalized Units, they still automatically resize
proportionally unless a ResizeFcn overrides that behavior. The following
example shows how you can use a ResizeFcn to do more than that. The GUI
repositions components automatically. Its panel's ResizeFcn proportionally
adjusts the fontSize of a button's label.
Button Group
Button groups are like panels except that they manage exclusive selection
behavior for radio buttons and toggle buttons. If a button group contains a
set of radio buttons, toggle buttons, or both, the button group allows only
one of them to be selected. When a user clicks a button, that button is
selected and all others are deselected.
When programming a button group, you do not code callbacks for the
individual buttons; instead, use its SelectionChangeFcn callback to manage
responses to selections. The following example, Programming a Button
Group, illustrates how you use uibuttongroup event data to do this.
The following figure shows a button group with two radio buttons and two
toggle buttons. Radio Button 1 is selected.
If a user clicks the other radio button or one of the toggle buttons, it
becomes selected and Radio Button 1 is deselected. The following figure
shows the result of clicking Toggle Button 2.
If you have a button group that contains a set of radio buttons and toggle
buttons and you want:
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
ActiveX Controls
GUIDE now enables you to insert an ActiveX control into your GUI if you are
running MATLAB on Microsoft Windows. When you drag an ActiveX
component from the component palette into the layout area, GUIDE displays
a dialog in which you can select any registered ActiveX control on your
system. When you select an ActiveX control and click Create, the control
appears as a small box in the Layout Editor. You can then program the
control to do what you want it to.
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
PROJECT INTRODUCTION
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
1.2 Biometrics
In the world of computer security, biometrics refers to authentication
techniques that rely on measurable physiological and individual characteristics
that can be automatically verified. In other words, we all have unique personal
attributes that can be used for distinctive identification purposes, including a
fingerprint, the pattern of a retina, and voice characteristics. Strong or two-
factor authentication—identifying oneself by two of the three methods of
something you know (for example, a password), have (for example, a swipe
card), or is (for example, a fingerprint)—is becoming more of a genuine
standard in secure computing environments. Some personal computers today
can include a fingerprint scanner where you place your index finger to provide
authentication. The computer analyzes your fingerprint to determine who you
are and, based on your identity followed by a pass code or pass phrase, allows
you different levels of access. Access levels can include the ability to open
sensitive files, to use credit card information to make electronic purchases, and
so on.
1.3 Biometrics Authentication Techniques
A biometric authentication is essentially a pattern-recognition that makes a
personal identification by determining the authenticity of a specific
physiological or behavioral characteristic possessed by the user. An important
issue is designing a practical approach to determine how an individual is
identified. An authentication can be divided into two modules:
a.) Enrollment module
b.) Identification or Verification module
1.4 How Biometric Technologies Work
The enrollment module is responsible for enrolling individuals into the
biometric system. During the enrollment phase, the biometric characteristic of
an individual is first scanned by a biometric reader to produce a raw digital
representation of the characteristic. In order to 9
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
Speaker Recognition
Fingerprint Recognition
Fingerprint recognition is one of the best known and most widely used
biometric technologies. Automated systems have been commercially available
since the early 1970s, and at the time of our study, we found there were more
than 75 fingerprint recognition technology companies. Until recently,
fingerprint recognition was used primarily in law enforcement applications.
Fingerprint recognition technology extracts features from impressions made by
the distinct ridges on the fingertips. The fingerprints can be either flat or rolled.
A flat print captures only an impression of the central area between the
fingertip and the first knuckle; a rolled print captures ridges on both sides of
the finger.
An image of the fingerprint is captured by a scanner, enhanced, and converted
into a template. Scanner technologies can be optical, silicon, or ultrasound
technologies. Ultrasound, while potentially the most accurate, has not been
demonstrated in widespread use. In 2002, we found that optical scanners were
the most commonly used. During enhancement, “noise” caused by such things
as dirt, cuts, scars, and creases or dry, wet or worn fingerprints is reduced, and
the definition of the ridges is enhanced. Approximately 80 percent of vendors
base their algorithms on the extraction of minutiae points relating to breaks in
the ridges of the fingertips. Other algorithms are based on extracting ridge
patterns.
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
A ridge ending is defined as the point where the ridge ends abruptly and the
ridge bifurcation is the point where the ridge splits into two or more branches.
Automatic minutiae detection becomes a difficult task in low quality
fingerprint images where noise and contrast deficiency result in pixel
configurations similar to that of minutiae. This is an important aspect that has
been taken into consideration in this presentation for extraction of the
minutiae with a minimum error in a particular location.
A complete minutiae extraction scheme for automatic fingerprint recognition
systems is presented. The proposed method uses improving alternatives for
the image enhancement process, leading consequently to an increase of the
reliability in the minutiae extraction task.
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
The Code
Load image
I=imread('Empreinte.bmp');
imshow(I)
set(gcf,'position',[1 1 600 600]);
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
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]);
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
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]);
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
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);
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')
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
Bifurcation
LBif=(L==3);
LBifLab=bwlabel(LBif);
propBif=regionprops(LBifLab,'Centroid','Image');
CentroidBif=round(cat(1,propBif(:).Centroid));
plot(CentroidBif(:,1),CentroidBif(:,2),'go')
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
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;
Process 1
Distance=DistEuclidian(CentroidBif,CentroidTerm);
SpuriousMinutae=Distance<D;
[i,j]=find(SpuriousMinutae);
CentroidBif(i,:)=[];
CentroidTerm(j,:)=[];
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
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
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
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.
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)
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
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
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
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)
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
Orientation
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
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
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)
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
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)
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
Matching Algorithm
We devised an algorithm to match the X and Y co-ordinates of both the Termination points
as well as the bifurcations. We also match their orientations to ensure a perfect match if
found. On discovery of a proper match, the match count is raised by one and at the end of
the matching, the total number of matches is divided by the total number of samples
matched. The final computed percentage is then displayed in the editBox.
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
FUTURE ADVANCEMENTS
1) Design of a database for the successive matches of any entered
sample from the images in the already existent database.
2) Design of algorithms for searches on the basis of type and
structures of the fingerprints, for faster matches.
3) More and better image enhancement through the use of more
powerful filters and transforms for more accurate matching results
and for the elimination of inherent error in the system.
4) Better matching algorithms based on other features than minutiae.
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
CONCLUSION
The aim of the project is to make user friendly software with advancements on
existing technology and help professionals get a better view of images. The
option to develop a database based on saving the set of data in a database is open
to the users for further enhancement.
It is a cost effective and time saving software with several sublime features and
seeks several future enhancements.
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
REFERENCE
Mathsworks.com
Wikipedia
CETPA Infotech Pvt. Ltd.
MATLAB product help
Matlab Oxford Publications
Digital Image Processing,Gozales
July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB
July,2013
(Month and year of submission)