Escolar Documentos
Profissional Documentos
Cultura Documentos
import cv2
importar numpy como np
importar os
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
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]
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”