Fingerprint matcher module for DBOX
This library is a continuation of Preprocessing and Extraction modules, it fully supports the outputs from that libraries.
Dependencies:
- Qt5 / Qt Creator 4
- Suprema Scanner - the Suprema library works only with connected fingerprint scanner
The mentioned or newer versions are recommended
Getting Started:
- You need to provide valid paths to these libraries and their header files in
.pro
file. - Build and run the project to generate .so (.dll / .lib) files
- Include the library and header files to your own application
Identification
void identify(unsigned char* subjectISO, const QMultiMap<QString, unsigned char *> &dbISO);
void identify(const QVector<MINUTIA> &subject, const QMultiMap<QString, QVector<MINUTIA> > &db);
Verification
void verify(unsigned char *subjectISO, const QVector<unsigned char *> &dbISO);
void verify(const QVector<MINUTIA> &subject, const QVector<QVector<MINUTIA> > &db);
Database Test
int setDBTestParams(int numberOfSubject, int imgPerSubject);
void testDatabase(QMap<QString, QVector<MINUTIA> > &db);
void testDatabase(const QMap<QString, unsigned char *> &dbISO);
Optional
int setMatcher(MATCHER matcher);
Usage:
- If you want set the matcher, you can choose from Bozorth3 (default), Suprema or MCC
- If you want to identify a person, just call
identify(...)
- the subject is the person who you want to identify, the second parameter is a QMultiMap with persons againt whom you want to do the identification, the key each time is the persons name
- If you want to verify a person, just call
verify(...)
- the subject is the person who you want to verify, the second parameter is a QVector with a person againt whom you want to do the verification
- If you want to test a database, just call
testDatabase(...)
- first you must use the
setDBTestParams(...)
function and set the number of subject in your database and the number of fingerprint for each person in the database - the keys have to be different and logically named, e.g Person 1: 1_1, 1_2, 1_3 etc.; Person 2: 2_1, 2_2, 2_3 etc., where the first number is the persons ID, the second number is the ordinal number of the fingerprint
- first you must use the
SIGNALS:
identificationDoneSignal(bool success, QString bestSubject, float bestScore);
verificationDoneSignal(bool success);
dbTestDoneSignal(DBTEST_RESULT result);
matcherProgressSignal(int progress);
matcherErrorSignal(int errorCode);
Notice:
- The
identificationDoneSignal
tells you the identification succeed or not, it each time gives you the best match and the best score as second and third parameters - The
verificationDoneSignal
tells you the verification succeed or not - The
dbTestDoneSignal
gives you FMR, FNMR, EER results what you can plot to a graph - The
matcherProgressSignal
shows you the current progress during matching - You get
matcherErrorSignal
with the error code if an error occured during matching
A simple example how to use signals in your application
yourclass.h:
#include "matcher.h"
class YourClass: public QObject
{
Q_OBJECT
private:
Matcher m;
private slots:
void verificationDoneSlot(bool success);
}
yourclass.cpp:
#include "yourclass.h"
YourClass::YourClass()
{
connect(&m, SIGNAL(verificationDoneSignal(bool success)), this, SLOT(verificationDoneSlot(bool success)));
}
void YourClass::verificationDoneSlot(bool success)
{
if (success) qDebug() << Verification succeed
else qDebug() << Verification failed
}
For more please visit Qt Signals & Slots.