Extração da imagem com um leitor de impressão digital é o primeiro passo no processo de verificação ou identificação biométrica. Neste artigo utilizaremos a biblioteca libdpfp para efetuar o processamento do cálculo das minúcias das imagens capturadas em leitores biométricos de impressão digital.
A impressão digital é composta de linhas formadas pelas elevações da pele. A comparação por impressão digital é um método utilizado a mais de mil anos como forma de identificação de usuários. É uma característica única entre os seres humanos, inclusive entre irmão gêmeos univitelinos.
Formada ainda quando feto, a impressão digital acompanha a pessoa por toda a sua existência sem apresentar grandes mudanças. Extraindo os pontos característicos ou ponto de minúcias de uma impressão digital, um papiloscopista ou sistemas computadorizados podem identificar pessoas utilizando cálculos bastantes confiáveis.
São vários os tipos de impressões digitais, abaixo algumas imagens de diferentes digitais:
Grande parte dos algoritmos trabalham com o princípio de extração dos pontos de minúcias ou pontos característicos. Após a extração são calculados a relação entre as distâncias destes pontos, cada algoritmo possui a sua base de cálculo, seja por análise dos pontos entre si ou por agrupamentos de pontos para análise de semelhanças de triângulos com os ângulos internos.
Neste artigo calcularemos os pontos de minúcias utilizando a biblioteca libdpfp-0.2.1. Esta versão da biblioteca incorporou a abstração de hardware (módulo do kernel) para acesso ao leitor, com isto hoje já não é preciso instalar o módulo dos leitores compatível com a linha U.Are.U da digital persona.
Este release (versão 0.2.1da libdpfp) contém parte do código do projeto fvs e eFinger, utilizada para processar as imagens extraídas dos leitores de impressão digital.
Na primeira fase a biblioteca extrai a imagem do sensor conforme o exemplo abaixo:
Aplicando a extração de filtro de gabor, a linha da impressão digital é realçada com a cor preta.
Na próxima etapa a imagem já esta binarizada (branco e preto), as linhas foram reduzidas a um único pixel de largura.
Agora ficou fácil detectar os pontos de minúcias. Fazendo um exame de cada pixel na imagem, se houver um pixel branco sem vizinhos significa que encontramos um ponto terminal. Caso um ponto branco possua 3 pontos vizinhos, significa que encontramos uma bifurcação.
Veja o resultado abaixo:
Agora o próximo passo a ser implementado na biblioteca em termos de desenvolvimento é a comparação dos pontos de minúcias para obter o índice de similaridade entre duas impressões digitais.
O projeto eFinger executa esta tarefa, mas encontra-se ainda em fase embrionária, pois o algoritmo não considera rotação dos pontos, mas sem sombra de dúvida é um bom ponto de partida. Bom, depois de tanta teoria, vamos a prática no próximo capítulo.
[2] Comentário enviado por danilorlima em 05/10/2006 - 10:33h
Pô Cabelo, show este artigo!!!
Sempre procurei saber qual era o algoritmo usado nestes calculos, parabéns... e o reconhecimento facial é a mesma coisa ?
[3] Comentário enviado por removido em 05/10/2006 - 12:19h
Quando fiz make deu essa saída:
dpfp.c:69: warning: 'struct usb_device' declared inside parameter list
dpfp.c:69: warning: its scope is only this definition or declaration, which is probably not what you want
dpfp.c: In function 'get_dev_entry':
dpfp.c:75: error: dereferencing pointer to incomplete type
dpfp.c:76: error: dereferencing pointer to incomplete type
dpfp.c: At top level:
dpfp.c:159: warning: 'struct usb_device' declared inside parameter list
dpfp.c: In function 'dpfp_open_usb':
[14] Comentário enviado por edu_light em 30/09/2009 - 17:19h
Cabelo, replico a pergunta enviada pelo colega sciani. E se eu tiver tão somente uma imagem digitalizada (bmp) armazenada no banco. Como faço para transforma-la em vetorial?
[16] Comentário enviado por heepz em 20/04/2011 - 10:47h
Ola!
Após eu dar o comando ./configure, no final deu:
checking for LIBUSB... configure: error: Package requirements ("libusb") were not met:
No package 'libusb' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables LIBUSB_CFLAGS
and LIBUSB_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.