Você está na página 1de 11

As técnicas de aprimoramento de imagem de reconhecimento de impressão digital são

baseadas no processo de Filtros Gabor, normalização, segmentação da região de cristas,


afinamento morfológico e estimativa da orientação local das cristas em uma impressão
digital.

Algoritmos de impressão digital


As imagens de impressão digital são colectadas de indivíduos em um formato de escala
de cinzas, idealmente em uma resolução de 500 ppi ou mais. “Modelos” de impressão
digital são gerados a partir de características da imagem, incluindo a localização e a
direcção de extremidades de sulco e bifurcações.
Algoritmos de correspondência de impressão digital comparam as características do
modelo original àquelas do modelo da amostra recém-colectada. As imagens de
impressão digital são arquivadas e usadas para gerar novos modelos, caso os algoritmos
de geração e correspondência de modelos sejam actualizados.
Um registro de impressão digital pode incluir dados de apenas um dedo ou de todos os
dez. Os sistemas de investigação criminal podem incluir dados adicionais, como
imagens dos dedos rolados e também das palmas das mãos. O uso de mais dedos
aumenta a precisão da correspondência, uma vez que mais dados estão sendo
comparados. É necessário capturar amostras de todas as impressões digitais (incluindo o
modelo original e as amostras, para fins de correspondência) com a mais alta qualidade,
a fim de melhorar o desempenho de correspondência.
PRODUTOS AWARE PARA RECONHECIMENTO DE IMPRESSÕES
DIGITAIS
A Aware oferece os seguintes produtos e soluções de reconhecimento de impressão
digital:
 WSQ1000: SDK de compactação de imagem de impressão digital.
 NISTPack: SDK de qualidade e conformidade de formatação de dados.
 SequenceCheck:SDK de verificação de erros de sequência.
 Nexa|Fingerprint:SDK de correspondência de impressão digital.
 AwareXM: SDK de verificação interoperável com certificação MINEX.
 FingerprintWorkbench: aplicativo para estação de trabalho do examinador.
 AwareABIS: Sistema automatizado de identificação de impressões digitais
(AFIS).
 Você já deve ter percebido que o recolhimento de qualquer impressão digital é
um dos primeiros procedimentos a serem feitos na cena do crime.
 Afinal de contas, essa é uma das principais fontes de levantamento de suspeitos.
No seriado, algumas técnicas de ciência forense são utilizadas para que a coleta
de impressões digitais seja feita no local do crime.
 Uma delas consiste no uso do vapor de iodo. Nesse procedimento, alguns
cristais de iodo são levemente aquecidos em um recipiente fechado, juntamente
com o material a ser examinado.
 Logo, uma nuvem arroxeada se forma e esse vapor reage com a impressão
digital, através de uma absorção física, evidenciando a imagem da impressão
digital que está no objecto .
 Uma vez colhidas, as impressões digitais podem ser levadas para serem
analisadas por diferentes departamentos, dentre eles o de Genética Forense.

DETECÇÃO DE IMPRESSÃO DIGITAL EM


PYTHON
A detecção de impressões digitais se tornou uma das formas mais populares
de manter os sistemas de segurança no mundo de hoje. Portanto, a
identificação precisa de uma pessoa por meio de suas impressões digitais é
muito importante. Neste tutorial, aprenderemos como realizar a detecção de
impressões digitais em Python. Devemos usar um banco de dados de algumas
impressões digitais e tentar combinar uma impressão digital particular com
aquela para que possamos identificar a pessoa.
Você pode baixar o banco de dados aqui e o arquivo de teste aqui . Como você
deve ter notado, todos os arquivos estão no formato TIF e gostaríamos de
mantê-lo assim, pois são flexíveis e adaptáveis. Agora, vamos mergulhar no
código e, enquanto o fazemos, também explicaremos os conceitos envolvidos
ao longo do caminho.
Importando as bibliotecas e módulos necessários

import cv2
importar numpy como np
importar os

Visualizando o arquivo de teste (impressão digital a ser


combinada)

test_original = cv2. imread ( "TEST_1.tif" )


cv2. imshow ( "Original" , cv2. resize ( test_original, None , fx = 1 , fy = 1 ))
cv2. waitKey ( 0 )
cv2. destroyAllWindows ()

Resultado:
FINGERPRINT ALGORITHM
RECOGNITION

Introdução
Um sistema biométrico baseado em impressão digital é essencialmente um sistema de
reconhecimento de padrões que reconhece uma pessoa ao determinar a autenticidade de
sua impressão digital. Dependendo do contexto do aplicativo, um sistema biométrico
baseado em impressão digital pode ser chamado de sistema de verificação ou sistema de
identificação:
 um sistema de verificação autentica a identidade de uma pessoa comparando as
impressões digitais capturadas com seus próprios modelos biométricos pré-
armazenados no sistema. Ele realiza uma comparação um a um para determinar
se a identidade reivindicada pelo indivíduo é verdadeira;
 uma identificação system reconhece um indivíduo através de pesquisa de todo o
