Sadot Hernández

Spring Boot + SourceAFIS

PublicadoAugust 21, 2022

Comparación de Huellas dactilares con SourceAFIS con la precisión y la velocidad de coincidencia son suficientes para la mayoría de las aplicaciones.

image

En este tutorial rápido, veremos cómo podemos implementar Spring Boot junto SourceAFIS para comparar Huellas Dactilares

Requerimientos

  • Java 8
  • Maven 3.8.6
  • SourceAFIS 3.13.0
  • Descargar proyecto de prueba.

1. Dependencia

2. Estructura del Proyecto

3. SourceAFIS

SourceAFIS un algoritmo para el reconocimiento de huellas dactilares humanas. Puede comparar dos huellas dactilares 1:1 o buscar en una gran base de datos 1:N para encontrar huellas dactilares coincidentes. Toma imágenes de huellas dactilares en la entrada y produce una puntuación de similitud en la salida. Luego, la puntuación de similitud se compara con el umbral de coincidencia personalizable.

Introducir huellas dactilares

Para usar SourceAFIS, necesita huellas dactilares para procesar. Las huellas dactilares vienen en forma de imágenes de huellas dactilares o plantillas de huellas dactilares

Formatos de imagen estándar

Las imágenes de huellas dactilares en formatos estándar (PNG, JPEG, ...) son las más fáciles de usar:

DPI de la imagen

Se recomienda especificar los DPI de la imagen a través dpi(double), porque SourceAFIS no es invariable en escala. Puede encontrar la imagen DPI en la documentación del sensor. 500 ppp es la resolución más común. SourceAFIS ignora cualquier DPI almacenado en las propias imágenes.

¿Cómo funciona el algoritmo?

El algoritmo SourceAFIS trata principalmente de comprender las huellas dactilares. Por supuesto, SourceAFIS no es un humano, entonces, ¿cómo podría entender algo? Para los algoritmos, comprender los datos significa describirlos con abstracciones de alto nivel. En el caso de SourceAFIS, estas abstracciones de alto nivel son minucias o terminaciones de crestas y bifurcaciones. Las minucias son simplemente puntos en la imagen con un ángulo de dirección asociado.

Minutas encontradas en la imagen de la huella dactilar.

Esto es esencialmente lo que se guarda en la plantilla. Muchas pequeñas abstracciones ocurren en el camino desde la imagen de la huella dactilar hasta la lista de minucias (la plantilla).

Después de las minucias, hay un paso más de abstracción, que produce bordes. Edge es una línea que conecta dos minucias. Edge tiene longitud y dos ángulos heredados de sus minucias. Los ángulos de borde se expresan en relación con el borde. Estas tres propiedades del borde (longitud y dos ángulos relativos) no cambian cuando el borde se mueve o gira y eso es exactamente lo que necesitamos para hacer coincidir.

El color está determinado por la longitud del borde y los ángulos. Los bordes similares tienen colores similares.

SourceAFIS luego intenta encontrar al menos un borde compartido por las dos huellas dactilares que se están emparejando. Esto se hace muy rápidamente utilizando un algoritmo de vecino más cercano que tiene un rendimiento comparable al de una tabla hash. Eso nos dará el par raíz , que es el par inicial de minucias coincidentes, una de cada huella dactilar.

A partir del par raíz, SourceAFIS rastrea los bordes hacia afuera y crea un emparejamiento que consiste en una serie de minucias emparejadas y bordes emparejados.

Las minucias de la raíz son azules. El árbol de emparejamiento es verde. El gráfico de los bordes de soporte es amarillo.

SourceAFIS ahora observa cuidadosamente el emparejamiento y decide si dicho emparejamiento significa una coincidencia o si es solo una coincidencia. Por supuesto, todo podría ser una coincidencia, pero la diferencia entre una coincidencia débil y fuerte es que es muy poco probable que una coincidencia fuerte sea una coincidencia.

Aquí es donde SourceAFIS ejecuta la puntuación, la última parte del algoritmo. La idea básica es que cada minucia o borde emparejado es un evento que es poco probable que suceda al azar. Cuantos más eventos improbables haya, menos probable es que el emparejamiento sea solo una coincidencia. Entonces, el algoritmo esencialmente cuenta varias características coincidentes y también las califica en función de qué tan cerca coinciden. La suma final de las puntuaciones parciales se configura para alinearse con una escala razonable y se devuelve desde el algoritmo. La aplicación toma la puntuación y la compara con algún umbral para decidir si coincide o no.

4. Clase Controller

Para nuestro ejemplo haremos uso de un pequeño servicio rest que nos devolverá una cadena con el resultado.

5. Resultado Huella 1 : Huella 2

6. Resultado Huella 1 : Huella 1

Si gustas ver el código fuente, este está disponible en Gitlab.

Referencias

Važan, R. (21 de 08 de 2022). SourceAFIS. Obtenido de https://sourceafis.machinezoo.com/