Biometria: Processamento de imagens capturadas em leitores de impressão digital

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.

[ Hits: 88.379 ]

Por: Alessandro de Oliveira Faria (A.K.A. CABELO) em 05/10/2006 | Blog: http://assuntonerd.com.br


Mas eu não tenho sensor U.Are.U? Eu tenho outro modelo o que fazer!!!??



Princípio número um, muita calma, caso você não possua um leitor compatível com a linha digital persona, poderá utilizar direto o algoritmo do pacote fvs. Para isto, em primeiro lugar faça o download o pacote em:
Utilize o comando wget como no exemplo abaixo para fazer o download do pacote .tar.gz.

$ mkdir uareu4000
$ cd uareu4000
$ wget
http://ufpr.dl.sourceforge.net/sourceforge/fvs/fvs-0.1.1.tar.gz

Após o download descompacte o pacote com o comando tar -zxvf com no exemplo abaixo:

$ tar -zxvf fvs-0.1.1.tar.gz
fvs-0.1.1/
fvs-0.1.1/ChangeLog
fvs-0.1.1/AUTHORS
fvs-0.1.1/COPYING
fvs-0.1.1/Makefile.am
fvs-0.1.1/INSTALL
        :           :          :
        :           :          :
ALGUNS SEGUNDOS DEPOIS...
        :           :          :
        :           :          :
        :           :          :
fvs-0.1.1/autom4te.cache/traces.0
fvs-0.1.1/version.sh
fvs-0.1.1/libtool
Agora novamente com o comando make, compile o pacote fvs, abaixo o exemplo de compilação:

$ cd fvs-0.1.1/
$ make
        :           :          :
        :           :          :
ALGUNS SEGUNDOS DEPOIS...
        :           :          :
        :           :          :
        :           :          :
Entre na pasta demos para executar alguns programas e verificar o funcionamento dos processos.

$ cd demos

O programa fvs_binarize gera uma imagem binarizada (branco e preto) com o nome finger_binarize.pgm.

$ ./fvs_binarize finger01.pgm finger_binarize.pgm
1/5 Determining the ridge direction
2/5 Determining the ridge frequency
3/5 Creating the mask
4/5 Enhancing the fingerprint image
5/5 Binarize
Cleaning up and exiting...
Abaixo um exemplo de imagem gerada:


O programa fvs_direction detecta as direções das impressões digitais.

$ ./fvs_direction finger_binarize.pgm finger_direction.pgm
Opening file finger_binarize.pgm...
1/2 Determining the ridge direction
2/2 Creating a new image with the direction
Cleaning up and exiting...
Veja o resultado:


O programa fvs_thinner converte as linhas da impressão digital em um único pixel de largura.

$ ./fvs_thinner finger01.pgm finger_thinner.pgm
1/6 Determining the ridge direction
2/6 Determining the ridge frequency
3/6 Creating the mask
4/6 Enhancing the fingerprint image
5/6 Binarize
6/6 Thinning
Cleaning up and exiting...
Veja o resultado:


Agora finalmente o cálculo dos pontos de minúcias executando o programa fvs_minutia.

$ ./fvs_minutia finger01.pgm finger_minutia.pgm
1/8 Determining the ridge direction
2/8 Determining the ridge frequency
3/8 Creating the mask
4/8 Enhancing the fingerprint image
5/8 Binarize
6/8 Thinning
7/8 Detecting minutia
8/8 Drawing minutia
Cleaning up and exiting...
Veja o resultado:


O objetivo deste documento é esclarecer o funcionamento da biometria voltada para leitura de impressão digital. Os próximos passos são o processamento para identificação e verificação entre duas impressões digitais para determinar a sua similaridade.

A NETi TECNOLOGIA (empresa no qual sou sócio proprietário) desenvolve soluções biométricas desde 1997. Várias aplicações baseadas em plataforma GNU/Linux utilizando a biometria de conhecimento facial e impressão digital foram desenvolvidas para o mercado consumidor. Abaixo um vídeo demonstrativo de uma aplicação exemplo utilizando o reconhecimento através da impressão digital com algoritmos disponíveis no mercado.

[Vídeo] http://cabelo.linuxdicas.com.br/videos/digital.html
[Vídeo] http://cabelo.linuxdicas.com.br/videos/finger.html

Imagem de uma aplicação biométrica:


"O próximo grande salto evolutivo da humanidade será a descoberta de que cooperar é melhor que competir"

Prof. Pietro Ubaldi

Página anterior    

Páginas do artigo
   1. Introdução
   2. Download, instalação e execução
   3. Mas eu não tenho sensor U.Are.U? Eu tenho outro modelo o que fazer!!!??
Outros artigos deste autor

Compilador Clipper open-source, compile sem problemas os sistemas .PRG no Linux!

