ZF MICROSYSTEM BASED EMBEDDED SYSTEM APPLICATION FOR
FINGERPRINT VERIFICATION
Geetha Mallik Raj Gogikar
B.Tech., Jawaharlal Nehru Technological University, 2006
PROJECT
Submitted in partial satisfaction of the requirements for the degree of
MASTER OF SCIENCE in
ELECTRICAL AND ELECTRONIC ENGINEERING at
CALIFORNIA STATE UNIVERSITY, SACRAMENTO
SPRING
2010
Approved by:
ZF MICROSYSTEM BASED EMBEDDED SYSTEM APPLICATION FOR
FINGERPRINT VERIFICATION
A Project by
Geetha Mallik Raj Gogikar
__________________________________, Committee Chair
Jing Pang, Ph.D.
__________________________________, Second Reader
Preetham B. Kumar, Ph.D.
____________________________
Date ii
Student: Geetha Mallik Raj Gogikar
I certify that this student has met the requirements for format contained in the University format manual, and that this project is suitable for shelving in the Library and credit is to be awarded for the Project.
__________________________, Graduate Coordinator ________________
Preetham Kumar, Ph.D. Date
Department of Electrical and Electronic Engineering iii
Abstract of
ZF MICROSYSTEM BASED EMBEDDED SYSTEM APPLICATION FOR
FINGERPRINT VERIFICATION by
Geetha Mallik Raj Gogikar
In today’s complex world the need to maintain the security of information or physical property has become more important and difficult task. Developing a trusted authentication system is inevitably linked to the number of passes an individual undergoes checking, before the permission to access the information is granted.
Biometric techniques are best at verification process, where the features of human beings are used for verification. Fingerprint verification is a one of the biometric processes where a particular person claims his/her identity using his/her fingerprint.
In this project I have designed an embedded application for Fingerprint verification system. Implementation of this project is carried on the ZF Microsystems based single board computer. It has Cyrix Media GX based processor and coprocessor which has a bus speed of 180MHz. This board provides all features present in conventional computers by consuming less power, it is useful in building embedded applications and board design cost is very low. It supports operating system such as
Windows 3.11, 95/98, and Red Hat Linux 4.0.
_______________________, Committee Chair
Jing Pang, Ph.D.
_______________________
Date iv
ACKNOWLEDGMENTS
Before going into the details of this project, I would like to add my sincere thanks for the people who supported me, directly or indirectly to complete this project. It was my honor that Dr. Jing Pang permitted me to work on this project. I must thank her for providing me all the necessary resources and help to finish this project. Her experience in this field, her expertise in Image Processing helped me a lot in finishing my work.
Without her continuous help, guidance and support, this project would not have been successfully completed.
I would like to thank my family for giving me inspiration and strength.
I am also thankful to Dr. Preetham Kumar for reviewing my project report and giving his valuable suggestions. Last but not the least my thanks go to all faculty members of Electrical Engineering Department for helping me in finishing my graduation at California State University, Sacramento.
Geetha Mallik Raj v
TABLE OF CONTENTS
Page
Acknowledgements………………………………………………………………………..v
List of Tables……………………………………………………………………………viii
List of Figures…………………………………………………………………………….ix
List of Equations…………………………………………………………………………..x
Chapter
1.
INTRODUCTION………………………………………………………………...1
1.1
Statement of Problem………………………………………………………….1
1.2
Existing Scenario…...…………………………………………………………2
1.3
Objectives of Proposed Project Work…………………………….…………...2
1.4
Scope of Proposed Project Work………………………………….…………..3
1.5
Organization of Report………………………………………………………..3
2.
CYRIX MEDIA MMX PROCESSOR……………………………………….......4
2.1
MediaGX Processor…………………………………………………………...5
2.2
MediaGx Cx5510 Chip...……………………………………………………...7
2.3
Operating System……………………………………………………………..8
3.
ZF MICROSYSTEM BOARD....…………………………………….………….10
3.1
Overview……………………..………………………………….…………...10
3.2
Hardware Configurations……………………………………….……………11
3.2.1
Parallel Port…………..……………………………….……………...11
3.2.2
Memory………..…………………………………….……………….11
3.2.3
Hard Drive…………………………………………………………...12
3.2.4
Power Supply…….………………………………….……………….12
4.
FINGERPRINT BASED VERIFICATION SYSTEM………………………….13 vi
4.1
Features of Finger Prints…………………...………………………………...13
4.2
Fingerprint Verification System……………………………………………..14
4.3
Minutiae Based Fingerprint Matching Technique..………………………….16
4.4
Bitmap File Format………………………………………………………….16
4.4.1
Color Transformations……………………………………………….18
4.5
Minutiae Points……………………………………………………………....19
4.6
Estimation of Effective Region……………………………………………...21
4.7
Why the Polar Coordinate System?.................................................................24
4.8
Reconstruction of Orientation………………………………………………..26
4.9
Alignment of Minutiae Data…………………………………………………31
4.10
Variable Sized Window Logic…………………………………………...32
4.11
Minutiae Matching Algorithm…………………………………………...34
4.12
Experimental Result……………………………………………………..34
5.
LIMITATIONS………………………………………………………………….37
6.
CONCLUSIONS………………………………………………………………..38
Bibliography…………………………………………………………………………39 vii
LIST OF TABLES
Page
Table 1: Bitmap image format…………………………………………………………..16
Table 2: BMP header format (54 bytes)…………………………………………………17
Table 3: Minutiae File Format………...............................................................................20 viii
LIST OF FIGURES
Page
Figure 2.1 Cyrix MediaGx System………………..……………………………………...5
Figure 2.2 Block diagram of MediaGx Processor.……………………………………….6
Figure 2.3 Block diagram of MediaGx Cx5510.………………………………………....8
Figure 3.1 ZF Microsystem Board………………………………………………………10
Figure 3.2 Interface Cable (26 pin to 25 pin)……………………………………………11
Figure 4.1 Types of Finger Prints………………………………………………………..13
Figure 4.2 Fingerprint features…………………………………………………………..13
Figure 4.3 Block diagram of a basic Fingerprint Verification System…………………..14
Figure 4.3 Flow chart of Verification process…………………………………………...15
Figure 4.5 Input and Output fingerprint images..………………………………………..19
Figure 4.6 Plotting of extracted Minutiae points………………………………………...21
Figure 4.7 Illustration of the effective region estimation………………………………..22
Figure 4.8 Experimental Results of Minutiae Matching………………………………...24
Figure 4.9 Computation of pixel in triangle……………………………………………..26
Figure 4.10 Experimental Results of Minutiae Matching…..…………………………...36 ix
LIST OF EQUATIONS
Page
1. Direction of Pixel equation…………………………………………………………...28
2. Exchange of Denotation equation…………………………………………………….29
3. Direction of Orientation equation…………………………………………………….30
4. Equation for Range of Orientation value……………………………………………..30
5. Equation for calculating difference………………….……………………………….32
6. Equation for Match percentage Calculation………………………………………….34 x
1
Chapter 1
INTRODUCTION
In today’s complex world the need to maintain the security of information or physical property has become more important and difficult task. Developing a trusted authentication system is inevitably linked to the number of passes an individual undergoes checking, before the permission to access the information is granted.
Meanwhile the checking process must be efficient and not time consuming. Such a system would definitely serve as a backbone in protection of information.
Thanks to the developments in the fields of digital image processing, embedded engineering, programming, etc. which have immensely contributed their role in the development of this fool proof verification system.
1.1
Statement of Problem
The increased terrorist attacks and lack of password security, has called in for the need of a stronger, secure and a reliable fingerprint verification system. A check has to be performed in different methods so as to ensure a strong, foolproof system for improving security.
The development of a verification system involves in the building of a centralized gateway that checks for a condition for accepting or denying access to a particular area.
Verifying a condition and then, granting or restricting access is the biggest hurdle faced today as the trespasser always tries to dupe the system and gain access for data. As a countermove to the trespassers, a stronger foolproof system have to be developed which would standoff the intruder’s to gain a wildcard entry.
2
The authenticity of a valid entry is judged based on identification criteria. This identification criterion might be personal photo identity card or barcode identification or an R.F.I.D Tag. Personification is the prime disadvantage of these identification criterions. Moreover all of these can be duplicated easily. So to overcome these problems, the only promising solution lies with the implementation of biometrics. The biometric parameter employed in the project is the fingerprint. With this implementation of the fingerprint based verification system two major threats, duplication and personification are eliminated.
1.2 Existing Scenario
The current finger print based systems just grant access based on fingerprint matching. The cycle of execution involves two stages: enrollment and authentication a). Enrollment: In this stage of Enrollment the fingerprint template is generated and then stored in a database. Next the corresponding information of that individual is also stored in the database for future reference [10]. b). Authentication: After the individual is enrolled into the database, fingerprint check compares pre-stored fingerprint information in database will be required whenever one person tries to gain access into a restricted area [10].
1.3 Objectives of Proposed Project Work
The proposed project is to develop a program for fingerprint based verification system, by using the minutiae information.
3
1.4
Scope of the Proposed Project Work
The conglomeration of various cutting edge technologies like digital image processing, microprocessors and interfacing, embedded designing using ZF microsystem based single board computer etc., which are involved in this project have helped me with hands on experience in designing, testing and troubleshooting. This application can be further developed by embedding it with a perfect fingerprint scanner and by fusing it with other comparison methods.
1.5 Organization of Report
Chapter 2 presents the features of the Cyrix Media MMX Processor. Chapter 3 discusses the features of the ZF Microsystems based single board computer. Chapter 4 explains different algorithms used to build this fingerprint based verification system application. The fingerprint verification flow model and its block diagram implemented in this project are explained. Chapter 5 discusses unique features of the project and
Chapter 6 concludes the project.
4
Chapter 2
CYRIX MEDIA MMX PROCESSOR
Cyrix processors have created a new era for low cost personal computers by including the multimedia features in it. The basic architecture of the Cyrix MediaGx processor is developed that can accommodate the graphics, audio, PCI interface and the memory controller. Cyrix processor uses a propriety motherboard socket which is specially designed for mounting onto the system. MediaGX processors, in the year 1998 had reached to the speeds of 233MHz and 266MHz by using 0.25-micron fabrication
[1][2][3].
Cyrix MediaGX processor consists of Virtual system architecture technology replaces hardware with software to operate the system interrupts transparently to the respective application which is trying to access VGA graphic register and the operating system. Thus it increases the compatibility between VGA and VESA graphic standards
[1][2].
This MediaGX System consists of two chips the MediaGX processor and the
MediaGX Cx5510 companion chip. The MediaGX processor has a 64-bit data bus, which is compatible to x86 processor motherboard and it can interface to PCI bus, DRAM memory. It has high quality advanced graphics accelerator and the display compression technology (DCT) which upgrades the graphics performance by storing graphics frame buffers in the main memory. The companion chip, the MediaGX Cx5510, is a single chip integrated controller which is compatible to Cyrix’s MediaGX 64-bit processors. It acts as a bridge between the MediaGX processor and the ISA bus by performing traditional
5 chip set functions. It also supports audio system due to its compatibility with the industry standard sound cards [1].
Figure 2.1 Cyrix MediaGx System
2.1 MediaGX Processor
The MediaGx processor reduces power consumption by operating at low power range from 3.3V to 3.6V and also using System Management Mode (SMM), stopping clock capability, and suspending mode. MediaGX processor also acts has Virtual video card, which is connected to flat panel or CRT display using the video port via a Random
Access Memory Digital to Analog Converter (RAMDAC) chip [1].
Execution Core processes x86 code instructions with fetching, decoding, address calculation 1 and 2, executing and write back. The decoupled Load/Store unit allows multiple memory accesses in super-pipelining. Floating point unit processes all floating point instructions in parallel. In addition, the core has instruction and store queues of
6 four-deep for parallel execution of instructions. L1 cache supports write back policy. It is of four-way set associative configuration, and it can store 16K bytes of code and data in
1024 cache lines. The scratch-pad cache memory feature increases the multimedia processing speed, and also facilitates the data block transfer in graphics pipeline. Internal bus controller unit in processor provides a bridge between the C bus, the X bus and configuration control in system memory such as read access, write access, cache ability and PCI bus access [1][2][3].
Figure 2.2 Block diagram of MediaGx Processor
PCI controller unit supports cache line bursting, controls data reading and writing speeds, allows three PCI masters simultaneously and uses three types of arbitration [1].
Graphics pipelining accelerates GUI tasks by using a bitBTL/rendering engine and threeoperand Boolean raster operations. This unit is controlled using by optimized Microsoft
7
Windows 95 and NT drivers which in turn perform high-speed block transfers between virtual memory and the frame buffer [1][2]. Display controller unit gets the image data from the frame buffer, then it inserts cursor and icon plots data into the pixel stream, generates data display timing, and at last formats the pixel data for display on various devices [1][2][3].
2.2 MediaGX Cx5510 Chip
The MediaGX Cx5510 is a single-chip integrated controller for Cyrix's MediaGX line of x86-compatible 64-bit processors. The Cx5510 acts as a bridge to the ISA bus, thus performing the traditional chip-set functions, supports audio functions and PCI version 2.1 interfacing. Cx5510 chip is compatible to AT. It uses two 8237 DMA controllers, an 8254 interval timer, and decode logic for AT register space. It also provides a MIDI audio port and a two-channel (four-device) Bus Mastering IDE controller [1][2]. The PCI Bus interface unit acts as both master and slave. It acts has a slave when PCI cycles are initiated by the CPU or other PCI master devices and as a master for DMA and ISA transfer cycles. The PCI bus interface does not include the PCI bus arbiter because the arbiter already exists in the MediaGX processor. The Cx5510 chip produces both the address and data parity, parity checking. The Cx5510 contains configuration registers that are accessed through the PCI interface [1] [2].
The ISA bus interface is connected to X bus which in turn provides the subtractive-decoded memory and I/O cycles present on the PCI bus. The Cx5510 chip supports ISA Bus Masters using the DMA controller and the standard ISA refresh function. The Cx5510 chip has a built-in advanced power management and also include
8 the features like idle timers for common system peripherals, address trap registers for programmable address ranges for I/O or memory accesses, three programmable general purpose external inputs, clock throttling with automatic speedup for the CPU clock, software CPU stop clock, and zero-volt suspend/resume with peripheral shadow registers.
A dedicated serial bus is present in between MediaGx microprocessor and itself which provides CPU power management status, such has virtual power off the MediaGx processor during a 3-volt suspend period [1].
Figure 2.3 Block diagram of MediaGx Cx5510
2.3 Operating System:
Cyrix MediaGX is x86 compatible processor, It does not work with operating systems which have instruction set higher than 486 instruction set. Therefore Cyrix
MediaGX processor cannot support operating systems such as windows XP and later versions due to compatibility issues. This processor was developed during the release
9 period of Microsoft Windows 3.11 workgroups. As a result, Windows 3.11 is the most suitable and appropriate operating system to accomplish tasks and for this project. To implement the application Fingerprint verification system, Borland c++ 3.1 compiler
/IDE (Integrated Development Environment) is used and it is also compatible to the windows 3.11 [1][6].
10
Chapter 3
ZF MICROSYSTEM BOARD
This chapter provides information about features of the ZF Microsystem board and the peripherals.
3.1 Overview
Figure 3.1 ZF Microsystem Board
ZF Microsystem board is specially designed with the network and video-ready system with choice of ZFx86-Family system-on-chip such as ZFx86, ZFx86-Lite, ZFx86-
TV, or ZFx86-LCD. The basic features of board are peripheral connections such as
11 parallel and serial ports, IDE disk drive, Floppy disk drive, 10/100 Base-T Ethernet, two or more PCI expansion slots, two ISA expansion slots, two USB ports, PS/2 Keyboard and mouse [7].
3.2 Hardware Configuration
3.2.1 Parallel Port
Figure 3.2 Interface Cable (26 pin to 25 pin)
ZF Microsystem board has 26 pin parallel port interfaces being an embedded based system at the base address of 0x0378. HP932c printer is used to show the successful installation of Windows 3.11 operating system. This printer has IEEE 1284-
Compliant I/O interface. In general computers the parallel port interface has 25-pin connectivity. In order to connect the printer with the board an interface cable is used [7].
3.2.2 Memory
ZF Microsystem board is designated with the 168-pin PC100-compliant compliant DIMM SDRAM. SDRAM uses a clock to synchronize both input and output signals. The clock is coordinated with the CPU clock so that the timing of the memory chips and the CPU are in synchronization. Synchronous DRAM saves time in executing
12 commands and transmitting data, thereby increasing the overall performance of the computer. SDRAM allows the CPU to access memory approximately 25 percent faster than EDO memory. A 64 MB PC100-compliant SDRAM is used on the board due to the hardware configuration limitation [7][9].
3.2.3 Hard Drive
ZF Microsystem board supports a 3.5” 40-pin IDE 0 and 2.5” 44-pin IDE 1 connectors. In this project a 20GB IDE based hard drive is used. This board also supports
ATA 33 based up to 4GB of hard drive [7].
3.2.4 Power Supply
ZF Microsystem board requires a power source of 220V at 50Hz, or 117VAC at
60Hz. This board needs an ATX power supply which could power on both board and hard drive. Both the system and the hard drive require twelve volts, five volts and ground source connection.
Here in this project both board and hard drive are switched ON using
ATX power supply. For protecting and increasing the mobility of the board an adapter is used by splitting power from one adapter to support both the system board and hard drive, but this method couldn’t switch them on, so two adapters are used [7][8].
13
Chapter 4
FINGERPRINT BASED VERIFICATION SYSTEM
4.1 Features of Finger Prints
A print is not only made of a collection of features which are majorly classified into four types [5]. a). Arch: The lines are going like waves from one site to other site. b). Tent arch: Similar to the Arch but with a rising stick in the middle. c). Loop: Lines coming from one site return in the middle of the same side. d). Whorl: Composed with all the above features
Figure 4.1 Types of Finger Prints
Figure 4.2 Fingerprint features
14
4.2 Fingerprint Verification System
This fingerprint verification system shown in Figure 4.3 compares the fingerprint input image with the one which is stored in the database [10]. Figure 4.4 shows the design flow.
Figure 4.3 Block diagram of a basic Fingerprint Verification System
15
Figure 4.4 Flow chart of Verification process
16
4.3 Minutiae Based Fingerprint Matching Technique
Minutiae based techniques first find minutiae points and then map their relative placement on fingerprint images and they require considerably good images. Minutiaebased techniques don’t require precise locations of registration point and are not affected by image translation and rotation . The main advantage of Minutiae-based techniques is reduction of template size. Many fingerprint based authentication systems store images in a compressed form, in which they occupy approximately 10 Kbytes. A more compact way to store the important features of fingerprint is to extract minutiae points. They occupy only 300-1200 bytes depending upon the software used [5][10].
In this project the inputs to the fingerprint verification system are the fingerprint image BMP file and its minutiae data text file. The output of the system tells if the match is found or not and also produces the color inverted images of the input and the template fingerprint images.
4.4 Bitmap File Format
BMP File Header
Bitmap Information
General information about the BMP file.
Detailed information about the bitmap image.
(DIB header)
Color Palette The definition of the colors being used for indexed color bitmaps.
Bitmap Data The actual image data, pixel by pixel.
Table 1: Bitmap image format
17
OFFSET SIZE PURPOSE
#
Eh
12h
4
4
The size of this header (40 bytes)
The bitmap width in pixels (signed integer).
16h
1Ah
1Ch
4
2
2
The bitmap height in pixels (signed integer).
The number of color planes being used. Must be set to 1.
The number of bits per pixel, which is the color depth of the image.
The compression method being used. 1Eh
22h
4
4
26h 4
The image size. This is the size of raw bitmap data not the file size.
The horizontal resolution of image (pixels per meter, signed integer).
2Ah
2Eh
32h
4
4
4
The vertical resolution of image (pixels per meter, signed integer).
The number of colors in color palette, or 0 to default to 2^n.
The number of important colors used, or 0 if every color is important; generally ignored
Table 2: BMP header format (54 bytes)
Bitmap files are stored in a device independent format so that they can be displayed in any display device. BMP images file format shown in table 1 is structured by
18 using the bitmap file header, bitmap information header, palette color table, and array of bytes representing the bitmap bits also known as data offset. The Bitmap file header format is shown in table 2 [13][18].
The code which is used to retrieve File size, ImageWidth, ImageHeight, Number
Of Colors of the BMP file are shown below, where “SEEK_SET” is a macro pointing to the starting location of a bitmap file, “noof_chars” is the total size in bytes, “filesize” is the value which is image height utilized to manipulate .bmp image. imageHeader.size = get_imageinfo(ipfbmp, filesize_offset, noof_element_filesize); imageInfoHeader.width = ( int )get_imageinfo(ipfbmp, imgwidth_offset, noof_element_imgwidth); imageInfoHeader.height = ( int )get_imageinfo(ipfbmp, imght_offset, noof_element_imght); imageInfoHeader.ncolors = ( int )get_imageinfo(ipfbmp, noof_col_offset, noof_element_colors); imageHeader.offset = (14+40+4*imageInfoHeader.ncolors); dataSize = imageHeader.size - imageHeader.offset;
fseek(input_file, offset, SEEK_SET); for (i=1; i<=noof_chars; i++)
{
fread(char_pointer, sizeof ( char ), 1, input_file);
filesize = ( long )(value + (*char_pointer)*(pow(256, (i-1))));
}
4.4.1Color Transformations
Every pixel in an image usually has its own red, green and blue (RGB) color values which are captured using the below code. The fingerprint images are of gray scale with bit depth of 8, horizontal and vertical resolutions of 96dpi and the pixel values are either 256 or 0 [14][18].
The following code is used as an image processing example to inverse the fingerprint image. The image data offset values are sought and the value of the each pixel
19 is stored in the pixelValue. Depending on it the data value of that pixel is interchanged either to 0 or 256 and the value is written back into the outputbmp [14][18]. fseek(inputbmp, data_offset, SEEK_SET); fseek(outputbmp, data_offset, SEEK_SET); for (row=0; row<=imght-1; row++)
{ for (col=0; col<=imgwidth-1; col++)
{ fread(char_pointer, pixelValue = ( if (pixelValue == 0)
*(imageData + row*imgwidth + col) = ( else int sizeof ( char ), 1, inputbmp);
)*char_pointer;
*(imageData + row*imgwidth + col) = ( unsigned unsigned fwrite( (imageData + col + row*imgwidth), char char sizeof (
) 255;
) 0; char ), 1, outputbmp);
}
}
Figure 4.5 Input and Output fingerprint images
4.5 Minutiae Points
Extracting minutiae points are based on the principle of image discontinuity where two selected neighboring pixels are selected and considered to be discontinuous if they have different grey level. The possible properties that make a point as an minutiae are angular
20 attributes, its location with respect to the registration point (Core), the number of ridge line crossings, and the line which connects between minutiae and registration point and its slope. The format in which these minutiae data files are shown in Table 3. The first column of every minutiae file consists of either “0” or “1” which represents Bifurcation or Ridge ending. The second column represents the angle of that particular pixel where
Bifurcation or Ridge ending is formed. The third and fourth column represents their graphical location. The fingerprint verification processes the minutiae data which are already extracted and stored in the input file and also in the database files. The database consists of all minutiae data files of different people.
1 st Column
Where
2 nd Column
“0” Angle
3 rd Column
Row (X axis)
4 th Column
Column (Y axis) refers
Bifurcation and
“1” refers Ridge
Ending
Table 3: Minutiae File Format
Figure 4.6 shows the extracted minutiae points plotting which is displayed on the screen using the graphics library present in the C compiler. Here arrays xsort and ysort consists the x and y coordinate values. The respective code for implementing it is below: for (p1_i=0;p1_i<tot;p1_i++)
{
fillellipse(xsort[p1_i],ysort[p1_i],1,1);
}
21
Figure 4.6 Plotting of extracted Minutiae points
4.6 Estimation of Effective Region
Estimation of effective region is the process which is used for reconstruction of the orientation field of fingerprint. It is used to improve the estimation of orientation field, especially for poor-quality fingerprints, and the coefficients of the orientation field model can be saved for use in the matching step. Therefore combining orientation field with the minutiae information, a much better identification performance can be expected.
But here we have only the Minutiae point data, so an envelope which can hold the minutiae points is formed to find the effective region [12].
The boundary minutiae points are used for drawing the effective region shown in
Figure 4.7. Here the sorted minutiae points are given as input to search for the boundary points in increasing order.
22
Figure 4.7 Illustration of the effective region estimation [12].
The above envelope is displayed on the screen using the graphics library present in the C compiler. Here the original image is being placed together with the output envelope display. This envelope is drawn using the following code: minx = xsort[0]; miny = ysort[0]; for (p1_i=1;p1_i<tot;p1_i++)
{ if (ysort[p1_i] != miny && xsort[p1_i] < minx)
{ line(xsort[p1_i],ysort[p1_i],minx,miny); minx = xsort[p1_i]; miny = ysort[p1_i];
}
} maxx = minx; maxy = miny; minx = xsort[0]; miny = ysort[0]; for (p1_i=1;p1_i<tot;p1_i++)
{ if (ysort[p1_i] == miny)
{ line(xsort[p1_i],ysort[p1_i],minx,ysort[p1_i]); minx = xsort[p1_i];
}
}
23 for (p1_i=1;p1_i<tot;p1_i++)
{ if (ysort[p1_i] != miny && xsort[p1_i] > minx)
{ line(xsort[p1_i],ysort[p1_i],minx,miny); minx = xsort[p1_i]; miny = ysort[p1_i];
}
} line(minx,miny,maxx,maxy);
In the above code the flow starts from top to bottom. The least value in array is considered first and next point is checked whether it is smaller than the previous point or not, if so a line is drawn using the present and previous points this process is repeated for the values greater than that of the least value. Once the top and bottom values of both sides are known they are joined. The below example result shows the minutiae points considered for drawing the boundary points.
24
Figure 4.8 Experimental Results of Minutiae Matching
4.7 Why the Polar Coordinate System?
The existence of non-linear deformation of fingerprints, is an inherent property of fingerprint images, and this prevents exact recovery of each input minutiae with respect to its corresponding minutiae in the template. Therefore radial properties of fingerprint impression could be used so that one can overcome the adverse effect caused by shift and
25 rotation in fingerprint matching, during the fingerprint image minutiae extraction process.
Therefore, matching of the minutiae sets is done in the polar space, where one does not have to consider the translation between the input and template images in polar coordinates [11][21].
The input file and template file consists of X and Y coordinates and angle of rotation of the minutiae points according to the minutiae file format. The input file data are converted into the polar coordinate system. Here the Origin is considered as reference point for polar conversion. The equations (1) (2) and (3) are used for converting rectangular form to polar form [11][21]. 𝑟𝑖 = √{(𝑥𝑖 − 𝑥𝑟𝑒𝑓)^2 + (𝑦𝑖 − 𝑦𝑟𝑒𝑓)^2} (1) 𝑒𝑖 = tan −1 ( 𝑦𝑖−𝑦𝑟𝑒𝑓 𝑥𝑖−𝑥𝑟𝑒𝑓
) (2) 𝜃𝑖 = 𝜃𝑖 − 𝜃𝑟𝑒𝑓 (3)
The above equations written in the code form are given below: for (p1_g = 0; p1_g < p1_ci; p1_g++)
{ p1_tx = p1_x_input_minutia[p1_g]; p1_ty = p1_y_input_minutia[p1_g]; p1_ttheta = p1_z_input_minutia[p1_g]; p1_ftmp1 = (p1_tx - REF_X) * (p1_tx - REF_X); p1_ftmp2 = (p1_ty - REF_Y) * (p1_ty - REF_Y); p1_sumt = p1_ftmp1 + p1_ftmp2; p1_rp_polar_input[p1_g] = sqrt (p1_sumt); p1_ft1 = (p1_tx - REF_X); p1_ft2 = (p1_ty - REF_Y); p1_ep_polar_input[p1_g] = atan ((p1_ft2/ p1_ft1)); p1_zp_polar_input[p1_g] = (p1_ttheta - REF_THETA);
}
26
4.8 Reconstruction of Orientation
The Minutiae points are always distributed non-uniformly on the fingerprint and as there are only few minutiae sets the virtual minutiae points are produced by interpolation method. These virtual points are produced using a group of neighboring minutiae points. Here we use Delaunay Triangulation method [20]. The triangles are drawn using the total minutiae set points Mi = {M1, M2, M3, M4,…..,Mn} where the
M1, M2, M3,… are minutiae points, P represents the virtual minutiae location in the below diagram. It uses 3 sets of neighboring points to construct a virtual point with less skinny triangles. The virtual point is designed assuming that it presents the third dimensional space besides the X and Y two dimensional axis used to locate minutiae points [4][16].
Figure 4.9 Computation of pixel in triangle [12].
The input file which has minutiae points is sorted in increasing order 0 to n x coordinates in xsort array and y coordinates in ysort array using the insertion sort
27 technique. Now xsort and ysort array values are picked as the vertices of the triangle where p1_i starts from 0 to (n-2), p1_j starts from 1 to (n-1) and p1_k starts from 2 to n.
The initial condition checks that the p1_j and p1_k are not same, to avoid all the three points in the same line. Now the normal value is calculated for the respective triangle to be formed using the (x, y) and the distance of (x, y) from reference point (Origin). The normal value (zn) which is cross product of the two vertices, if is less than 0 this prevents the checking of triangles twice so that for all the other points is not located in the triangle.
Now the normal values are checked with the other points present in the arrays using the dot product. The flag value is one initially and if the dot product of the points is greater than 0 those points form the triangle. Once this condition is satisfied the 3 points are considered to form a triangle. The logical implementation of Delaunay triangulation is as follows: for (p1_i=0;p1_i<(tot - 2);p1_i++)
{ for ( p1_j = (p1_i+1); p1_j < tot; p1_j++ )
{ for ( p1_k = (p1_i+1); p1_k < tot; p1_k++ )
{ if ( p1_j != p1_k )
{
xn = ((ysort[p1_j]-ysort[p1_i])*(distance[p1_k]-distance[p1_i])) -
((ysort[p1_k]-ysort[p1_i])*(distance[p1_j]-distance[p1_i]));
yn = ((ysort[p1_k]-ysort[p1_i])*(distance[p1_j]-distance[p1_i])) -
((xsort[p1_j]-xsort[p1_i])*(distance[p1_k]-distance[p1_i]));
zn = ((xsort[p1_j]-xsort[p1_i])*(ysort[p1_k]-ysort[p1_i])) -
((xsort[p1_k]-xsort[p1_i])*(ysort[p1_j]-ysort[p1_i])); if (zn < 0)
{
flag = 1; for (p1_m = 0; p1_m < tot; p1_m++)
flag = flag && (((xsort[p1_m]-xsort[p1_i])*xn + (ysort[p1_m]ysort[p1_i])*yn + (distance[p1_m]-distance[p1_i])*zn) >= 0);
} if (flag == 1)
28
{
p1_xmed = (xsort[p1_i] + xsort[p1_j] + xsort[p1_k])/3;
p1_ymed = (ysort[p1_i] + ysort[p1_j] + ysort[p1_k])/3;
d1 = sqrt((xsort[p1_i] - p1_xmed)*(xsort[p1_i] - p1_xmed) +
(ysort[p1_i] - p1_ymed)*(ysort[p1_i] - p1_ymed));
d2 = sqrt((xsort[p1_j] - p1_xmed)*(xsort[p1_j] - p1_xmed) +
(ysort[p1_j] - p1_ymed)*(ysort[p1_j] - p1_ymed));
d3 = sqrt((xsort[p1_k] - p1_xmed)*(xsort[p1_k] - p1_xmed) +
(ysort[p1_k] - p1_ymed)*(ysort[p1_k] - p1_ymed));
}
}
}
}
}
The virtual point generated is the centroid formed using the 3 minutiae points as the vertices of the triangle. The direction of produced virtual minutiae is determined by calculating the Euclidean distance between the centroid and the respective vertices of triangle here d1, d2, d3. The direction of the vertex which is nearest to the virtual minutiae is considered as its direction of orientation. The direction of the virtual minutiae estimating is done using the Equation (4), Equation (5), Equation (6) and Equation (7)
[12].
1.
Direction of Pixel equation
For each of the minutiae points which are forming the triangle its direction of orientation is calculated using the Equation (4) and the following code is for vertex A:
if (zsort[p1_A] > 360)
tk = zsort[p1_A] - 360; else
tk = 360 - zsort[p1_A]; if (zsort[p1_A] < 180)
29
tk = zsort[p1_A]; else tk = zsort[p1_A] - 180;
Here an assumption is taken that all orientation angles are in increasing order and
θ1 ≤ θ2 ≤ θ3 since they are rotationally symmetric.
2.
Exchange of Denotation equation
The ridge line orientation should be in the range of the [0, π) which could be done using the Equation (5) [12]. The respective code for implementing the above equation is given below: if (ti <= tj && ti <= tk){
ti2 = ti; if (tj <= tk){
tj2 = tj; tk2 = tk; } else {
tj2 = tk; tk2 = tj;
}
} else if (tj <= ti && tj <= tk){
ti2 = tj; if (ti <= tk){
tj2 = ti; tk2 = tk; } else {
tj2 = tk; tk2 = ti;
}
} else { if (ti <= tj){
ti2 = tk; tj2 = ti; tk2 = tj; } else {
ti2 = tk; tj2 = tj; tk2 = ti;
}
30
}
The direction of orientation is calculated and placed accordingly using the
Equation (6) and Equation (7) [12].
3.
Direction of Orientation equation
4.
Equation for Range of Orientation value
The code for above equations is given below, where θ p
represents the final virtual minutiae orientation value: deno = ((d1*d2) + (d2*d3) + (d3*d1));
θp = ((d2*d3*ti2)/deno) + ((d3*d1*tj2)/deno) + ((d1*d2*tk2)/deno); if (itp>-90 && itp<0)
θp = 180 + θp; if (itp>=0 && itp<180)
θp = θp; if (itp>=180 && itp<270)
θp = 360 - θp;
31
4.9 Alignment of Minutiae Data
The alignment of the data is done using the insertion sorting. This is a comparison sorting which is very efficient, adaptive and stable. The elements are sorted into the correct order (here in increasing order) until all input elements are checked. The algorithm divides the array into two parts: one is sorted and the other is unsorted. Here the first element is picked up and placed in the perfectly sorted position. This continues until all elements get sorted [15][17]. The implementation of code for this algorithm is shown below: for (p1_k = 0; p1_k < p1_ci; ++p1_k)
{ item_to_insert1 = p1_zs_polar_input[p1_k]; item_to_insert2 = p1_rs_polar_input[p1_k]; item_to_insert3 = p1_es_polar_input[p1_k]; p1_j = p1_k - 1; still_looking = 1; while ((p1_j >= 0) && (still_looking==1))
{ if (item_to_insert1 < p1_zs_polar_input[p1_j])
{
p1_zs_polar_input[p1_j + 1] = p1_zs_polar_input[p1_j];
p1_rs_polar_input[p1_j + 1] = p1_rs_polar_input[p1_j];
p1_es_polar_input[p1_j + 1] = p1_es_polar_input[p1_j];
p1_zs_polar_input[p1_j] = item_to_insert1;
p1_rs_polar_input[p1_j] = item_to_insert2;
p1_es_polar_input[p1_j] = item_to_insert3;
--p1_j;
} else
{ still_looking = 0; p1_zs_polar_input[p1_j + 1] = item_to_insert1;
p1_rs_polar_input[p1_j + 1] = item_to_insert2;
p1_es_polar_input[p1_j + 1] = item_to_insert3;
}
}
}
32
4.10 Variable Sized Window Logic
The variable sized window logic deals the non linear deformation of the fingerprint images, where the window size is changed according to the changes in the radius and angle values. The Equation (8) is used for calculating the differences of the radius, polar angle and the angular orientation of the input and the template fingerprint minutiae data [11][20].
5.
Equation for calculating difference
The code for above equations is follows:
p1_diff_r = p1_tr - p1_ir;
p1_ftmp = p1_te - p1_ie;
p1_ftmp += 360.0; if (p1_ftmp > 360.0) p1_a = p1_ftmp - 360.0; else p1_a = 360.0 - p1_ftmp; if (p1_a < 180.0) p1_diff_e = p1_a; else p1_diff_e = p1_a - 180.0;
p1_ftmp = p1_ttheta - p1_itheta;
p1_ftmp += 360.0;
33 if (p1_ftmp > 360.0) p1_a = p1_ftmp - 360.0; else p1_a = 360.0 - p1_ftmp; if (p1_a < 180.0) p1_diff_theta = p1_a; else p1_diff_theta = p1_a - 180.0;
After the difference values are calculated, they are checked against the empirical values DEL_REF (its value is 15), the SI_REF (its value is 16), the EPS_REF (its value is 30) and OHM (its value is 620) [11]. In this window logic, every value present in that particular row (n) is checked with row (n-1). Here due to the concern of memory storage the checking is done by using the shifting of rows one after the other [11]. The code for calculating the distance of minutiae positions in the window is given below: window_flag = 0; if ((p1_diff_r < DEL_REF) | (p1_diff_e < SI_REF) |(p1_diff_theta <
EPS_REF))
{ window_flag = 1;
} if (window_flag == 1)
{
e window = (ALPHA * p1_diff_r); window += (BETA * p1_diff_e); window += (GAMMA * p1_diff_theta);
} lse window = OHM;
}
{
dist_m1_n = edit_temp1[p1_n] +OHM;
dist_m_n1 = edit_temp2[p1_n-1] +OHM;
dist_m1_n1 = edit_temp1[p1_n-1] +window;
dist_m_n = 0.0; if if
(dist_m1_n < dist_m_n1) dist_m_n = dist_m1_n; else dist_m_n = dist_m_n1;
(dist_m1_n1 < dist_m_n) dist_m_n = dist_m1_n1;
34
edit_m_n = dist_m_n;
4.11 Minutiae Matching Algorithm
Each minutiae point present in the template data is taken as the reference point and is compared with the input minutiae data. If the reference point and the input minutiae point have the same ridge values then they are considered as one matched pair.
This process of comparison goes on until all minutiae points present in the template are matched with the input minutiae points. The percentage of the input minutiae data matching with template data is calculated using Equation (9) [19] and the percentage value which is greater than 95% is taken into consideration and declared has the match for the input fingerprint image. If the value is less than assumed value next template from the database is brought for verification. Due to the use of the minutiae point comparison method the computation cost, memory used for storing the fingerprint image data are reduced and the speed of the whole verification process is increased [11][19][20].
6.
Equation for Match percentage Calculation
4.12 Experimental Result
Figure 4.9 shows the final experimental results of the minutiae matching implemented in this project. The output bmp file of the color transformed fingerprint
35 image is formed in the in the debug folder, its size, width, height and data size are displayed. The total number of the input minutiae sets and template minutiae sets are given. The matching percentage value and the number of matching minutiae pairs in input and template file are displayed. Here the matching percentage value is 100% as the number of matching pairs found is only 155 out of 155 input minutiae points. The program displays result as 100% because it detects input file in the database. The program checks for only for the minutiae points which is local minutiae matching, to make it global the orientation feature of the fingerprints should be taken into consideration for matching. By fusing both minutiae and reconstructed orientation matching techniques the program could be made global.
36
Figure 4.10 Experimental Results of Minutiae Matching
37
Chapter 5
LIMITATIONS
Cyrix MediaGX based Embedded System and Fingerprint verification application has both the software and hardware limitations. This project work only accepts images with image height and width less than or equal to 128. This is directly related to the hardware limitation because ZF Microsystem has only 64 Megabytes Dynamic Random
Access Memory. Due to this any image greater than the size of 128 x 128 cannot be processed. Any fingerprint image calculations which require more than 64 Megabytes of dynamic memory access cannot be done due to insufficient memory. The power connections to the ZF Microsystem and the hard drive require twelve volts, five volts and ground. Two separate sources of power supply are used to switch on the system and hard drive. All these constraints get consideration for matching and reconstruction of orientation design using the minutiae points which need excessive amount of calculations.
38
Chapter 6
CONCLUSIONS
The primary goal of this project is to build an application using fingerprint to verify identity of a particular person. This application is specifically built for ZF
Microsystem based embedded system which can be utilized as a security for information.
There are still lots of methods in improving fingerprint verification process by which one can improve speed of verification system, use less memory which will provide highest matching results. In this project, I have successfully implemented fingerprint verification process which can verify a person’s identity with the past information provided by him/her while registration. In addition to this, I have implemented the algorithms to reconstruct the orientation of image which can be helpful to verifying process. A next level of reconstruction of orientation and matching technique can be implemented for more accurate results.
39
BIBLIOGRAPHY
[1] Policy PCTechGuide, “Cyrix MediaGX”, 1998 - 2009. [Online]. Available: http://www.pctechguide.com/24Cyrix_MediaGX.htm. [Accessed: April. 14, 2010].
[2] Linda Ashmore, “Takaoka uses Cyrix MediaGX? Processor in Japan’s First Windows
Based Terminal”, National Semiconductor News release, Oct. 7 th
1998.
[3] [Online]. Available: http://web.archive.org/web/19970726015451/www.cyrix.com/process/prodinfo/mediagx/ gx-mb.htm. [Accessed: April. 14, 2010].
[4] Joseph O’Rourke, “Computational Geometry in C”, Cambridge University Press, 2 nd
Edition, pp 188-192, 1998.
[5] Davide Maltoni, Dario Maio, Anil K. Jain, Salil Prabhakar “Handbook of Fingerprint
Recognition”, Springer publishing company, pp 1-52, pp 131-172, 2003.
[6] J. Hruska, “Microsoft puts Windows 3.11 for Workgroups out to pasture”, Nov. 1998.
[Online]. Available: http://arstechnica.com/hardware/news/2008/11/microsoft-putswindows-3-11-for-workgroups-out-to-pasture.ars. [Accessed: April. 14, 2010].
[7] [Online]. Available: http://www.zfmicro.com/zfx86.html. [Accessed: April. 15,
2010].
[8] [Online]. Available: http://www.fonerbooks.com/r_power.htm. [Accessed: April. 15,
2010].
40
[9] [Online]. Available: http://www.dewassoc.com/performance/memory/pc100_std.htm
[Accessed: April. 15, 2010].
[10] L. C. Jain, U. Halici, I. Hayashi, S. B. Lee, S. Tsutsui, “Intelligent Biometric
Techniques in Fingerprint and Face Recognition”, CRC press, pp 3-34, 1999.
[11] Yuliang He, Jie Tian, Xiping Luo, Tanghui Zhang, “Image enhancement and minutiae matching in fingerprint verification”, Pattern recognition Letters 24, pp 1349-
1360, 2003.
[12] Fanglin Chen, Jie Zhou, Senior Member, IEEE, Chunyu Yang, “Reconstruction
Orientation Field from Fingerprint Minutiae to Improve Minutiae-Matching Accuracy”
IEEE Transactions on Image Processing, VOL.18, NO.7, JULY 2009.
[13] David Charlap, “BMP file Format, part 1”, Dr. Dobb’s journal, Vol. 20, No. 3, pp
44-49, Mar 1995.
[14] Michael Seul, Lawrence O’Gorman, Michael J. Sammon, “Practical Algorithms for
Image Analysis Description, Examples and Code”, Cambridge University Press, pp 21-
55, 2000.
[15] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein,
“Introduction to Algorithms”, 2 nd edition, pp 16-21, 2001.
[16] William H. Press, Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery,
“Numerical Recipes the Art of Scientific Computing”, Cambridge University Press, 3 rd edition, pp 1131 - 1148, 2007.
[17] Aaron M. Tenenbaum, Yedidyah Langsam, Moshe J. Augenstein, “Data Structures using C”, Prentice Hall, 2 nd edition, pp 365-372, 1989.
41
[18] David Charlap, “BMP file Format, part 2”, Dr. Dobb’s journal, Vol. 20, No. 4, pp
34-39, April 1995.
[19] Neil Yager, Adnan Amin, “Fingerprint alignment using a two stage optimization”,
Pattern Recognition Letters 27, pp 317 – 324, 2006.
[20] Giuseppe Parziale, Albert Niel, “Fingerprint Matching using Minutiae
Triangulation”, Institute of Digital Image Processing, Joanneum Research, Wastiangasse
6, A-8010, Graz, Austria.
[21] Torrence, Bruce Follett, Eve Torrence, “The Student's Introduction to Mathematica” ,
Cambridge University Press, pp 208-212, 1999.