Quality of matching can vary from device to device, because each fingerprint reader has unique characteristics that require different matching parameters. I would like to make SourceAFIS work smoothly with every single fingerprint reader available on the market. There’s already quite a long list of tested fingerprint readers. In order to expand this list, I need your help. You might be a manufacturer seeking to tap into the growing market of SourceAFIS users. Or you might be a SourceAFIS user interested in maximizing match accuracy for the particular sensor you are using. Besides pure self-interest, you will be happy to know you are helping an opensource project get better. I will explain how fingerprint samples from various sensors help SourceAFIS achieve higher accuracy and how you can create and submit such samples. It’s simple, safe, and anonymous.
Sensor-specific fingerprint samples help me in two ways. First, they let me spot algorithm flaws that only manifest themselves on fingerprints from specific sensors. I can then use this information to improve core SourceAFIS algorithm. Second, fingerprint samples are used to automatically evaluate the overall SourceAFIS accuracy and to tune SourceAFIS parameters for maximum accuracy. The more samples I have, the better results I can achieve through automatic tuning. Obviously, it’s not practical for opensource developer to buy dozens of different fingerprint readers for testing. That’s why I am asking people to submit fingerprint images made with their favorite fingerprint scanner.
The tuning part deserves a little more explanation. SourceAFIS algorithm contains numerous constants that control various thresholds, coefficients, resolutions, and limits in the algorithm. These constants can be assigned reasonable values by hand, but I have found that automatically tuning these parameters can reduce the number of matching errors by more than 50% compared to manual configuration. Tuning process uses simple hill-climbing algorithm. It randomly changes the constants and checks whether the change improves accuracy. When better parameter configuration is found, it is remembered and the process repeats using the new parameters as a starting point for new search. Sample fingerprints are needed in this process for evaluating accuracy of particular parameter configurations. A list of matching and non-matching fingerprint pairs is created from sample database. SourceAFIS algorithm is applied to these fingerprint pairs and incorrect decisions are counted to determine error rates. Since this process unavoidably optimizes the algorithm for sensors used to create the fingerprint database, samples from a large number of different sensors are needed to make the algorithm perform well on a wide range of hardware.
Now you understand why fingerprint samples for your particular fingerprint reader are important and you would like to contribute some. How would you go about it? Ideally, you should use the standard layout of sample fingerprint databases. This means sampling each finger 10x, sampling all 10 fingers of a person, and supplying full fingerprint set of at least 1 person for each model of fingerprint reader to be included in the database. If you have just one fingerprint reader to support and you want to include only 1 person in the database, you should submit total of 100 fingerprints, i.e. 10 samples of every one of the 10 fingers. If you don’t have the time to do the full 100-print database, you can send me just a few samples, which is better than nothing, but the real value is in full 10×10 print databases.
Obviously you will need some software to capture the fingerprints. This might be provided as a desktop application by hardware vendor, but more often the vendor just gives you image acquisition SDK. Vendor’s SDK lets you retrieve raw fingerprint images from the device. The rest is up to you. Since SourceAFIS is mostly used by developers, I assume you can write the little bit of code needed to save the fingerprint images to files. Basically you need to write a little app that captures fingerprints using vendor’s image acquisition SDK and saves them as image files. Lossless BMP and PNG files are preferred, but JPG is also fine. You can use SourceAFIS to convert raw image to Bitmap or BitmapSource objects, which in turn support saving in standard image formats. By convention, fingerprint files are named XX_Y_Z.EXT, where XX is person number (skipped if you have just one person), Y is finger number (assigning numbers to fingers is up to you), Z is sample number (simply numbered from 1 upwards), and EXT is image file extension (i.e. BMP or PNG).
Once you have a directory full of fingerprints, just zip it and send it to me via free account on mailbigfile.com or other relay service for large attachments. You might wish to send me a small 3×3 database for evaluation before creating the full 10×10 database. I might catch issues with your samples before you commit time to do the full database. You can request to make your submission anonymous. You may even ask me to refrain from publishing the database you submit. In that case, I will use your database for evaluation and tuning, but it will not be published as part of SourceAFIS database download.
I am interested in all kinds of fingerprints. I would like to support all fingerprint readers on the market. Single flat fingerprints are preferred since SourceAFIS can process them unmodified. Multi-finger, rolled, ink, and sweep fingerprints are useful for future development, but they wouldn’t be used at the moment. High-quality scans are preferred since that’s the case in typical deployment with controlled enrollment process. Deliberately low quality fingerprints are an interesting challenge and they have a value for algorithm tuning, but standard quality fingerprints have higher priority. Fingerprints of elderly and children as well as fingerprints of workers with wet or dusty fingers are a welcome addition and a valuable source of variability in the database. Nevertheless, fingerprints from variety of fingerprint readers are my primary interest. Thank you for all your help.