Tuesday, March 31, 2009

Fingerprint Recognition with Neurotechnology

Since our company, Mozcom, bagged the distributorship of Neurotechnology products in the Philippines, I've been spending some time understanding their software development kits (SDK) and programming models. We were introduced to Neurotech because of the Department of Health (DOH) Integrated Drug Testing Operations Operations Management Information System (IDTOMIS) project. In a nutshell, its a drug testing system where biometrics are acquired in order to accurately identify the person being tested. The developers, Qsys, used Neurotech's Megamatcher SDK for the application.

Writing code for fingeprint identification or verification is nothing new to me. I've been writing code using the DigitalPersona Platinum SDK for 4 to 5 years now, starting with a simple biometric timekeeper, and graduating into a complex client/server system called NetSecure that can support multiple input devices like RFID readers, smart card readers, pinpads, barcode readers, and controlling physical access through electro-mechanical relays and electric locks.

DigitalPersona has recently revamped their SDK. Unlike before wherein you have to buy either the Gold SDK (for C/C++ developers) or the Platinum SDK (for Visual Basic/Studio developers), now they are giving away their One Touch SDK. So I guess they're moving into the model of giving-away-the-razors-to-sell-more-razor-blades. They probably figured that with more people writing code for their scanners, their hardware sales should compensate the loss for the SDK sale. That is a big relief for programmers as the SDK was quite pricey -- about USD1,500 for the Platinum SDK.

One great thing about the DigitalPersona SDK though is its royalty-free runtime license. You can develop an application with it and deploy as many as you want without having to buy any license for deployment -- you just buy the scanner. So even though Doc T has been bugging me to learn more about Neurotech's products, I was hesitant at first because it involves runtime licenses, over-and-above the cost of the SDK. But I eventually decided to take the plunge to know more about their products -- especially since fingerprinting is getting common and I wanted to venture into facial recognition, of which Neurotech also has a solution.

Below are some of the advantages that I found developing using the Neurotech VeriFinger SDK.


  1. The VeriFinger SDK is a stripped-down version of the Megamatcher. It supports only fingerprint identification and scans about 5,000 fingerprints per second. This is actually pretty fast in comparison to the DigitalPersona (DP) SDK. With the NetSecure deployments that we've had where users numbered in the hundreds, doing a template-to-template comparison with DP SDK is really, really slow. You can realistically only use DP SDK to do brute force matching of maybe 50 templates or less. In contrast, Neurotech's performance is more of what I needed. (The latest Megamatcher 3.0 already claims a speed of 40,000 fingerprint matches per second.)

  2. The VeriFinger supports lots of 3rd party scanners. Obviously, the DP SDK only supports the DigitalPersona U.are.U series of scanners that they also manufacture. Not that there's anything wrong with these scanners. In fact, we've been pretty happy supporting the sale of DP Scanner in the Philippines as a DigitalPersona reseller. But for customers who require other brands of scanners, VeriFinger is the way to go. It supports more than 45 fingerprint scanners including drivers for Windows, Linux and Mac OS X. DigitalPersona only started supporting Linux fairly recently. The US Embassy in Manila and the Comelec are using other brands of scanners.

  3. One feature that the VeriFinger SDK has that DP SDK does not, is the ability to load a fingerprint image for feature extraction from a file. The DP SDK require that the image be captured directly from the scanner. But what if the fingerprint database is from a traditional index card system that needs to be scanned and migrated? Neurotech recommends that hardcopy prints be scanned at around 500dpi for accurate feature extraction and conversion to their template format.

  4. Neurotechnology uses their own proprietary template format. However, they provide all the necessary tools and add-ons to let your application comply with industry standards and formats (ex. NIST, WSQ). DP SDK does not provide such features. There are also several template formats to choose from -- the smallest one being only around 300 bytes, while the largest one at around 6,000 bytes. DigitalPersona templates are at around 700 bytes. While those figures are not really relevant when you are storing templates in large SQL databases, they do become important when you consider things like the Philippine governments' attempt to have a unified ID system that plans to embed the template onto a smart card chip, which are usually only a few hundred or kilobytes.

  5. And of course, if you plan to eventually support a multi-biometric system wherein you have to mix fingerprints with facial recognition, or iris recognition, then DP SDK becomes a dead-end. Neurotechnology's Megamatcher gives you that upgrade path to develop more complex systems.

No comments: