Biometria digital - Sistemas AFIS em Gnu/Linux

Através deste artigo, vou explicar como o desenvolvimento e funcionamento de uma aplicação biométrica funciona. Muitos estudantes estão procurando este tipo de informação para terminar seu TCC e muitos programadores ainda estão meio perdidos nesta categoria. Este assunto aborda diretamente o reconhecimento AFIS de uma digital para várias.

[ Hits: 16.010 ]

Por: Rafael Wagner Souza da Silva em 13/06/2012


Sistema operacional, drivers e componentes - Libfprint, não use!



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.

    Próxima página

Páginas do artigo
   1. Sistema operacional, drivers e componentes - Libfprint, não use!
   2. Interface gráfica / linguagem de programação - Em qual devo desenvolver? HóooOOoo! Dilema cruel!
Outros artigos deste autor

Desenvolvendo aplicativo para autenticação biométrica utilizando a Libfprint

Leitura recomendada

Programação Segura

Como prevenir o Buffer Overflow

Brute force de senhas no Linux com loncrack

Bug afeta todas as distros

A poderosa nuvem: Intel® DevCloud com GPU Iris Xe Max!

  
Comentários
[1] Comentário enviado por julio_hoffimann em 13/06/2012 - 17:18h

Oi Rafael, parabéns pelo projeto!

Abraço!

[2] Comentário enviado por rafael_linuxfx em 13/06/2012 - 17:41h

Obrigado, Espero que com isso, a comunidade consiga esclarecer várias dúvidas referentes a biometria em Linux!

[3] Comentário enviado por maurosao em 14/06/2012 - 09:32h

Caro Rafael parabéns pelo artigo, muito bem explicado.

Mas o projeto Linuxfx AFIS está confuso, não deixa claro se vai mesmo disponibilizar o código para comunidade para testes.
Só ouvimos falar mas na pagina do projeto não tem nenhum link para download ou para testes.

Acho que o projeto tem que deixar bem claro para comunidade.

Muito Obrigado por sua contribuição e novamente parabéns.

[4] Comentário enviado por danilosampaio em 14/06/2012 - 10:16h

Gostei do artigo pela objetividade, muito bom!

[5] Comentário enviado por rafael_linuxfx em 14/06/2012 - 11:13h

O Linuxfx AFIS 3 está na pasta /linuxfx do sistema DevilOS5.

Na versão 5.0.3 que será lançada em JUL/12, o sistema de biometria vai ser distribuído junto com o com os novos drivers do FXAFIS 3.1. A maior vantagem da nova versão é a "inteligência artificial" implantada no sistema, onde no cadastro, ele pega três amostras e seleciona automáticamente a melhor.

Atualmente você pode utilizar o AFIS do Linuxfx. Outra observação importante é que o Linuxfx DevilOS5 já vem com os drivers dos leitores Digital Persona pré instalados no sistema.



Contribuir com comentário