Beruflich Dokumente
Kultur Dokumente
List of Tables
.2
List of Figures
..3
Abstract
.4
Introduction
.5
Literature Review ..
..9
Project Implementation
.20
Results and Discussions
36
Conclusion
.44
References
...
.
46
Appendix A
48
Appendix B
..55
LIST OF TABLES
Page
Table 1.1
Table 1.2
Normal Forms
Course Table
27
Table 1.3
Student Table
28
Table 1.4
28
Table 1.5
29
2
Table 1.6
29
Table 1.7
36
Table 1.8
37
Table 1.9
Table 2.0
38
39
Table 2.1
40
LIST OF FIGURES
Page
Figure 2.0
9
Figure 2.2.1.
Figure 2.2.2
14
Figure 2.2.3
Figure 2.2.4
16
Minutia Extractor
Figure2.2.5
Figure 3.2.0
blueprint
Figure 3.2.1
Minutia Matcher
18
Figure 4.0
Figure 4.1
44
ABSTRACT
Fingerprint verification is one of the most reliable personal identification
methods in biometrics. This report presents the design and development of a
database for minutiae storage in a MATLAB-based fingerprint recognition
system. An examination authentication system (EAS) that will screen
students of Faculty of engineering at the entrance of an examination will also
be used as a case study for the database generated. The database will be
implemented by making use of MySQL, a relational database management
system. The process starts from connecting MATLAB to MySQL using the
Database ToolBox, Java Database Connectivity (JDBC) Driver and proceeds to
perform queries on and from MySQL using MATLAB.
CHAPTER ONE
INTRODUCTION
1.1 INTRODUCTION
This chapter will focus on background of this project, problem of the
manual system, the objectives, scope and significance of the project.
1.2 BACKGROUND
A fingerprint database image may readily be used as a background
database or may be used for testing purpose. Collecting large
databases of fingerprint images is problematic due to the great
amount of time and money required and the private legislation, which
in some countries prohibits the diffusion of such personal information.
Fingerprint recognition is one of the most important biometric
techniques. The largely accepted uniqueness of fingerprints and the
availability of low-cost acquisition devices make it well suited for a
wide range of application [1].
Great efforts are continually spent on designing new fingerprint
algorithms, both in academic and industrial environments, but not
enough care is usually dedicated to performance evaluation. In fact
testing an algorithm requires a large database of samples(thousands or
1.4 OBJECTIVES
The objective is important to achieve the goal. The main objectives of
this project are:
recognition from an earlier project [3]. This database will store minutiae
details extracted from a fingerprint image from another standard
database FVC2002
[2]
[3]
if possible.
Faculty
This significance of this system is mainly focusing for the faculty of
engineering itself. This is because this project will enhance the
efficiency of the manual system. It also can reduce in terms of docket
printing and avoid human error. All activities are done by computer and
technology.
1.5.3 Students
As a user, students can motivate themselves to be more disciplined,
focused and dedicated.
1.6 CONCLUSION
This chapter discusses several important sections that relates to this and
it shall serve as a guideline to the successful completion of the project. It
includes elaboration on the background, problem statement, objectives
and significance of the project.
CHAPTER TWO
LITERATURE REVIEW
A fingerprint is an impression of the friction ridges of all or any part of
the finger. A friction ridge is a raised portion of the epidermis on the palmar
(palm and fingers) or plantar (sole and toes) skin, consisting of one or more
connected ridge units of friction ridge skin. These ridges are sometimes
known as "dermal ridges" or "dermal papillae.
Fingerprints may be
10
identification.
In 1880 (First Latent Print Identification) , Dr. Henry Faulds published
an article in the Scientific Journal, "Nature". He discussed fingerprints
as a means of personal identification, and the use of printers ink as a
11
bottle.
Juan Vucetich made the first criminal fingerprint identification in 1892.
Sir Francis Galton published his book, "Fingerprints", establishing the
individuality and permanence of fingerprints. Galton's primary interest
in fingerprints was as an aid in determining heredity and racial
background. He was able to scientifically prove that fingerprints do not
change over the course of an individual's lifetime, and that no two
fingerprints are exactly the same. According to his calculations, the
odds of two individual fingerprints being the same were 1 in 64 billion.
Galton identified the characteristics by which fingerprints can be
identified. A few of these same characteristics (minutia) are basically
12
These minutiae, the loops, whorls, arches, ridges, valleys, ridge endings,
etc., can be matched in two basic ways:
Identification (1: n, 1: many matching) of an individual using their
fingerprints is usually done for forensic or background checking purposes.
AFIS (Automated Fingerprint Identification System) is the most mature of all
biometric systems with the most widespread use, and has gone through its
own major advancements in terms of reliability and integration over the past
decade. This technology has traditionally been used by law enforcement
agencies around the globe to identify individuals. However, the technology is
increasingly being used in the private sector as a tool for employee
14
background checking, and its use is expanding within the public sector as
part of civil identification systems. AFIS systems require the collection of all
ten finger and thumb prints, both flat and rolled.
Key Applications:
Civil Identification
Background Checking
Employment
Adoption/Foster Parenting
15
[7]
combined with smart card technologies and boast high levels of accuracy.
Fingerprint recognition technologies do have some key drawbacks, however:
there continues to be limited interoperability, as well as some resistance
from users who may associate fingerprint technologies with law-enforcement
applications. With a large number of vendors competing for a piece of the
fast growth market for biometrics, the costs for use of fingerprint recognition
has been driven down to the point that it has become quite commonplace,
included as a standard option on a number of portable devices from
manufacturers. High profile government sponsored programs (e.g., US VISIT)
will likely force greater global adoption of fingerprint recognition technology
in passport and immigration programs.[7]
18
[3]
includes:
bit image with 0 values for ridges and 1 value for valleys, and
Segmentation: to separate the fingerprint which is the foreground from
the image background.
19
20
and
elastic
distortion
of
the
frictional
skin.
Fingerprint
A typical
21
CHAPTER THREE
PROJECT IMPLEMENTATION
The project will be implemented using MySQL Server 5.1.33, MySQL
WorkBench 5.2.31 and also MATLAB 7.5.0 produced by Mathworks Company
Inc.
22
[3]
involve:
1. Connecting Matlab Database ToolBox to MySQL
2. Data Modeling: conceptual representation of the data structures that
are required by the database.
3. Editing the algorithm to save minutiae in MySQL database.
4. Then apply the steps in the design statement above.
23
3.2.1
designed, it is common for the same data to appear in more than one
database and for problems to arise in drawing together data from multiple
databases.
-Conflicting Objectives: In many cases, the above factors will conflict with
one another. An elegant but radical solution may be difficult to communicate
to conservative users. We may be so attracted to an elegant model that we
exclude requirements that do not fit. A model that accurately enforces a
large number of business rules will be unstable if some of those rules
change. And a model that is easy to understand because it reflects the
perspectives of the immediate system users may not support reusability or
integrate well with other databases.
Our overall aim is to develop a model that
provides the best balance among these possibly conflicting objectives. As in
other design disciplines, achieving this is a process of proposal and
evaluation, rather than a step by-step progression to the ideal solution.
example. These are the basic building blocks of relational databases, which
are implemented using a relational database management system
(RDBMS).
Physical Data Model: A physical data model has little use as a means of
communication with the users. Its primary purpose is to act as a blueprint for
the implementation of the database system. The details contained in a
physical data model are beyond the normal comprehension of the users. The
model expresses too many intricate details. It includes considerations of the
particular DBMS and the hardware environment in which the database
system gets implemented. The physical data model incorporates any
changes necessary to achieve adequate performance and is also presented
in terms of
3.3 NORMALIZATION
This is a set of rules for allocating data to tables in such a way as to
eliminate certain types of redundancy and incompleteness.
[20]
It is also a
29
[19]
Universal properties
Second
Normal
Form The dependence of all attributes on all aspects of
(2NF)
the primary key.
Third Normal Form (3NF)
The dependence of any attribute on any attribute
other than the primary key.
Fourth
(4NF)
Normal
Domain Key Normal Form Verifies that all constraints are the logical
(DKNF)
consequence of the definition of the keys and the
domains (data value rules).
30
COURSE
DEPARTMENT
EEG 502
TITLE/DECSRIPTION
DIGITAL COMPUTER
ELECT./ELECT.
DESIGN
EEG 520
DIGITAL CONTROL
Table 1.2: Course Table
ELECT./ELECT.
This table has 3 columns/fields and the course code can be set as primary
key as it contains different courses.
NAME
AKANGBE SAIDAT
OMOTOLA
BELLO
MATRIC. NO.
DEPARTMENT
DATE OF
070408006
COMPUTER
BIRTH
26/06/1990
060408029
ENGINEERING
ELECT. /ELECT.
11/03/1987
NASIRULLAHI
ENGINEERING
31
BOLARINWA
Table 1.3: Student Table
This table contains 4 columns that stores information about each
student and here we have set the Matric No as Primary key because the
table contains information about different students. Here, the Matric No
serves as a unique identifier for each student.
NAME
AKANGBE SAIDAT
MATRIC. NO.
070408006
DEPARTMENT
COMPUTER
COURSE
EEG 502
OMOTOLA
BELLO
060403029
ENGINEERING
ELECT. /ELECT.
EEG 502
NASIRULLAHI
ENGINEERING
BOLARINWA
Table 1.4: Registration/Exam Enrollment Table
This details contains the registration details of students writing
examinations for different courses. A student can offer many courses,
therefore matric no may not be a primary key. Also students from many
department can/might offer a course.
MATRIC
NO.
NO.
TERMS
ANGL
BIFS
ANGL
ANGL
ANGL
NO
OF
OF
BIF
ORIENTATION
X
Y
TERM
ORIENTATION
X
Y
S
2
S
2
0704080
27
27
-1.85
172
-2.07
139
-1.67
24
184
NaN
NaN
0.00
191
-2.62
NaN
92
-2.36
1.57
06
27
0604030
66
32
33
67
-0.52
-1.05
29
69
156
1.02
67
177
-2.36
2.09
0.52
75
120
-1.68
74
135
2.09
-1.05
0.00
order. After scrutinizing the nature of our database, the hidden data to
include is FINGERTYPE. This is because the design allocate for different kinds
of finger e.g thumb, index Finger, Middle Finger, Ring Finger & Little/Pinky
finger for either left or right hand.
(iii) Determining the Primary Key
- Finally, we determine a primary key for the table. The choice of primary
keys is a critical (and sometimes complex) task. For the moment, we will
simply note that the primary key is a minimal set of columns that contains a
different combination of values for each row of the table. Another way of
looking at primary keys is that each value of the primary key uniquely
identifies one row of the table. In this case, Course Code and Matric No will
do the job as stated earlier.
Primary Keys
A primary key is a nominated column or combination of columns that
has a different value for every row in the table.
Candidate Keys
Sometimes more than one column or combination of columns could
serve as a primary key.
Foreign Keys
When we remove repeating groups to a new table, we carry the
primary key of the original table with us, to cross-reference or point back to
the source. In moving from first to third normal form, we left determinants
behind as cross-references to the relevant rows in the new tables. These
34
cross-referencing columns are called foreign keys, and they are the principal
means of linking data from different tables.
[11]
The
first thing to do is to define data source (the data itself and the connection to
the data): Do the following in the Visual Query Builder window
1. Click Query | Define JDBC Data Source
2. Click Create New File in the opened window
3. Give a name to the data source MAT file and click Save. This file saves
your data source specification, which you can use in the future sessions
35
4.After that enter information for your data source into the Name, Driver, and
URL fields as follows:
o Name: database_name_you_want_to_connect
o Driver: com.mysql.jdbc.Driver
o URL:jdbc:mysql://localhost:3306/database_name_you_want_to_co
nnect
5. Click Add/Update and OK
Now you can start using Visual Query Builder to import or export data
between MATLAB and database. In order to import data from a database into
the MATLAB workspace, do the following in the Visual Query Builder window:
1. Click the Select button under Data operation
2. Select your database from the data source list. Give your username and
password
3. Select tables and fields which you want to query
4. Enter a suitable name (e.g. A) in the MATLAB workspace variable field.
This variable stores the data that the query returns
5. Click Execute to run the query. The query result appers in the Data field.
6. Double-click the variable in the Data field. That opens a Variable Editor,
where the query data is shown.
In order to export data from the MATLAB workspace into a database, do the
following in the Visual Query Builder window:
36
% JDBC Parameters
jdbcString = sprintf('jdbc:mysql://%s/%s', host, dbName);
jdbcDriver = 'com.mysql.jdbc.Driver';
37
[filenames]=fetch(dbConn,QUERY)
close(dbConn);
38
CHAPTER FOUR
RESULTS AND DISCUSSIONS
After each stage in the solution method was carried out, different results
were obtained. The results achieved are shown for the different stages.
NORMALIZATION STAGE
- After normalizing, the following tables were obtained:
Course
Course Title
Code
Semest
Department
Unit
er
39
Here, Course Code, Course Title and semester are all primary
keys/candidate keys because the design assumes that there can be only one
unique course code with a particular title that can be offered in a semester.
Matric
Number
No
of
Angle
Angle
Angle
Finger
Type
Bifurcatio
ns
Table 1.7: Bifurcations Table (Final)
It was also created in the MySQL database by performing the following
queries:
CREATE TABLE `bifurcations` (
`X` int(3) NOT NULL,
`Y` int(3) NOT NULL,
`Angle1` decimal(3,2) NOT NULL,
`Angle2` decimal(3,2) NOT NULL,
`Angle3` decimal(3,2) NOT NULL,
`Finger Type` varchar(20) NOT NULL,
`Matric No` varchar(9) NOT NULL,
`Number of Bifurcations` int(11) NOT NULL,
PRIMARY KEY (`Matric No`,`X`,`Y`,`Angle1`,`Angle2`,`Angle3`,`Finger
Type`,`Number of Bifurcations`)
KEY `Matric No` (`Matric No`),
KEY `Finger Type` (`Finger Type `),
40
Number of
No
Terminatio
Angle
Finger
Type
ns
Table 1.8: Terminations Table (Final)
The MySQL queries to create this is:
CREATE TABLE `terminations` (
`Matric No` varchar(9) NOT NULL,
`X` int(3) NOT NULL,
`Y` int(3) NOT NULL,
`Angle` decimal(3,2) NOT NULL,
`Finger Type` varchar(20) NOT NULL,
`Number of Terminations` int(11) NOT NULL,
PRIMARY KEY (`Matric No`,`X`,`Y`,`Angle`,`Finger Type`,`Number of
Terminations`)
KEY `Matric No` (`Matric No`),
KEY `Finger Type` (`Finger Type `),
41
Matric
First
Last
Other
Date of
Departme
Phone
No
Name
Name
Names
Birth
nt
No
Sex
Finger Type
Table 2.0: Finger Table (Final)
CREATE TABLE `finger` (
`Finger Type` varchar(20) NOT NULL,
PRIMARY KEY (`Finger Type`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Matric
Course Code
Semester
Session
No
Table 2.1: Registration Table (Final)
CREATE TABLE `registration` (
`Matric No` varchar(9) NOT NULL,
`Course Code` varchar(6) NOT NULL,
`Semester` varchar(1) NOT NULL,
`Session` year(4) NOT NULL,
PRIMARY KEY (`Matric No`,`Course Code`,`Session`),
KEY `Course Code` (`Course Code`),
KEY `Matric No` (`Matric No`),
CONSTRAINT `Course Code` FOREIGN KEY (`Course Code`) REFERENCES `course`
(`Course Code`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `Matric No` FOREIGN KEY (`Matric No`) REFERENCES `student`
(`Matric No`) ON DELETE CASCADE ON UPDATE CASCADE
43
As seen from Table 1.7 and 1.8, the minutiae table in table 1.5 has
been split into two tables i.e. Bifurcations and Terminations. Also, extra
details were added in the Students Table e.g.
-First Name, last Name, other names: used to distinguish or almost uniquely
identify candidates for the exam as against name only as used in the
former table. Also, name is a reserved word for most databases so this
helps us to classify. ,
-Phone number, Sex, etc.
DATA MODELLING STAGE
The relational model obtained is as shown below:
44
45
- Finger Type under finger Table has a 1: n relationship with Finger Type under
Terminations table. The same applies for Finger Type under Bifurcations
table.
- Course Code under Course Table has a 1: n relationship with Course Code
under Registration table.
N.B: Relationships illustrate how two entities share information in the
database structure. Entities with one-to-one relationships should be merged
into a single entity.Each remaining entity is modeled by a table with a
primary key and attributes, some of which may be foreign keys. One-to-many
relationships are modeled by a foreign key attribute in the table representing
entity on the "many" side of the relationship. Many-to-many relationships
among two entities are modeled by a third table that has foreign keys that
refer to the entities. These foreign keys should be included in the relationship
table's primary key, if appropriate.
46
[3]
47
CHAPTER FIVE
CONCLUSION
This project report has briefly introduced the major concepts in
database designing for storing minutiae in a fingerprint recognition system
and has succeeded in overcoming the challenges faced by the initial author.
A significant improvement was made on the data modeling stage with the
introduction of normalization approach which is the most versatile technique
used in data modeling.
In addition, minutiae details i.e. terminations and bifurcations were
successfully separated into different schemas/tables. In order to ensure
connection between the matching algorithm and the DBMS being used, the
driver meant for that purpose had to be carefully configured.
Queries were then being made to the database to create the schemas
obtained after modeling and also to export data from the algorithm to the
database for storage purposes and for future reference.
A graphical user interface was also obtained to view the processing stages
with the use of the GUI ToolBox in MATLAB (See AppendixB), thereby
automating the process with the use of enabled buttons clicks only.
5.0 CHALLENGES
Several challenges were encountered while carrying out this project and
these include:
48
5.1
FUTURE WORK
Although, this project has tried its best in storing minutiae in a
database, there is still need for some future work to be carried out.
This include:
1) The possibility of encrypting all the minutiae details in a long string
as used in the SECUGEN fingerprint reader: this might involve some
form of coding/hashing.
49
REFERENCES
[1 ]. Nalini Ratha, Ruud Bolle(2004) , Automatic Fingerprint Recognition
System, New York: Springer-Verlag.
[2]. D. Maltoni, D. Maio, A.K. Jain & S. Prabhakar (2009), Handbook of
Fingerprint Recognition (Second Edition), London: Springer.
[3].Adeoye Adewale (2010), Matlab-based design and implementation of
fingerprint matching algorithm, University of Lagos, Nigeria.
[4]. Sy Mohd Syathir bin Sy Ali Zainol Abidin (2007) , Intelligent Fingerprint
Recognition System , Universiti Malaysia Pahang
[5]. Greg Moore , David L. von Minden, PhD (2011) , The History of
Fingerprints ,Retrieved March 8,2011, from
http://www.onin.com/fp/fphistory.htm
[6]. J. D.Woodward, N.M. Orlans, & P. T. Higgins (2002), Biometrics, New York:
McGraw-Hill.
[7]. Global Security Intelligence (2011), Fingerprint Recognition, Retrieved
from http://globalseci.com/?page_id=39
[8]. Wikipedia (2010), Database, http://wikipedia.org
50
y2-1.html#braiey2-24
[12] FVC2002, Finger Print Verification competition,
http://bias.csr.unibo.it/fvc2002/
[13] WU ZHILI (2002), Fingerprint Recognition, Hong Kong Baptist University.
[14]. Anil Jain, Sharath Pankanti (1998), Fingerprint Classification and
Matching,
Michigan State University, MI.
[15]. Andrew Senior (2001), IEEE Transactions on Pattern Analysis and
Machine
Intelligence, A Combination Fingerprint Classifier, vol. 23 ,no. 10, pp 11651174.
[16]. Meltem Ballan et al., A Fingerprint Classification Technique Using
Directional Images, Yildiz Technical University, Istanbul, Turkey and the
University of Texas at Austin , Austin, Texas.
51
APPENDIX A
BRIEF
DEFINITION
OF
SOME
KEY
COMPONENTS
AND
OPERATIONS
Database: A database consists of an organized collection of data for one
or more uses, typically in digital form.
[8]
involves the type of their contents, for example: bibliographic, documenttext, statistical. Digital databases are managed using database management
systems, which store database contents, allowing data creation and
maintenance, and search and other access. Database architecture consists of
three levels, external, conceptual and internal. Biometric data storage, that
refers to the design and implementation of a relational database system. The
52
ODBC-compliant can access any DBMS that has a corresponding driver. For
the driver, the ODBC model allows for two different solutions, either having
the driver reside on the client machine, or as a part of a server-side solution.
Drivers exist for all major DBMS.
Metadata: Database store user data and they also store information
about the database itself. Most DBMSs have a set of system tables, which list
tables in the database, column names in each table, primary keys, foreign
keys, stored procedures, and so forth. Each DBMS has its own functions for
getting information about table layouts and database features. JDBC provides
the interface Database Metadata, which a driver writer must implement so
that its methods return information about the driver and/or DBMS for which
the driver is written. For example, a large number of methods return whether
or not the driver supports a particular functionality. This interface gives users
54
[10]
with compatible database including IBM DB2, IBM Informix, Ingres, Microsoft
Access, Microsoft Excel, Microsoft SQL Server, MySQL, Oracle, PostgreSQL,
Sybase SQL Anywhere and Sybase SQL Server.
The
Math Works
Fig
3.2.1
MATLAB
Database
Schema
Toolbox
MySQL
JDBC
Driver
MATLAB-MySQL
55
communication
[10]
The word "relational" (the "R") indicates a particular kind of DBMS, one
that is very good at relating (that is, matching up) information stored in one
table to information stored in another by looking for elements common to
each of them. The power of a relational DBMS lies in its capability to pull data
from those tables conveniently and to join information from related tables to
produce answers to questions that can't be answered from individual tables
alone.
PRELIMINARY REQUIREMENTS FOR USING MYSQL ON YOUR MACHINE
You need to have the MySQL software installed. (e.g. with XAMPP server)
and configured
MySQL WorkBench(optional)
You need a MySQL account so that you can connect to the server.
You need a database to work with.
SQL QUERIES
56
60
61
65
%gui_start.m
%Script file to generate the GUI
%Final Year Project 2010-2011
%Akangbe S.O
%Computer Engineering, UNILAG
clear
FigWin = figure('Position',[50 -50 650 500],...
'Name','Fingerprint Matching Algorithm - 070408006',...
'NumberTitle','off',...
'Color',[ 0.827450980392157 0.815686274509804 0.776470588235294 ]);
AxesHandle1 = axes('Position',[0.2 0.15 0.35 0.7],...
'Box','on');
AxesHandle2 = axes('Position',[0.6 0.15 0.35 0.7],...
'Box','on');
BackColor = get(gcf,'Color');
%[ 0.827450980392157 0.815686274509804 0.776470588235294 ]
%[ 0.741176470588235 0.725490196078431 0.658823529411765 ]
FrameBox = uicontrol(FigWin,...
'Units','normalized', ...
'Style','frame',...
'BackgroundColor',[ 0.741176470588235 0.725490196078431 0.658823529411765 ],...
'ForegroundColor',[ 0.741176470588235 0.725490196078431 0.658823529411765 ],...
'Position',[0 0 0.15 1]);
%create static text.
Text2 = uicontrol(FigWin,...
'Style','text',...
'Units','normalized', ...
'Position',[0 0.95 1 0.05],...
'FontSize',15,...
'BackgroundColor',[ 0.741176470588235 0.725490196078431 0.658823529411765 ],...
'HorizontalAlignment','right', ...
'String','Fingerprint Matching Algorithm - 070408006');
Text2 = uicontrol(FigWin,...
'Style','text',...
'Units','normalized', ...
'Position',[0 0 1 0.05],...
'FontSize',15,...
'BackgroundColor',[ 0.741176470588235 0.725490196078431 0.658823529411765 ],...
'HorizontalAlignment','right', ...
'String','Fingerprint Matching Algorithm - 070408006');
w=16;
textLoad='Load Fingerprint Image';
h=uicontrol(FigWin,...
'Style','pushbutton',...
68
'Position',[0,320,80,20],...
'String','Load',...
'Callback',...
['image1=loadimage;'...
'subplot(AxesHandle1);'...
'imagesc(image1);'...
'title(textLoad);'...
'colormap(gray);']);
text_filterArea='Orientation Flow Estimate';
h=uicontrol(FigWin,...
'Style','pushbutton',...
'Position',[0,240,80,20],...
'String','Direction',...
'Callback',...
['subplot(AxesHandle2);[o1Bound,o1Area]=direction(image1,16);title(text_filterArea);']);
text_ROI='Region Of Interest(ROI)';
h=uicontrol(FigWin,...
'Style','pushbutton',...
'Position',[0,220,80,20],...
'String','ROI Area',...
'Callback',...
['subplot(AxesHandle2);
[o2,o1Bound,o1Area]=drawROI(image1,o1Bound,o1Area);title(text_ROI);']);
text_eq='Enhancement by histogram Equalization';
h=uicontrol(FigWin,...
'Style','pushbutton',...
'Position',[0,300,80,20],...
'String','his-Equalization',...
'Callback',...
['subplot(AxesHandle2);image1=histeq(uint8(image1));imagesc(image1);title(text_eq);']);
text21='Adaptive Binarization after FFT';
h=uicontrol(FigWin,...
'Style','pushbutton',...
'Position',[0,260,80,20],...
'String','Binarization',...
'Callback',...
[%'W=inputdlg(text);W=str2num(char(W));'...
'subplot(AxesHandle1);'...
'image1=adaptiveThres(double(image1),32);title(text21);']);
text='Please input the FFT factor(0~1)';
text_fft='Enhancement by FFT';
h=uicontrol(FigWin,...
'Style','pushbutton',...
'Position',[0,280,80,20],...
'String','fft',...
'Callback',...
['W=inputdlg(text);W=str2double(char(W));'...
'subplot(AxesHandle1);image1=fftenhance(image1,W);imagesc(image1);title(text_fft);']);
text31='Thinned-ridge map';
69
h=uicontrol(FigWin,...
'Style','pushbutton',...
'Position',[0,200,80,20],...
'String','Thining',...
'Callback',...
['subplot(AxesHandle2);o1=im2double(bwmorph(o2,''thin'',Inf));imagesc(o1,
[0,1]);title(text31);']);
text41='Remove H breaks';
h=uicontrol(FigWin,...
'Style','pushbutton',...
'Position',[0,180,80,20],...
'String','remove H breaks',...
'Callback',...
['subplot(AxesHandle2);o1=im2double(bwmorph(o1,''clean''));o1=im2double(bwmorph(o1,''
hbreak''));imagesc(o1,[0,1]);title(text41);']);
textn1='remove spike';
h=uicontrol(FigWin,...
'Style','pushbutton',...
'Position',[0,160,80,20],...
'String','Removing spike',...
'Callback',...
['subplot(AxesHandle2);o1=im2double(bwmorph(o1,''spur''));imagesc(o1,
[0,1]);title(textn1);']);
%% locate minutia and show all those minutia
text51='Minutia';
h=uicontrol(FigWin,...
'Style','pushbutton',...
'Position',[0,140,80,20],...
'String','Extract',...
'Callback',...
['[end_list1,branch_list1,ridgeMap1,edgeWidth]=mark_minutia(o1,o1Bound,o1Area,w);'...
'subplot(AxesHandle2);show_minutia(o1,end_list1,branch_list1);title(text51);']);
%Process for removing spurious minutia
text61='Remove spurious minutia';
h=uicontrol(FigWin,...
'Style','pushbutton',...
'Position',[0,120,80,20],...
'String','Real Minutiae',...
'Callback',...
['[pathMap1,real_end1,real_branch1]=remove_spurious_Minutia(o1,end_list1,branch_list1,o1
Area,ridgeMap1,edgeWidth);'...
'subplot(AxesHandle1);show_minutia(o1,real_end1,real_branch1);title(text61);']);
%save template file, including the minutia position,direction,and ridge information
textSaveName='file name';
h=uicontrol(FigWin,...
'Style','pushbutton',...
70
'Position',[0,100,80,20],...
'String','save',...
'Callback',...
['W=inputdlg(textSaveName);W=char(W);'...
'save(W,''real_end1'',''pathMap1'',''-ASCII'');']);
%invoke template file loader and do matching
h=uicontrol('Style','pushbutton',...
'String','Match',...
'Position',[0,80,80,20],...
'Callback',...
['finger1=fingerTemplateRead;'...
'finger2=fingerTemplateRead;'...
'percent_match=match_end(finger1,finger2,10);']);
The use of a GUI has hence rendered the project very effective as we
can now view the transitions from one processing stage to another. Also, the
print was being loaded into the MATLAB environment using the loadimage
function below which is sufficient in the absence of a fingerprint reader.
function image1=loadimage
% dialog for opening fingerprint files
%Final Year Project 2010-2011
%Akangbe S.O
%Computer Engineering,UNILAG
[imagefile1 , pathname]= uigetfile('*.bmp;*.BMP;*.tif;*.TIF;*.jpg','Open An Fingerprint
image');
if imagefile1 ~= 0
cd(pathname);
image1=readimage(char(imagefile1));
image1=255-double(image1);
end;
71