You are on page 1of 63

FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB

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

ELECTRICAL AND ELECTRONICS ENGINEERING

ELECTRONICS AND TELECOMMUNICATION ENGINEERING

Submitted by:-

SHASHANK KUMAR (EEE)

SANDEEP SAURAV (ET)

AWIK (ET)

PARIJAT PRASUN (EEE)

SOURAV KUMAR (ET)

VIKRANT NEGI (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

GUI – Graphical User Interface…………………………………………………. 25


 UI Control Elements………………………………………..... 25
 Basics………………………………………………………... 26
 Examples……………………………………………………. 26
Introduction to Project………………………………………………….... 33

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)

Sandeep Saurav (ET)

Awik (ET)

Parijat Prasun (EEE)

Sourav Kumar (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

Date: Name & Designation

Date: Name & Designation

July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB

ACKNOWLEDGEMENT

For success, it requires diligence, perseverance, inspiration, motivation and

innovation. Words cannot express our guidance for all those people who

helped us directly or indirectly in our endeavour. Success in any endeavour

calls for cooperation and guidance from seniors and colleagues. This was

amply brought out to us while working with this project.

We would like to place on record my deep sense of gratitude to Mr Eshaan


Verma of CetpaInfotech Private Limited, Noida , India for his generous
guidance, help and useful suggestions.

We express our sincere gratitude to him for his stimulating guidance,


continuous encouragement and supervision throughout the course of present
work.

We are extremely thankful to CETPA INFOTECH PRIVATE LIMITED for


providing us infrastructural facilities to work in, without which this work
would not have been possible.

We would like to thank all the lab assistants who were ready to extend

their helping hands at all times. This acknowledgement would really be

not complete without thanking our colleagues for their lively discussions

and feedback at various stages of the project.

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

identification marks for fingerprint verification. The goal of this project is to

develop a complete system for fingerprint verification through extracting

and matching minutiae. To achieve good minutiae extraction in fingerprints

with varying quality, preprocessing in form of image enhancement and

binarization is first applied on fingerprints before they are evaluated. Many

methods have been combined to build a minutia extractor and a minutia

matcher. Minutia-marking with false minutiae removal methods are used in

the work. An alignment-based elastic matching algorithm has been

developed for minutia matching. This algorithm is capable of finding the

correspondences between input minutia pattern and the stored template

minutia pattern without resorting to exhaustive search. Performance of the

developed system is then evaluated on a database with fingerprints from

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

interactive mathematical shell), or executing text files containing MATLAB code


and functions.

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.

Graphics and graphical user interface programming


MATLAB supports developing applications with graphical user interface features.
It also has tightly-integrated graph-plotting features. For example the
function plot can be used to produce a graph from two vectors x and y. The code:

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:

Three-dimensional graphics can be produced using the


functions surf, plot3 or mesh.

Interfacing with other languages


MATLAB can call functions and subroutines written in the C programming
language or FORTRAN. A wrapper function is created allowing MATLAB data types
to be passed and returned. The dynamically loadable object files created by
compiling such functions are termed "MEX-files" (for MATLAB executable).
Libraries written in Java, ActiveX or .NET can be directly called from MATLAB and
many MATLAB libraries (for example XML or SQL support) are implemented as
wrappers around Java or ActiveX libraries. Calling MATLAB from Java is more
complicated, but can be done with MATLAB extension,[13] which is sold separately
by MathWorks, or using an undocumented mechanism called JMI (Java-to-Matlab
Interface), which should not be confused with the unrelated Java Metadata
Interface that is also called JMI.
As alternatives to the MuPAD based Symbolic Math Toolbox available from
MathWorks, MATLAB can be connected to Maple or Mathematica.
Libraries also exist to import and export MathML.

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

MATLAB binary file for storing variables


.mex...
MATLAB executable (platform specific, e.g. ".mexmac" for the Mac, ".mexglx"
for Linux, etc.)
.p
MATLAB content-obscured .m file (result e() )

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.

MATLAB provides 3 working environments:

1. Command Window: For direct implementation of functions and numerical


Computing.

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 includes development tools that help in implementing


algorithm efficiently. These include the following:

* MATLAB Editor - Provides standard editing and debugging features,


such as setting breakpoints and single stepping

*Code Analyzer - Checks your code for problems and recommends


modifications to maximize performance and maintainability

*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

array are called image elements or pixels.

Image processing

Image processing is a physical process used to convert an image signal into a

physical image. The image signal can be either digital or analog. The actual output

itself can be an actual physical image or the characteristics of an image.

The most common type of image processing is photography. In this process,

an image is captured using a camera to create a digital or analog image. In order to

produce a physical picture, the image is processed using the appropriate technology

based on the input source type.

Digital image processing is the use of computer algorithms to perform image

processing on digital images. As a subcategory or field of digital signal processing,

digital image processing has many advantages over analog image processing.

The purpose of the image processing is divided into 5 categories.

 Purpose 1: Make an image better: Image sharpening and image restoration.

 Purpose 2: Measure the interesting objects in an image: Pattern

measurement.

 Purpose 3: Distinguish or recognize the objects in an image: Image

recognition or image understanding.

 Purpose 4: Search for the image of interest: Image retrieval.

 Purpose 5: See objects which are not seen: Visualization

 Fundamental steps in image processing:

July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB

1. Image acquisition: to acquire a digital image

2. Image preprocessing: to improve the image in ways that increase the chances for

success of the other processes.

3. Image segmentation: to partitions an input image into its constituent parts or

objects.

4. Image representation: to convert the input data to a form suitable for computer

processing.

5. Image description: to extract features that result in some quantitative information

of interest or features that are basic for differentiating one class of objects from

another.

6. Image recognition: to assign a label to an object based on the information

provided by its descriptors.

7. Image interpretation: to assign meaning to an ensemble of recognized objects.

July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB

Creating Apps with Graphical User Interfaces in 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.

Creating a MATLAB GUI Interactively

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.

Creating a MATLAB GUI Programmatically

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

A custom app with a GUI in MATLAB

Examples and How To

 Creating a GUI with GUIDE 10:28 (Video)


 GUI Building Tutorials (Videos)
 Displaying Matrix Data in a GUI (Example)
 MATLAB GUI Programming Resources (Blog)
 MATLAB Apps Overview 1:45 (Video)
 Writing Apps in MATLAB (Article)
 User-Contributed Apps with Custom GUIs (MATLAB Central File Exchange)

Software Reference

 Graphical User Interfaces - Building Basics (MATLAB Documentation)


 Building Image Processing Graphical User Interfaces with Modular Tools (Image
Processing Toolbox Documentation)

Building GUI interfaces in Matlab

MATLAB

This example shows how to build user GUI in Matlab. We will build a simple calculator to do that.

Start gui builder by typing


>>guide

Select "Blank GUI", click OK

The GUI window will open

Resize the design window.


Using the pallette on the left, drag and drop, resize and position the canvas, buttons, and static text

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

The GUI is finished. Save the work.


The rest of the design process will take care of the functionality provided by each GUI component

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.

Programming the Callback

When the user clicks on the push button, its callback executes. Push buttons

do not return a value or maintain a state.

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.

Programming the 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:

function slider1_Callback(hObject, eventdata, handles)


slider_value = get(hObject,'Value');
% Proceed with callback...

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.

function radiobutton1_Callback(hObject, eventdata, handles)


if (get(hObject,'Value') == get(hObject,'Max'))
% Radio button is selected, take appropriate action
else
% Radio button is not selected, take appropriate action
end

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.

function checkbox1_Callback(hObject, eventdata, handles)


if (get(hObject,'Value') == get(hObject,'Max'))
% Checkbox is checked-take approriate action

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.

function listbox1_Callback(hObject, eventdata, handles)


index_selected = get(hObject,'Value');
list = get(hObject,'String');
item_selected = list{index_selected}; % Convert from cell array
% to 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.

Triggering Callback Execution

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.

List Box Examples

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

It has only two states ,”on” or “off’.

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

Modify axes properties

Creating Axes Objects

Use axes to create axes objects.

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.

The button group's SelectionChangeFcn callback is called whenever a


selection is made. Its hObject input argument contains the handle of the
selected radio button or toggle button.

If you have a button group that contains a set of radio buttons and toggle
buttons and you want:

 An immediate action to occur when a radio button or toggle button is


selected, you must include the code to control the radio and toggle
buttons in the button group's SelectionChangeFcn callback function,
not in the individual toggle button Callback functions.
 Another component such as a push button to base its action on the
selection, then that component's Callback callback can get the handle
of the selected radio button or toggle button from the button group's
SelectedObject property.

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

Personal identification is to associate a particular individual with an identity. It


plays a critical role in our society, in which questions related to identity of an
individual such as “Is this the person who he or she claims to be?”, “Has this
applicant been here before?”, “Should this individual be given access to our
system?” “Does this employee have authorization to perform this
transaction?” etc are asked millions of times every day by hundreds of
thousands of organizations in financial services, health care, electronic
commerce, telecommunication, government, etc. With the rapid evolution of
information technology, people are becoming even more and more
electronically connected. As a result, the ability to achieve highly accurate
automatic personal identification is becoming more critical.
A wide variety of systems require reliable personal authentication schemes to
either confirm or determine the identity of individuals requesting their
services. The purpose of such schemes is to ensure that the rendered services
are accessed by a legitimate user, and not anyone else. Examples of these
systems include secure access to buildings, computer systems, laptops, cellular
phones and ATMs. In the absence of robust authentication schemes, these
systems are vulnerable to the wiles of an impostor.
Traditionally, passwords (knowledge-based security) and ID cards (token-based
security) have been used to restrict access to systems. The major advantages
of this traditional personal identification are that
(i) They are very simple
(ii) They can be easily integrated into different systems with a low cost.

However these approaches are not based on any inherent attributes of an


individual to make a personal identification thus having number of
disadvantages like tokens may be lost, stolen, forgotten, or misplaced; PIN may
be forgotten or guessed by impostors. Security can be easily breached in these
systems when a password is divulged to an unauthorized user or a card is
stolen by an impostor; further, simple passwords are easy to guess (by an
impostor) and difficult passwords may be hard to recall (by a legitimate
user).Therefore they are unable to satisfy the security requirements of our
electronically interconnected information society. The emergence of
biometrics has addressed the problems that plague traditional verification.

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

facilitate matching, the raw digital representation is usually further processed


by feature extractor to generate a compact but expensive representation,
called a template.
Depending on the application, the template may be stored in the central
database. Depending on the application, biometrics can be used in one of two
modes: verification or identification. Verification—also called authentication—
is used to verify a person’s identity—that is, to authenticate that individuals
are who they say they are. Identification is used to establish a person’s
identity—that is, to determine who a person is. Although biometric
technologies measure different characteristics in substantially different ways,
all biometric systems start with an enrollment stage followed by a matching
stage that can use either verification or identification.
1.4.1 Enrollment
In enrollment, a biometric system is trained to identify a specific person. The
person first provides an identifier, such as an identity card. The biometric is
linked to the identity specified on the identification document. He or she then
presents the biometric (e.g., fingertips, hand, or iris) to an acquisition device.
The distinctive features are located and one or more samples are extracted,
encoded, and stored as a reference template for future comparisons.
Depending on the technology, the biometric sample may be collected as an
image, a recording, or a record of related dynamic measurements. How
biometric systems extract features and encode and store information in the
template is based on the system vendor’s proprietary algorithms. Template
size varies depending on the vendor and the technology. Templates can be
stored remotely in a central database or within a biometric reader device itself;
their small size also allows for storage on smart cards or tokens.
Minute changes in positioning, distance, pressure, environment, and other
factors influence the generation of a template. Consequently, each time an
individual’s biometric data are captured, the new template is likely to be
unique. Depending on the biometric system, a person may need to present
biometric data several times in order to enroll.
Either the reference template may then represent an amalgam of the captured
data or several enrollment templates may be stored. The quality of the
template or templates is critical in the overall success of the biometric
application. Because biometric features can change over time, people may
have to reenroll to update their reference template. 10

July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB

Some technologies can update the reference template during matching


operations. The enrollment process also depends on the quality of the
identifier the enrollee presents. The reference template is linked to the
identity specified on the identification document. If the identification
document does not specify the individual’s true identity, the reference
template will be linked to a false identity.
1.4.2 Verification
In verification systems, the step after enrollment is to verify that a person is
who he or she claims to be (i.e., the person who enrolled). After the individual
provides an identifier, the biometric is presented, which the biometric system
captures, generating a trial template that is based on the vendor’s algorithm.
The system then compares the trial biometric template with this person’s
reference template, which was stored in the system during enrollment, to
determine whether the individual’s trial and stored templates match.
Verification is often referred to as 1:1 (one-to-one) matching. Verification
systems can contain databases ranging from dozens to millions of enrolled
templates but are always predicated on matching an individual’s presented
biometric against his or her reference template. Nearly all verification systems
can render a match–no-match decision in less than a second.
One of the most common applications of verification is a system that requires
employees to authenticate their claimed identities before granting them
access to secure buildings or to computers.
1.4.3 Identification
In identification systems, the step after enrollment is to identify who the
person is. Unlike verification systems, no identifier is provided. To find a
match, instead of locating and comparing the person’s reference template
against his or her presented biometric, the trial template is compared against
the stored reference templates of all individuals enrolled in the system.
Identification systems are referred to as 1: M (one-to-M, or one-to-many)
matching because an individual’s biometric is compared against multiple
biometric templates in the system’s database. There are two types of
identification systems: positive and negative. Positive identification systems
are designed to ensure that an individual’s biometric is enrolled in the
database. The anticipated result of a search is a match. A typical positive
identification system controls 11

July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB

access to a secure building or secure computer by checking anyone who seeks


access against a database of enrolled employees. The goal is to determine
whether a person seeking access can be identified as having been enrolled in
the system. Negative identification systems are designed to ensure that a
person’s biometric information is not present in a database. The anticipated
result of a search is a no match. Comparing a person’s biometric information
against a database of all who are registered in a public benefits program, for
example, can ensure that this person is not “double dipping” by using
fraudulent documentation to register under multiple identities. Another type
of negative identification system is a watch list system. Such systems are
designed to identify people on the watch list and alert authorities for
appropriate action. For all other people, the system is to check that they are
not on the watch list and allow them normal passage. The people whose
biometrics is in the database in these systems may not have provided them
voluntarily. For instance, for a surveillance system, the biometric may be faces
captured from mug shots provided by a law enforcement agency.
1.4.4 Matches Are Based on Threshold Settings
No match is ever perfect in either verification or identification system, because
every time a biometric is captured, the template is likely to be unique.
Therefore, biometric systems can be configured to make a match or no-match
decision, based on a predefined number, referred to as a threshold, which
establishes the acceptable degree of similarity between the trial template and
the enrolled reference template. After the comparison, a score representing
the degree of similarity is generated, and this score is compared to the
threshold to make a match or no-match decision. Depending on the setting of
the threshold in identification systems, sometimes several reference templates
can be considered matches to the trial template, with the better scores

July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB

corresponding to better matches.

July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB

1.5 Leading Biometric Technologies


A growing number of biometric technologies have been proposed over the
past several years, but only in the past 5 years have the leading ones become
more widely deployed.
Some technologies are better suited to specific applications than others, and
some are more acceptable to users. We describe seven leading biometric
technologies:

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

