identificaciÓn del documento cÉdula de ... › b032 › 535b4359d262b9e33a...librería de opencv...
TRANSCRIPT
IDENTIFICACIÓN DEL DOCUMENTO CÉDULA DE CIUDADANÍA DENTRO DE UN ARCHIVO DIGITALIZADO
IDENTIFICATION OF THE IDENTIFICATION DOCUMENT WITHIN A DIGITIZED FILE
Sanabria Ruiz Elkin Serafín, Camargo Useche Yeimmy Paola
Resumen: En el siguiente artículo se describe el proceso de diseño e implementación de un
software construido haciendo uso del lenguaje de programación Python y las funciones de la
librería de OpenCV que mediante el uso de procesamiento digital de imágenes permite la
detección del documento cédula de ciudadanía dentro de un archivo digitalizado, mostrar dicho
documento y guardarlo en un repositorio. Fue posible construir un algoritmo que identifica los
contornos de la imagen y la somete a una serie de validaciones para clasificarla como cédula,
adicionalmente se identifican los contornos internos del número de identificación y
posteriormente lo presenta como una variable tipo texto.
Palabras clave: Pixel, Procesamiento Digital, Filtro Cany, Threshold, Kernel, Filtro Gaussiano,
Escala de Grises, Contornos, Dilatación.
Abstract: The following article describes the process of designing and implementing software
built using the Python programming language and the functions of the OpenCV library which,
through the use of digital image processing, enables the identification of the citizenship within
a digitized file, display that document and save it in a repository. It was possible to construct
an algorithm that identifies the outline of the image and submits it to a series of validations to
classify it as a identification document, further identifying the internal outline of the identification
number and subsequently presenting it as variable type text
Key Words: Pixel, Digital Processing, Filter Canny, Threshold, Kernel, Filter Gaussiano,
Grayscale, Outline, expansion
1 Introducción
Los documentos en general son el respaldo físico o digital de la información y en el caso de
los documentos de identificación garantizan ante la ley, las autoridades y cualquier entidad con
la que se quiera realizar algún tipo de procedimiento que se pertenece a un lugar geográfico,
se tiene unas características físicas y según la legislación se tendrán una serie de obligaciones
y privilegios aplicados por medio de la identificación. En Colombia la Cédula de Ciudadanía es
el documento de identificación y por medio de este documento se realiza una gran cantidad de
transacciones; esta transaccionalidad es el fundamento operativo de compañías que procesan
y custodian gran cantidad de documentos y teniendo en cuenta que toda esta información debe
ser revisada y comparada con el documento de identificación y las bases de datos de la
compañía; existe una necesidad de proporcionar una herramienta que permita identificar las
imágenes que contienen cedulas de ciudanía. Esta necesidad es la que espera cubrir este
proyecto de investigación.
Para el tratamiento de la información que permita lograr la identificación de la cédula de
ciudadanía es necesario realizar la lectura de la imagen y aplicar una serie de técnicas de
procesamiento digital de imágenes. Fue necesario luego de la captura de la imagen realizar
un proceso de conversión a escala de grises para estandarizar y minimizar el tiempo de
procesamiento; en el análisis se realizó un tratamiento de la imagen que consiste en
transformarla a escala de grises con el propósito de reducir el número de colores y facilitar el
manejo de los mismos al reducir el número de colores se agrupa la información de repetición
en niveles discretos que reducen la demanda de memoria del sistema, adicionalmente este
proceso permite preparar el documento para las etapas posteriores.[1]
Para que una imagen digitalizada que contenga una cédula de ciudadanía sea considerada
como un documento válido esta debe ser una captura por las dos caras procedentes del
documento físico esto quiere decir que el punto de partida es desarrollar un algoritmo que
identifique dos o más contornos exteriores teniendo en cuenta que pueden presentarse
manchas en el documento que serán representados como contornos en el tratamiento de la
imagen.
La aplicación de un filtro gaussiano permitió realizar un suavizado sometiendo los valores de
los pixeles a una operación donde se va a recorrer toda la imagen asignando valores, el filtro
gaussiano implementa máscaras que intentan imitar una función gaussiana que busca la
proporcionalidad del área de los vecinos más cercanos. Los píxeles más lejanos al centro del
operador tienen menor influencia y aquellos con una diferencia a partir del centro tienen una
influencia insignificante. [2]
La aplicación del filtro gaussiano facilitó el proceso de binarización el cual consiste en la
aplicación de un Umbral Binario que se utiliza para transformar una imagen, en una imagen
binaria, mediante el cambio de los valores del píxel. Se definió la intensidad de los umbrales
superior e inferior, y los valores de intensidad para cuando el píxel se encuentre dentro y fuera
del umbral. Para cada píxel en la imagen de entrada, el valor del píxel se comparó con los
umbrales inferior y superior. Si el valor del píxel estaba dentro del rango definido al píxel de
salida se le asignó el valor determinado. De lo contrario a los píxeles de salida se les asignó el
valor de intensidad definido para los píxeles que se encuentran fuera del umbral. [3]
El siguiente paso fue identificar los bordes para lo cual se utilizó Cany que es un algoritmo
que encuentra los bordes en la imagen de entrada y los marca en la imagen de salida, el
principio básico del operador Canny es encontrar la primera derivada de la función de Gauss
en cualquier dirección como filtro de ruido usando este filtro se puede determinar el valor
máximo de gradiente así los bordes pueden ser detectados. [4]
La detección de los bordes se utilizó para identificar los contornos que permitieron someter
los documentos a un primer nivel de clasificación. Para la identificación de los números de la
cédula de ciudadanía se aplicó la técnica de dilatación esta operación consiste en
convolucionar la imagen con un núcleo cuadrado que tiene un punto de anclaje, a medida
que el núcleo recorrió la imagen fue posible hallar el valor máximo del pixel superpuesto y se
reemplazó con este valor el pixel de la imagen ubicado en la posición del punto de anclaje
esta operación de maximización hace que las regiones brillantes dentro de una imagen se
dilaten.[5]
2 Desarrollo
Para el desarrollo del proyecto se utilizaron las funciones de la librería OpenCv; La primera
parte del proyecto consistió en utilizar estas funciones de manera tal que permitiera identificar
los contornos de la imagen. El primer paso fue realizar la lectura de la imagen y convertirla en
escala de grises; "los documentos fueron alterados para proteger la identidad y prevenir algún
delito relacionado con ingeniería social o suplantación de identidad"
Diagrama 1. Diagrama de Bloques
Captura de la imagen: En esta etapa se implementan funciones de OpenCV para realizar la
lectura de la imagen
Conversión a escala de grises: En esta etapa se convierte la imagen a escala de grises para
estandarizar y facilitar los procesos siguientes
Filtrado para Reducción de Ruido: En esta etapa se somete la imagen a un proceso de
filtrado para suavizarla
Binarización: En esta etapa mediante un umbral se asigna valores a los pixeles de la imagen
Extracción de contornos: En esta etapa se realiza la detección de los contornos de la imagen
Detección de región por características: En esta etapa se realiza lectura y comparación de
regiones en el documento
Extracción de información: En esta etapa se clasifica el documento a partir del cumplimiento
de parámetros
Resultado Final: En esta etapa se renombra el archivo
Figura 1. Cédula de prueba para realizar lectura
Figura 2. Cédula de prueba para realizar lectura
Figura 3. Imagen en escala de grises
Figura 4. Imagen en escala de grises
Posteriormente fue aplicado un filtro con el fin de preparar la imagen para los pasos
posteriores, el filtro sobre la imagen se percibe como un efecto de difuminado o suavizado;
para este caso fue utilizado el filtro gaussiano que mediante una matriz Kernel recorre toda la
imagen para asignar los valores que tomaran los pixeles.
2
2
2
2
2
)(
2
)(
0 ),( y
y
x
xyx
AeyxG
(1)
(1) Ecuación que representa un gaussiano en 2D, donde μ es la media y σ representa la
varianza de las variables yx,
Figura 5. Aplicación de la gaussiana
Figura 6. Aplicación de la gaussiana
Utilizando la función threshold se asignan valores binarios a los pixeles según el umbral
configurado, dentro de los parámetros requeridos por la función se encuentra la imagen a la
cual se le debe realizar el tratamiento, los valores del umbral y el formato de salida; en este
proyecto se identificaron los valores 253 y 255 por método heurístico(ensayo y error ) para
asignar los valores del umbral y el formato de salida fue invertido, el resultado esperado era
que las partes con información quedaran en blanco y las partes claras en negro de la siguiente
manera, Los pixeles que sean menores a 253 los vuelve negros y los que están entre 253 y
255 los vuelve blancos.
otherwise 0
),( 1),(
threshyxiyxI
(2)
(2) Representación de Threshold Binary donde ),( yxi representa la intensidad
otherwise 1
),( 0),(
threshyxiyxI
(3)
(3) Representación de Threshold Binary Inverted donde ),( yxi representa la intensidad
Figura 7. Aplicación de Threshold
Figura 8. Aplicación de Threshold
Luego de asignar valores a la imagen se procede a detectar los bordes y extraer los contornos.
Teniendo en cuenta que un contorno es una curva que une todos los puntos continuos con la
misma intensidad y que para utilizar la función findContours el objeto a tratar debe ser blanco
en fondo negro condición que valida el programa que utilice los siguientes argumentos. Modo
de recuperación de contorno, con lo cual se obtienen contornos exteriores solamente; método
de aproximación de contorno con lo cual se elimina todos los puntos redundantes, por ejemplo,
si el objeto a tratar es un rectángulo se obtienen solo las esquinas.
Figura 9. Aplicación de Canny
Posteriormente a la obtención de los contornos se aplica una condición y es en esta parte del
código donde se inicia a descartar todos los objetos que no corresponden con cédula de
ciudadanía. Cuando se tiene una imagen de cédula de ciudadanía existen dos contornos
principales (anverso y reverso del documento) y unos contornos secundarios presentados por
rayones o manchas. Esta cantidad de contornos a tener en cuenta se indican en los parámetros
la condición principal de manera tal que si la imagen a procesar contiene muchos contornos
externos no será válida. Se ingresa a la iteración que se va a repetir hasta que recorra todos
los contornos y en cada una va a usar unos parámetros para descartar todos los contornos de
bajas dimensiones asumiendo que se trata de manchas o rayones (contornos secundarios).
Figura 10. Anverso y reverso del documento
Para estandarizar el tamaño de los documentos clasificados como candidatos a cara frontal
de cédula de ciudadanía se aplica un proceso para dejar los objetos en un tamaño fijo teniendo
en cuenta que la imagen original podría estar ampliada o reducida.
Se procede a identificar el número de cédula. Con la imagen en un tamaño estándar se
obtienen las coordenadas y el recorte de la región que contiene el número de identificación. A
la región que contiene el número de cédula le son aplicados una serie de transformaciones
que resultan en obtener en formato texto el número de identificación. Convertir la región a
escala de grises y aplicar un filtro gaussiano, mediante la función Threshold asignar valores
binarios a la imagen, pero esta vez se usa como argumento de umbral los valores 144, 255.
Posteriormente detectar los bordes con la función Canny y obtener los contornos con la función
findContours mediante los argumentos modo de recuperación de contorno para obtener todos
los contornos; método de aproximación de contorno con lo cual el programa toma todos los
puntos del contorno.
Figura 11. Extracción de región que contiene identificación y aplicación de Gaussiana
Posteriormente son excluidos los puntos que se encuentran dentro de la cédula de ciudadanía
con un condicional con lo cual el algoritmo solo procesa los números de la región obtenida.
Estos números pasan por la aplicación de un proceso de dilatación para mejorar la calidad.
Figura 12. Extracción de contornos con Canny, aplicación de Threshold y Dilatación
Para realizar la detección de los números se extraen los contornos y se evalúan con imágenes
que contienen los números del cero al nueve y se saca cantidad de ceros resultantes es decir
la cantidad de pixeles en negro y estos valores son almacenados en un vector; al final se
obtiene como resultado el valor que menor cantidad de ceros tenga es decir la comparación
que menos haya presentado variaciones, estos valores se representan en una lista y cuando
se recorran todos los contornos se guarda en una variable el número de identificación.
Tabla 1. Resultados de Recorte de Contorno, Dilatación y Comparación para identificar números, *
números enmascarados para proteger identidad
2.5 Interfaz de Visualización
Se diseñó una interfaz que permite visualizar en pantalla los documentos identificados y
confirmar que el documento es en realidad un documento de identificación.
Abrir Imagen: Cargar una imagen procesada y almacenada en una ruta predeterminada.
Información: Versión del sistema y última Actualización
Salir: Botón con el cual se cierra el sistema
3. Resultados
• En el proceso de pruebas se simulo la existencia de más de dos contornos en el
documento esto incluye marcas, sellos, los cuales pueden estar presente en el
documento por lo cual fue requerido delimitar el número de contornos esto con el
objetivo de impedir que se analicen documentos no válidos.
• Al realizar pruebas de tiempo vs cantidad de documentos procesados, con 30 pruebas
entre 10 y 20 paginas para ser procesadas, se determinó que el promedio de tiempo
que toma para la identificación del documento cédula es de 10 segundos.
• En el proceso de conversión a escala de grises e identificación de contornos los
números tienden a perder su forma original y para realizar el proceso de comparación
con 10 cédulas se idéntico que en el 80% de los casos se dificultaba la detección en
alguna posición del vector que almacena el numero encontraba un 9 o 0 ya que estos
presentaban distorsión por lo que fue requerido realizar un proceso de dilatación para
rellenar los números y mejorar la calidad de la imagen.
4. Conclusiones
• Se desarrolló un algoritmo aplicando técnicas de procesamiento digital de imágenes
para la detección del documento Cédula de Ciudadanía dentro de un archivo digitalizado
orientado a la identificación de características únicas de la cédula como lo es la posición
y longitud de los dígitos que componen la cédula.
• Se diseñó una interfaz desde la cual el usuario podrá visualizar el documento Cédula
de Ciudadanía.
• Luego de la clasificación del documento cédula de ciudadanía la aplicación le permite
al usuario guardar en una carpeta las imágenes anteriormente clasificadas
• Se realizó la inserción en una Base de Datos el nombre del archivo que corresponde a
la cédula de ciudadanía, su ubicación y la fecha en la que se realizó el proceso de
identificación
Agradecimientos
Este proyecto es el resultado del apoyo del Ingeniero Edward Jacinto Gómez, tutor de proyecto
quien con su conocimiento y disposición participó activamente en la culminación exitosa de
este proceso, a todos nuestros compañeros y docentes que con sus sugerencias nos ayudaron
a construir un proyecto sólido, a nuestros familiares quienes con su apoyo impulsaron la
finalización de esta etapa.
Referencias
[1] Sagar P. More; Nitin P. More “Identification of origitnal gold using Digital Image Processing” pp 1940 – 1943, 2016
[2] G. Penalber, L. E. S. e Silva, K. V. dos Santos, S. S. Waldir, Wheidima C. Melo “Dyed banknotes detection system using digital: Image processing pp.: 191 – 192, 2015.
[3] C. Ibarra, A. Hakim Hendada, H. Loaiza, “Procesamiento de imágenes infrarrojas para la detección de defectos en materiales” Rev. Tecnura, pp. 401, 2007.
[4] R. Javier, “Procesamiento digital de imágenes con Matlab y Simulink”, Sistemas y telemática, pp. 77-78, 2012.
[5] Anchal Kalra; Roshan Lal Chhokar “A Hybrid Approach Using Sobel and Canny Operator for Digital Image Edge Detection” pp. 305 – 310 , 2016