Biblioteca VBMcgi: Crie aplicações Web CGI em C++ com acesso ao banco Interbase/Firebird sem mistério

Fim da era PC: Transformando o seu celular em computador de mesa!

GAMBAS: A definitiva resposta open-source ao Microsoft Visual Basic

Detectando assalto na multidão com visão computacional

Leitura recomendada

LaTeX, um poderoso diagramador de textos (parte 2)

Auditoria de computadores com OPEN-AUDIT

Manutenção de sistemas Linux Debian e derivados com apt-get, apt, aptitude e dpkg

UNIX - Definição e História

CUIDADO com o comando "dd", embora muito útil ele pode ser perigoso

  
Comentários
[1] Comentário enviado por jeffestanislau em 05/10/2006 - 09:56h

Grande Cabelo,
Tava quebrando a cuca aqui pra viabilizar isso, seu artigo caiu do céu!

[]'s meu amigo!

[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':


[4] Comentário enviado por guesser em 05/10/2006 - 21:16h

Impressionante como este cara é bom!!!!!

Abraço

[5] Comentário enviado por bolus em 06/10/2006 - 03:39h

Quando efetuei o Make, recebi a seguinte mensagem:
[root@SvrTechBOX libdpfp-0.2.1]# make
make all-recursive
make[1]: Entering directory `/home/phsoares/uareu4000/libdpfp-0.2.1'
Making all in libdpfp
make[2]: Entering directory `/home/phsoares/uareu4000/libdpfp-0.2.1/libdpfp'
make[2]: Nada a ser feito para `all'.
make[2]: Leaving directory `/home/phsoares/uareu4000/libdpfp-0.2.1/libdpfp'
Making all in examples
make[2]: Entering directory `/home/phsoares/uareu4000/libdpfp-0.2.1/examples'
/bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -o capture_continuous capture_continuous-capture_continuous.o ../libdpfp/libdpfp.la -ldpfp -lXv -lXext -lX11 ;
gcc -g -O2 -o .libs/capture_continuous capture_continuous-capture_continuous.o -L/usr/local/lib ../libdpfp/.libs/libdpfp.so /usr/local/lib/libusb.so -lm -lXv -lXext -lX11
/usr/bin/ld: cannot find -lXv
collect2: ld returned 1 exit status
make[2]: ** [capture_continuous] Erro 1
make[2]: Leaving directory `/home/phsoares/uareu4000/libdpfp-0.2.1/examples'
make[1]: ** [all-recursive] Erro 1
make[1]: Leaving directory `/home/phsoares/uareu4000/libdpfp-0.2.1'
make: ** [all] Erro 2
[root@SvrTechBOX libdpfp-0.2.1]#

[6] Comentário enviado por leoberbert em 06/10/2006 - 09:19h

Cara... Ficou excelente o artigo viu!!! Parabéns amigo!!!

Abração!

[7] Comentário enviado por michelpereira em 06/10/2006 - 13:41h

Mais uma vez o grande Alexandre nos brinda com um artigo fascinante e objetivo sobre biometria.

Parabéns novamente!

[8] Comentário enviado por evertonstm em 06/10/2006 - 18:01h

caraca esse cara e um extraterrestre, artigo espetacular valeu ai Kbelo..
vc e o cara ....

[9] Comentário enviado por removido em 09/10/2006 - 13:34h

Kra fantastico o artigo
agora qual hardware vc aconselharia comprar para fazer os testes ?

[10] Comentário enviado por balani em 09/10/2006 - 18:00h

Muito loko véio, esse campo tá crescendo cada vez mais, na empresa que trabalho o relogio de ponto com biometria. Parabens pelo artigo.

[11] Comentário enviado por retamero em 15/09/2007 - 23:21h

Interessante o assunto.

Alguem aqui conhece o leitor Hamster I da Nitgen (
no site deles fala de uma SDK (pra desenvolver em varios Windows e Linux e varias liguagens)

só que o driver que acompanha o SDK nào funciona nem com reza

seguindo este artigo tb não consegui fazer funcionar com esse hardware

lsusb
Bus 3 Device 2: ID 0a86:0100 NITGen Co., Ltd


[12] Comentário enviado por admtempos em 23/01/2009 - 18:02h

Muito intereçante este post num futuro muito possimo as autenticação serão assim

[13] Comentário enviado por sciani em 17/04/2009 - 11:12h

ae Cabelo, oqq eu faço se eu naum tenho nenhum leitor de digitais, e somente um banco de dados onde eu vou abrir as imagens de digitais?

abraços

[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?

[15] Comentário enviado por pcxa em 19/05/2010 - 21:28h

Tem alguma versão do algoritmo de leitura/reconhecimento de impressão digital para microcontroladores de 32 bits, tipo PIC32xxxxxx?

Grato, em tempo, excelente artigo!

[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.

Obs: Utilizo Ubuntu 10.10


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts