terça-feira, outubro 13, 2020

Sensor Biométrico de Impressão Digital - Parte1 - Como Identificar uma Digital

 Depois de olhar alguns sensores bem simples vamos passar para um bem complicado: o sensor de impressão digital.

Existem vários modelos de sensores de impressão digital e algumas bibliotecas para Arduino que os suportam. O que é mais difícil de achar é uma explicação de como estes sensores e bibliotecas funcionam. É o que vou tentar fazer nesta série de posts (mas com algumas simplificações).

O princípio para o uso de impressões digitais para identificação é que não existem duas impressões iguais. O problema é que, na prática, imagens de digital são distorcidas, danificadas e incompletas. Por esse motivo a identificação não pode ser uma simples comparação de imagem.

O primeiro passo de um sensor de digitais é capturar a imagem da digital. Nos módulos que vamos investigar, esta captura é ótica. Ou seja, o sensor tira uma "foto" da digital (entre aspas porque o objetivo aqui não é ter uma imagem fiel mas sim destacar as linhas na digital).

O segundo passo é reconhecer características (features) nesta imagem. É um processamento relativamente pesado e bem específico.

A terceira parte é codificar estas características em um template, que é um conjunto relativamente pequeno de bytes (comparado, por exemplo, com a imagem de uma digital) que pode ser salvo, transmitido e, principalmente, comparado de forma eficiente.

Uma coisa boa é que existe um padrão para templates, o que significa que (potencialmente) eles podem ser usados por um equipamento diferente daquele que o criou.

Normalmente os sensores de digital possuem internamente uma memória Flash para armazenar de forma não volátil uma boa quantidade de digitais. Os templates nessa memória possuem um número associado (o índice do template).

As funções normalmente disponíveis em um leitor de digitais são:

  • Cadastramento (enrollment): uma digital é capturada, convertida num template e armazenada na memória.
  • Verificação de identidade (1:1 match): uma digital é capturada, convertida num template e  comparada com um template específico na memória.
  • Determinação de identidade (1:n match): uma digital é capturada, convertida num template e  é procurado um template na memória que corresponda a ele.

Obs: quando falo em comparação de templates, não estou falando em uma simples comparação dos bytes. Existem vários algoritmos para decidir se dois templates representam a mesma digital.

A maioria dos projetos que você vai achar por aí utilizam apenas um sensor ligado a um controlador (Arduino, Raspberry, etc). Neste caso, os templates ficam somente no sensor (e por isso costuma ser ignorados nas explicações). O controlador apenas envia os comandos para realizar as operações listadas acima e cuida de associar o índice do template a outras informações (como o nome da pessoa) e tomar decisões conforme o reconhecimento ou não da pessoa.

Usando o controlador para ler e escrever templates no sensor, outras aplicações passam a ser viáveis. Dois exemplos simples:

  • Usar o sensor somente para capturar as digitais e gerar o template correspondente. Os templates são armazenados e comparados em outro equipamento. Isso possibilita suportar um número maior de digitais, mas requer um sistema capaz de fazer as comparações de forma eficiente.
  • Possuir uma estação dedicada ao cadastramento (por exemplo com uma interface com operador mais sofisticada) e distribuir os templates gerados para vários equipamentos mais simples(ou mais dedicados) que usarão o reconhecimento de digital para dar acesso ou executar funções.

No próximo post vamos examinar um módulo específico e ver como é a comunicação dele com um controlador.


Nenhum comentário: