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.
Conecte o sensor de impressão digita e execute o programa capture_finger para verificar se o leitor esta funcionando corretamente.
# ./capture_finger
dpfp_open_usb: interface claim failed
dev: Device or resource busy
dpfp_set_mode: 0
Falha de segmentação
Caso o erro "Device or resource busy" ocorra como no exemplo acima, provavelmente você já possui o módulo do kernel do sensor u.are.u instalado em seu sistema (artigo anterior: Instalando leitores de impressão digital modelo Digital Persona no Linux). Este módulo foi incorporado na nova versão da biblioteca, assim sendo não mais necessário alocá-lo em memória. Para removê-lo, utilize o comando "rmmod" como no exemplo baixo:
# rmmod dpfp
Agora execute o programa capture_finger novamente:
# ./capture_finger
dpfp_get_hwstat: [1] 1
dpfp_set_mode: 0
dpfp_set_hwstat_pwr: power off
dpfp_set_hwstat_pwr: power on
dpfp_get_irq: irq type 56aa
place your finger on the sensor
dpfp_set_mode: 10
dpfp_get_irq: timeout, retry
dpfp_get_irq: irq type 0101
dpfp_set_mode: 20
dpfp_fprint_write_to_file: wrote fprint to finger.pgm
dpfp_set_mode: 0
dpfp_set_hwstat_pwr: power off
Se tudo estiver funcionando corretamente, uma imagem com o nome finger.pgm será gerada no disco. Veja a imagem gerada pelo programa capture_finger:
Para visualizar a imagem do sensor de impressão digital em tempo real, execute o programa capture_continuous ou capture_continuous_gtk e veja o resultado:
# ./capture_continuous
dpfp_get_hwstat: [1] 85
dpfp_open_usb: device powered down on open, attempting to correct
dpfp_set_hwstat_pwr: power on
dpfp_get_hwstat: [1] 0
dpfp_open_usb: device state corrected successfully
dpfp_set_mode: 0
dpfp_set_hwstat_pwr: power off
dpfp_set_hwstat_pwr: power on
dpfp_get_irq: irq type 56aa
using Xv format 0x32595559 YUY2 packed
dpfp_set_mode: 20
Press M for CCD mode, E for enhanced mode, Q to quit
dpfp_set_mode: 0
dpfp_set_hwstat_pwr: power off
Caso não consiga ver a apresentação em flash acima, segue o link do vídeo:
O programa capture_finger_enhanced efetua o processamento da imagem, binarização e todos os processos citados no início do artigo.
# ./capture_finger_enhanced
dpfp_get_hwstat: [1] 83
dpfp_open_usb: device powered down on open, attempting to correct
dpfp_set_hwstat_pwr: power on
dpfp_get_hwstat: [1] 0
dpfp_open_usb: device state corrected successfully
dpfp_set_mode: 0
dpfp_set_hwstat_pwr: power off
dpfp_set_hwstat_pwr: power on
dpfp_get_irq: irq type 56aa
dpfp_set_mode: 20
place your finger on the sensor
dpfp_set_mode: 10
dpfp_get_irq: irq type 0101
dpfp_set_mode: 20
dpfp_set_mode: 0
dpfp_set_hwstat_pwr: power off
dpfp_fprint_write_to_file: wrote fprint to finger.pgm
dpfp_fprint_soften_mean: took 0.006778 seconds
dpfp_fprint_get_direction: took 0.804882 seconds
fprint_direction_low_pass: took 0.139284 seconds
dpfp_fprint_get_frequency: took 1.362015 seconds
dpfp_fprint_get_mask: took 0.007775 seconds
dpfp_fprint_enhance_gabor: took 4.805600 seconds
dpfp_fprint_write_to_file: wrote fprint to finger_enhanced.pgm
dpfp_fprint_thin: took 0.057944 seconds
enhancements took 7.189731 seconds in total
dpfp_fprint_write_to_file: wrote fprint to finger_thinned.pgm
[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.