Se voce tem curiosidade de saber como um leitor de impressão digital funciona, aconselho a leitura do artigo abaixo. Ele foi escrito pelo criador da libfprint, a biblioteca mais usada para interfacear com leitores de impressao digital no Linux.
Valorização e reconhecimento de impressão digital
Um tempo atrás, eu postei algumas fotos bonitas do meu pé quando eu descobri o formato de imagem utilizado pelos leitores de impressões digitais Digital Persona e Microsoft.
Embora seja muito legal ver a sua impressão digital na tela, a verdadeira questão é como é que vamos fazer uso dessas impressões? Precisamos de uma maneira de armazenar as impressões digitais, e uma forma de dizer "não esta impressão digital igual a que armazenado antes?" A partir desse ponto, podemos implementar login baseado em impressões digitais e outras coisas.
Existem vários projetos de código aberto com o objetivo de fazer esse tipo de coisa, eu fiz uma lista deles aqui. Infelizmente todos eles parecem ser projetos de mortos ea maior parte deles não são úteis em tudo, mas eu fiz o progresso com um deles, pelo menos: FVS.
Existem vários algoritmos diferentes que podem ser utilizadas para comparar as impressões digitais. Vou tentar descrever o método utilizado pela FVS: detecção de minúcias.
A impressão digital é composta por sulcos, basicamente, apenas as linhas curvas que você vê. Cumes começar e terminar, e alguns deles split (bifurcam) em dois outros cumes. Os pontos onde as terminações de cristas e bifurcações acontecem são conhecidos como minúcias. Podemos comparar as posições e direções de minúcias em duas imagens de impressões digitais para decidir se eles são iguais. Este é, certamente, jogando um monte de informações de distância, mas este método é muito utilizado no mundo do reconhecimento da impressão digital.
Começamos com o pé-impressão inicial. Eu realmente enganado, subtraindo uma imagem vista pelo sensor antes de eu digitalizados meu dedão do pé-de impressão, então o que você pode ver abaixo é ligeiramente melhorado (mais claro) do que a imagem original.

Os sulcos da impressão digital são visíveis acima em branco. A etapa de aprimoramento envolve encontrar a direção do cume ea freqüência cume. Estes dados podem então ser usados para aplicar um filtro Gabor para a imagem, o que produz uma versão muito melhorada:

O aumento acima leva alguns segundos no meu sistema. Este é OK para prototipagem, mas é muito lento para um sistema de login de impressão digital real, eu espero que nós possamos encontrar formas de otimizar isso. Além do filtro Gabor, a imagem foi ainda reforçada por binarizao: todos os pixels são preto ou branco, sem ruído.
As cristas são agora mostrados em preto sobre um fundo branco. O próximo passo é a redução de cada linha de cume para um único pixel de largura. Isto é conhecido como o desbaste.

A vantagem de desbaste é que minúcias são agora muito fácil de detectar. Tomamos todos os pixels na imagem, e ignorá-lo se ele não é um cume (ou seja, se ele é branco). Para todos os cume pixels, contamos o número de pixels adjacentes cume. Se houver apenas um cume de pixel vizinho, nós encontramos um final cume. Se há três vizinhos do pixel cume, temos encontrado uma bifurcação.

FVS inclui código de detecção de minúcias baseado no algoritmo acima:

O código não é perfeito, como ele detectou muitas minúcias em torno da borda da imagem da impressão digital, onde eles não existem. No entanto, deve ser relativamente simples para excluir aqueles que FVS já sabe sobre os bordos da impressão.
O próximo desafio é comparar dois conjuntos de minúcias e decidir como eles são semelhantes. FVS inclui um código para fazer isso, mas ele apenas deixa de funcionar, e eu não passei muito tempo de depuração ainda. Esta é uma operação difícil: impressões do mesmo dedo nunca são idênticos: às vezes algumas minúcias não são visíveis, eles podem ser espaçados de forma ligeiramente diferente, e o dedo pode até ser significativamente rodado desde a última impressão.
Um projeto chamado Efinger construiu um banco de dados completo de reconhecimento de impressões digitais. Ele usa código melhoria da FVS, mas os navios é um código próprio para o desbaste, a detecção de minúcias, e minúcias comparação set. O código não é brilhante (não considera a rotação ou algo assim), mas deve fornecer um bom ponto de partida.
Nenhum comentário:
Postar um comentário