Java Client Side Program

Below you will find the source code to the server side part of the project. The code is not yet fully commented. Below you will find a short explanation of each file included and also a usage guide.

Networked Biometric Authentication Java Code(click to download)

Usage:

The easiest way to run the project as of yet is to use Netbeans to open the project editor and run it through that. However, any other Java IDE would work, or even command line interface should suffice. Also make sure that you have the latest versions of Java installed. The main project file to run is FingerprintProjectMain.java. When you run this you will see an initial window similar to this:

You first want to set the Host IP to that of your Wiznet serial to Ethernet converter or equivalent. Next you would set the port number of that same device. After that click connect. Once the fingerprint capturing microcontroller is up and running, click on capture image to start the process. After you click on this a user will be able to type in their ID and send it over to the PC. Once that is recieved it will be verified against the user's basis prints and send back the results. To repeat this simply click capture image again.
However, if a user is not already in the database, you can then add them in. First, make sure that their ID is typed into the "Name(ID)" text field and then click on Create/Update User. This will add them as a user to the database. The next thing you will do is click on Add Reference Image. This adds the fingerprint that you just took to that persons basis profile. You can continue to scan and repeat this process until you feel you have a sufficient number of basis images.

Those were the basic steps for using this authentication program. The GUI also supports saving and loading of fingerprints. It supports the modification of authentication parameters. You are also able to run tests on large sets of data to observe the FRR and FAR ratios in respect to your authencation parameters.

One last thing to note is that you will need to set up your own database called Minutiae.mdb. We used a MS Access database for this project, so if you would like to change that you will need to modify source code. To create your Minutiae.mdb please follow steps pertaining to setting up a DSN database in your control panel (if using windows, if not search on the internet for how to set up a DSN database for your ODBC).

Please use the software at your own risk! While we have never encountered any major problems while using the program, that does not mean that none do not potentially exist, and I reiterate, any use of this software is at the users own risk and liability. If you have any general questions feel free to contact either Peter Greczner (pag42@cornell.edu) or Matthew Rosoff(msr53@cornell.edu).

 

File Explanations:

CompareManager.java - Holds functions to compare fingerprints and sets of users
ConstantPanel.java - JPanel extension for the GUI, used to change the authentication constants
DataPaintPanel.java - JPanel exension that paints an array of pixel data
DatabaseManager.java - File that performs all database operations
DatabasePanel.java - JPanel extenstion that displays user information retrieved from the database
DetectionLibrary.java - Holds functions that perform minutiae finding algorithms on a skeleton image
FilterLibrary.java - Holds functions that perform image filtering algorithms
FingerprintImporter.java - Not used in the later versions
FingerprintProjectMain.java - Main application file that you use to run the program
ImageLib.java - Not used in the later versions
ImageManipulation.java - Not used in the later versions
Minutiae_Polar.java - Class representing minutiae data in polar coordinates
Person.java - Class representing a "person"; a person is basically one single minutiae data set
Point_Polar.java - Class represnting a point in polar coordinates
SocketThreader.java - Class that handles all of the socket communication and interfacing with the microcontroller
Testing.java - Program used to test any function that you want
User.java - Class used to represent a "user"; a user is an ID associated with a list of basis minutiae(persons)
m_constants.java - Static declarations of authentication constants
match_algor.java - Class that holds the minutiae matching algorithms
minutiae.java - Class representing a minutiae