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: 15.254 ]

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

Criando uma calculadora com o Glade

A duplicação do buffer de saída na chamada de sistema fork() do Linux

  
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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts