Sunday, August 01, 2010

A framework in C# for fingerprint verification

Introduction
Fingerprint recognition [1] is an active research area nowadays. An important component in fingerprint recognition systems is the fingerprint matching algorithm. According to the problem domain, fingerprint matching algorithms are classified in two categories: fingerprint verification algorithms and fingerprint identification algorithms. The aim of fingerprint verification algorithms is to determine whether two fingerprints come from the same finger or not. On the other hand, the fingerprint identification algorithms search a query fingerprint in a database looking for the fingerprints coming from the same finger.
There are hundreds of papers concerning to fingerprint verification but, as far as we know, there is not any framework for fingerprint verification available on the web. So, you must implement your own tools in order to test the performance of your fingerprint verification algorithms. Moreover, you must spend a lot of time implementing algorithms of other authors to compare with your algorithms. This was our motivation to put our fingerprint verification framework available for everyone.
The most closely related work to our framework is the FVC-onGoing web system. This system has the following limitations:
You do not have access to any algorithm but yours.
It is not a framework; so, you cannot reuse any software component.
It cannot be used with educational purpose because students cannot see how the algorithms work.
After performing an experiment using a database (standard or hard) you must wait 30 days to perform another experiment using the same database.
You do not have control over the fingerprint databases. Thus, you cannot use your own databases neither modify the existing ones.
You do not have access to the fingerprints that your algorithm fails matching. Hence, you cannot analyze why the algorithm fails in order to fix your code.
You cannot create an experiment with a custom protocol for performance evaluation.
If any of the above mentioned limitations constitute a problem for you, then you should use our framework.
Our framework is implemented in C# with .Net Framework for two main reasons. First, C# has become one of the most popular programming languages. Second, the technologies, tools and class libraries available on .Net Framework save us a lot of time of coding.
Our framework allows performing fingerprint verification experiments for databases B of FVC2000, FVC2002 and FVC2004; and databases A of FVC2004. In this experiments, we use the performance indicators of the Fingerprint Verification Competitions [2] (EER(%), FMR100(%), FMR1000(%), ZeroFMR(%), Time(ms) and ROC curves). Additionally, you can include experiments with a custom evaluation protocol or different databases.
We implemented the fingerprint verification algorithms proposed by Tico and Kuosmanen [3], Jiang and Yau [4], Medina-Pérez et al. [5] and Qi et al. [6]. It is important to highlight that, despite the algorithm of Qi et al. is a combination of a minutiae matching algorithm with an orientation based algorithm, we implemented only the minutiae matching algorithm. This framework allows you to include new fingerprint matching algorithms as well as new feature extraction algorithms with minimum effort and without recompiling the framework.
One of the goals that we kept in mind while developing this framework was to achieve class interfaces as simple as possible. This way, adding new algorithms is pretty straightforward.
Read more: Codeproject