banco de dados modelo para um jogo. Ele realiza comparações um-para-muitos
para estabelecer a identidade do indivíduo.
O desempenho de algoritmos de extracção de minúcias e outras técnicas de
reconhecimento de impressão digital depende muito da qualidade das imagens de
impressão digital de entrada. Em uma imagem de impressão digital ideal, cumes e vales
se alternam e fluem em uma direcção localmente constante. No entanto, as imagens de
impressão digital obtidas são geralmente ruins devido a elementos que corroem a clareza
dos elementos da crista. Isso leva a problemas na extracção de minúcias.
O objectivo deste artigo é revisar um algoritmo de reconhecimento de impressão digital
baseado em algoritmos genéticos e ferramentas de filtragem de imagens. Os resultados

são recuperados e validados usando Python.

Código-
fonte https://github.com/cuevas1208/fingerprint_recognition/blob/
master/utils/normalization.py

Segmentação
Para definir a ROI, uma máscara é criada usando coerência em bloco para segmentar as
cristas do fundo. Existem métodos mais robustos de segmentação [1], no entanto, o
método que usei é baseado no cálculo da variância dos níveis de cinza. A imagem é
dividida em sub-blocos de tamanhos (L × L) e para cada bloco, a variação é calculada.
V = 1n mi = 0n-1j = 0m-1 (I (i, j) -M) 2
Em seguida, a raiz da variância de cada bloco é comparada com um limiar T baseado na
variância global da imagem, se o valor obtido for inferior ao limiar, então o bloco
correspondente é considerado como fundo da imagem e será excluído pelo
processamento subsequente. Caso contrário, o bloco será considerado uma parte útil da
imagem. O valor limite seleccionado para este repositório é T = 0,2 * std (imagem) e o
tamanho do bloco seleccionado é W = 16 [7]. Esta etapa permite reduzir o tamanho da
parte útil da imagem e posteriormente optimizar a fase de extracção dos dados
biométricos.
Depois que a máscara é criada, a máscara é lisa com um filtro morfológico de abrir /
fechar, para eliminar possíveis outliers da máscara. Duas operações morfológicas
chamadas 'OPEN' e 'CLOSE' são adoptadas. A operação 'OPEN' pode expandir as
imagens e remover os picos introduzidos pelo ruído de fundo. A operação 'CLOSE' pode
reduzir as imagens e eliminar pequenas cavidades.
A normalização da imagem é calculada com base na imagem segmentada.
Código-
fonte: https://github.com/cuevas1208/fingerprint_recognition/blob/master/utils/segmenta
tion.py

Campo de orientação
Filtros Sobel foram usados para obter a direção do campo. Os operadores 3 por 3 Gx e
Gy são usados para obter os gradientes nas direções horizontal e vertical.
Assim, a direção local na vizinhança V, na direção das linhas (Vx (i, j)) e na direção das
colunas (Vy (i, j)) é estimada pelo seguinte cálculo:
A estimativa da orientação local na vizinhança V é Ѳ (i, j) tal que:

Para imagens de impressão digital, a largura média da crista ou vale é de cinco a oito
pixels, então W1 = 16 fornece uma boa estimativa de orientação e economiza tempo
computacional.
Existem duas razões para o fracasso da medida de orientação [11]. A vizinhança pode
conter uma área de valor cinza constante ou uma estrutura de valor cinza isotrópica sem
uma orientação preferencial. Para distinguir esses dois casos, precisamos comparar a
magnitude do vetor de orientação com a magnitude quadrada média do gradiente.
O mapa direcional define a orientação local das estrias contidas na impressão. A
estimativa da orientação é uma etapa fundamental no processo de aprimoramento de
imagens com base na filtragem de Gabor. (Figura 3)
Código-
fonte: https://github.com/cuevas1208/fingerprint_recognition/blob/master/utils/orientatio
n.py

Mapa de frequência
Cálculo de um bloco de frequência Além do mapa direccional, devemos ter a estimativa
local do mapa de frequência para podermos construir o filtro Gabor. O mapa de
frequência da imagem consiste em estimar a frequência local das listras em cada
pixel. As etapas do estágio de estimativa de frequência são:
1. Divida a imagem em blocos de tamanho W × W .
2. Projete os pixels localizados dentro de cada bloco ao longo de uma direção
ortogonal à orientação da crista local . Ele forma uma onda de formato quase
sinusoidal com os pontos mínimos locais correspondendo às cristas da impressão
digital.
3. Calcule o espaçamento da crista contando o número de pixels entre pontos
mínimos consecutivos na forma de onda projetada. Se o bloco contém menos de
dois máximos, o período é definido como zero e é considerado ruído. Os máximos
são os centros das estrias e os mínimos são os centros dos vales. O conjunto de
máximos e mínimos sucessivos representa o que é denominado extremo.
4. Determine o comprimento de onda (T) dividindo a distância do primeiro pico ao
último pico, se o comprimento de onda estiver fora dos limites permitidos, a
imagem de frequência é definida como zero
5. Calcule a frequência pela razão (1 / T) onde T representa o período calculado entre
dois extremos sucessivos.