1.6 Fingerprints as a Biometric


Among all biometric traits, fingerprints have one of the highest levels of
reliability and have been extensively used by forensic experts in criminal
investigations. A fingerprint refers to the flow of ridge patterns in the tip of the
finger. The ridge flow exhibits anomalies in local regions of the fingertip
(Figure), and it is the position and orientation of these anomalies that are used
to represent and match fingerprints.
Although not scientifically established, fingerprints are believed to be unique
across individuals, and across fingers of the same individual. Even identical
twins having similar DNA, are believed to have different fingerprints.
Traditionally, fingerprint patterns have been extracted by creating an inked
impression of the fingertip on paper.
The electronic era has ushered in a range of compact sensors that provide
digital images of these patterns. These sensors can be easily incorporated into
existing computer peripherals like the mouse or the keyboard (figure), thereby
making this mode of identification a very attractive proposition. This has led to
the increased use of automatic fingerprint-based authentication systems in
both civilian and law enforcement applications.

July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB

1.6.1 Fingerprint Representation


The uniqueness of a fingerprint is determined by the topographic relief of its
ridge structure and the presence of certain ridge anomalies termed as
minutiae points.
Typically, the global configuration defined by the ridge structure is used to
determine the class of the fingerprint, while the distribution of minutiae points
is used to match and establish the similarity between two fingerprints.
Automatic fingerprint identification systems, that match a query print against a
large database of prints (which can consist of millions of prints), rely on the
pattern of ridges in the query image to narrow their search in the database
(fingerprint indexing), and on the minutiae points to determine an exact match
(fingerprint matching). The ridge flow pattern itself is rarely used for matching
fingerprints.
1.6.2 Minutiae
Minutiae, in fingerprinting terms, are the points of interest in a fingerprint,
such as bifurcations (a ridge splitting into two) and ridge endings. Examples
are:
a.) ridge endings - a ridge that ends abruptly
b.) ridge bifurcation - a single ridge that divides into two ridges
c.) short ridges, island or independent ridge - a ridge that commences, travels a
short distance and then ends
d.) ridge enclosures - a single ridge that bifurcates and reunites shortly
afterward to continue as a single ridge
e.) spur - a bifurcation with a short ridge branching off a longer ridge
f.) crossover or bridge - a short ridge that runs between two parallel ridges

July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB

Minutiae also refer to any small or otherwise incidental details.


But the focus when matching is only on the 2 main minutiae; ridge ending and
ridge bifurcation

We propose a simple and effective approach for fingerprint image


enhancement and minutiae extraction based on the frequency and orientation
of the local ridges and thereby extracting correct minutiae.
Automatic and reliable extraction of minutiae from fingerprint images is a
critical step in fingerprint matching. The quality of input fingerprint images
plays an important role in the performance of automatic identification and
verification algorithms. In this project we presents a fast fingerprint
enhancement and minutiae extraction algorithm which improves the clarity of
the ridge and valley structures of the input fingerprint images based on the
frequency and orientation of the local ridges and thereby extracting correct
minutiae.
Fingerprint based identification has been one of the most successful biometric
techniques used for personal identification. Each individual has unique
fingerprints. A fingerprint is the pattern of ridges and valleys on the finger tip.
A fingerprint is thus defined by the uniqueness of the local ridge characteristics
and their relationships. Minutiae points are these local ridge characteristics
that occur either at a ridge ending or a ridge bifurcation. 19

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

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)

July,2013
(Month and year of submission)
FINGER-PRINT RECOGNITION BY MINUTIAE EXTRACTION USING MATLAB

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

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

This Finger-Print Recognition By Minutiae Extraction using MatLab is “MATLAB”


based software which can be used by forensic experts in forensics or imaging
laboratories. It is a basic bio-metric verification system aimed at easier user
interface through GUI. It is easy to use and uses highly precise algorithms for
minutiae extraction and matching, with accuracies as high as 88.88% in exact
matches.

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)

You might also like