Partindo do princípio de que o programador utiliza
GNU/Linux, vou explicar como funciona, e o usuário decide qual driver/biblioteca realmente vai usar.
Conceito de imagem:
O que o interessado deve entender é que basicamente, a tarefa do driver/biblioteca é SOMENTE extrair uma imagem do leitor biométrico e não comparar as digitais, ficando isso tarefa para outro sistema/aplicativo.
O que acontece com a
Libfprint é simples: a imagem obtida é de péssima qualidade, dificultando assim a extração e comparação dos dados biométricos que são também chamados de minúcia da digital (este assunto iremos abordar mais à frente).
Trabalhando a 5 anos com esse tipo de sistema, posso afirmar que é muito inconsistente trabalhar com a Libfprint. Tive a oportunidade de trabalhar com os drivers originais da DigitalPersona livres para GNU/Linux, que atualmente se encontram na versão 2 chamada U.are.U SDK 2 e pode ser obtida gratuitamente no site do próprio fabricante. Este é compatível com todos os leitores da DigitalPersona. Escolhi os leitores da DigitalPersona por um simples, porém não menos importante motivo: estes são utilizados pelo Detran, Auto Escolas e até em nossa Urna Eletrônica Brasileira. Resumindo em palavras: COMPATIBILIDADE, Ótima qualidade de imagem e ótimo funcionamento em
Linux.
Isso não impede de se utilizar outros leitores disponíveis no mercado. Basicamente, se foque na ideia de que o driver vai basicamente extrair a imagem da impressão digital do seu leitor biométrico e esta tem que ter uma qualidade mínima aceitável para um bom funcionamento.
Os primeiros passos para se desenvolver uma aplicação biométrica em Linux são:
- Baixar o driver do seu leitor (se for Digital Persona, pode ter acesso em: www.digitalpersona.com);
- Instalar na sua distribuição;
- Testar e ver se está extraindo a imagem.
Pode ser necessário a alteração de alguma função em C++, devido a complexidade, não tratarei deste assunto neste momento, mas vale lembrar que junto com o driver, normalmente acompanha um exemplo que você pode aproveitar para pelo menos extrair a imagem do leitor.
Extração de minúcias e comparação de digitais (motores independentes e livres)
Agora que você tem seu driver do leitor instalado e funcionando, temos que utilizar um programa para que você possa extrair as digitais e compará-las com outras. Este serviço é feito por outros programas. Alguns livres, alguns pagos. O fato é que quanto melhor o motor de extração e comparação, mais exata sua aplicação vai ser e menos erro vai ter. Em outras palavras, quanto mais eficiente o motor de extração e comparação, claro, mais confiável será o resultado final.
Alguns motores disponíveis:
- O do próprio driver (normalmente com chamadas feitas em C/C++ dentro da sua aplicação)
- FingerJet (pago - Digital Persona)
- FingerJetFX (livre - DigitalPersona)
- Linuxfx AFIS 3 (livre - Linuxfx.org)
E outros que não testei ou desconheço, por isso não vou comentar sobre eles.
Um exemplo simples de funcionamento:
Suponhamos que você tenha uma imagem na pasta local, com o nome 1.pgm (note que pgm é a extensão gerada pelo leitor). Converteríamos esta imagem no Linux utilizando o seguinte comando:
convert 1.pgm 1.jpeg (o programa convert se encontra no pacote Imagemagick)
ls
1.pgm 1.jpeg
Gerada a imagem você deve extrair a minúcia, no caso utilizarei o AFIS 3 da Linuxfx, mas o conceito é o mesmo para todos os outros.
fxafis -x 1.jpeg
Linuxfx AFIS 3: A minúcia foi extraida para -> 1.fxa
FXAFIS: Lembre-se, você pode comparar uma ou mais minúcias com o comando -c
Depois de gerada a minúcia com incríveis 1KB, você pode comparar com uma ou mais minúcias. Ex.:
Suponhamos que você tenha 3 minúcias extraídas no mesmo diretório, o retorno seria:
fxafis -c 1.fxa *
1.fxa = 400
2.fxa = 3
3.fxa = 2
A partir destes dados sabemos que a digital que mais se parece com a testada é a 1.fxa
Partindo deste conceito, você já pode desenvolver uma aplicação biométrica que faz comparações de 1 para vários. O tempo de retorno é de milissegundos, ou seja, muito rápido mesmo, com uma grande quantidade de digitais (acima de 1000), pelo simples fato de que os arquivos comparados tem 1KB ou menos. Este é o conceito de extração de minúcias de digitais e sistemas AFIS.