Código-
fonte: https://github.com/cuevas1208/fingerprint_recognition/blob/master/utils/frequency
.py

Filtro Gabor
Hong, Wan e Jain [10] propuseram um método eficaz baseado em filtros Gabor. Os
filtros Gabor têm propriedades seletivas de frequência e seletivas de orientação e têm
uma resolução conjunta ideal nos domínios espacial e de frequência. Uma representação
gráfica de um banco de 24 filtros e um exemplo de suas aplicações é mostrado
abaixo. Mais informações sobre o grande número de técnicas existentes de
aprimoramento e binarização de impressão digital podem ser encontradas em [2].

O princípio da filtragem é modificar o valor dos pixels de uma imagem, geralmente para
melhorar sua aparência. Na prática, trata-se de criar uma nova imagem a partir dos
valores de pixel da imagem original, de forma a seleccionar no domínio de Fourier o
conjunto de frequências que compõe a região a ser detectada. O filtro usado é o filtro
Gabor com simetria uniforme e orientado a 0 graus (fórmula 15):
Para obter outras orientações, basta realizar uma rotação dos eixos coordenados de
acordo com a fórmula:

De acordo com os diferentes blocos da imagem, o filtro pode ter várias direções
favorecidas. Nesse caso, o filtro final é a soma dos filtros básicos colocados em cada
direção. A imagem resultante será a convolução espacial da imagem original
(normalizada) e um dos filtros de base na direção e frequência local dos mapas
bidirecionais e de frequência:

com: - E (i, j) é o novo valor do pixel (i, j) - O (i, j) e F (i, j) São os valores dos pixels (i,
j) do direcional e mapas de frequência. - e São respectivamente o comprimento e a
largura do bloco usado para a convolução.
Código-
fonte: https://github.com/cuevas1208/fingerprint_recognition/blob/master/utils/gabor_filt
er.py

Desbaste
Para facilitar a extração de minúcias a imagem deve ser esqueletizada: uma sequência de
morfologia
as operações de erosão são usadas para eliminar os pixels redundantes das cristas até que
tenham apenas um pixel de largura. Enquanto alguns artigos usam o algoritmo de
Rosenfeld por sua simplicidade [3]. Eu usei skimage Zha84 Um algoritmo paralelo
rápido para afinar padrões digitais [4]
Código-
fonte: https://github.com/cuevas1208/fingerprint_recognition/blob/master/utils/skeletoni
ze.py
Extração de minúcias
O método do número cruzado é uma maneira realmente simples de detectar terminações
e bifurcações de cristas. O algoritmo de número de cruzamento analisará blocos de 3x3
pixels. O valor do CN é calculado de acordo com a fórmula 18: [5] [6]

se o pixel do meio for preto (representa a crista):


se o pixel no limite cruzou a crista uma vez , então encontramos o final da crista
se o pixel na fronteira cruzou a crista três vezes, então encontramos a bifurcação da
crista

Existem outras abordagens de extração de minúcias que funcionam diretamente nas


imagens em escala de cinza sem binarização e afinamento. Esta escolha é motivada por
estas considerações:
 informações podem ser perdidas durante o processo de binarização
 binarização e afinamento são demorados
Maio e Maltoni [8] propuseram uma técnica de extração direta de minúcias em escala de
cinza que pode valer a pena examiná-la.
Código-
fonte: https://github.com/cuevas1208/fingerprint_recognition/blob/master/utils/crossing_
number.py

Singularidades
Utiliza o método do índice de Poincaré proposto por Kawagoe e Tojo (1984).
Seja G o campo associado a uma orientação de impressão digital e seja [i, j] a posição do
elemento. Calculado da seguinte forma.
 A curva C é um caminho fechado definido como uma sequência ordenada de
alguns elementos de D, tal que [i, j] é um ponto interno;
 PG, C (i, j) é calculado somando algebricamente as diferenças de orientação entre
os elementos adjacentes de C.
É bem conhecido e pode ser facilmente mostrado que, em curvas fechadas, o índice de
Poincaré assume apenas um dos valores discretos: 0 °, ± 180 ° e ± 360 °. No caso de
singularidades de impressão digital:
0 ° não pertence a nenhuma região singular.
360 ° pertence a uma região singular do tipo verticilo
180 ° pertence a uma região singular do tipo loop
-180 ° pertence a uma região singular do tipo delta

Código-
fonte: https://github.com/cuevas1208/fingerprint_recognition/blob/master/utils/poincare.
py
Referências:
[1] Bazen, AM, Gerez, SH: Segmentation of Fingerprint Images. Proc. Workshop on
Circuits Systems and Signal Processing (ProRISC 2001) (2001) 276-280.
[2] Maltoni, D., Maio, D., Jain, AK, Prabhakar, S .: Handbook of Fingerprint
Recognition, Springer, New York (2003).
[3] Farah Dhib Tatar, “Finger Recognition Algorithm”

Você também pode gostar