identificaciÓn del documento cÉdula de ... › b032 › 535b4359d262b9e33a...librería de opencv...

21
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

Upload: others

Post on 05-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: IDENTIFICACIÓN DEL DOCUMENTO CÉDULA DE ... › b032 › 535b4359d262b9e33a...librería de OpenCV que mediante el uso de procesamiento digital de imágenes permite la detección del

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

Page 2: IDENTIFICACIÓN DEL DOCUMENTO CÉDULA DE ... › b032 › 535b4359d262b9e33a...librería de OpenCV que mediante el uso de procesamiento digital de imágenes permite la detección del

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

Page 3: IDENTIFICACIÓN DEL DOCUMENTO CÉDULA DE ... › b032 › 535b4359d262b9e33a...librería de OpenCV que mediante el uso de procesamiento digital de imágenes permite la detección del

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

Page 4: IDENTIFICACIÓN DEL DOCUMENTO CÉDULA DE ... › b032 › 535b4359d262b9e33a...librería de OpenCV que mediante el uso de procesamiento digital de imágenes permite la detección del

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]

Page 5: IDENTIFICACIÓN DEL DOCUMENTO CÉDULA DE ... › b032 › 535b4359d262b9e33a...librería de OpenCV que mediante el uso de procesamiento digital de imágenes permite la detección del

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"

Page 6: IDENTIFICACIÓN DEL DOCUMENTO CÉDULA DE ... › b032 › 535b4359d262b9e33a...librería de OpenCV que mediante el uso de procesamiento digital de imágenes permite la detección del

Diagrama 1. Diagrama de Bloques

Page 7: IDENTIFICACIÓN DEL DOCUMENTO CÉDULA DE ... › b032 › 535b4359d262b9e33a...librería de OpenCV que mediante el uso de procesamiento digital de imágenes permite la detección del

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

Page 8: IDENTIFICACIÓN DEL DOCUMENTO CÉDULA DE ... › b032 › 535b4359d262b9e33a...librería de OpenCV que mediante el uso de procesamiento digital de imágenes permite la detección del

Figura 1. Cédula de prueba para realizar lectura

Figura 2. Cédula de prueba para realizar lectura

Page 9: IDENTIFICACIÓN DEL DOCUMENTO CÉDULA DE ... › b032 › 535b4359d262b9e33a...librería de OpenCV que mediante el uso de procesamiento digital de imágenes permite la detección del

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

Page 10: IDENTIFICACIÓN DEL DOCUMENTO CÉDULA DE ... › b032 › 535b4359d262b9e33a...librería de OpenCV que mediante el uso de procesamiento digital de imágenes permite la detección del

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,

Page 11: IDENTIFICACIÓN DEL DOCUMENTO CÉDULA DE ... › b032 › 535b4359d262b9e33a...librería de OpenCV que mediante el uso de procesamiento digital de imágenes permite la detección del

Figura 5. Aplicación de la gaussiana

Page 12: IDENTIFICACIÓN DEL DOCUMENTO CÉDULA DE ... › b032 › 535b4359d262b9e33a...librería de OpenCV que mediante el uso de procesamiento digital de imágenes permite la detección del

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.

Page 13: IDENTIFICACIÓN DEL DOCUMENTO CÉDULA DE ... › b032 › 535b4359d262b9e33a...librería de OpenCV que mediante el uso de procesamiento digital de imágenes permite la detección del

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

Page 14: IDENTIFICACIÓN DEL DOCUMENTO CÉDULA DE ... › b032 › 535b4359d262b9e33a...librería de OpenCV que mediante el uso de procesamiento digital de imágenes permite la detección del

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.

Page 15: IDENTIFICACIÓN DEL DOCUMENTO CÉDULA DE ... › b032 › 535b4359d262b9e33a...librería de OpenCV que mediante el uso de procesamiento digital de imágenes permite la detección del

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).

Page 16: IDENTIFICACIÓN DEL DOCUMENTO CÉDULA DE ... › b032 › 535b4359d262b9e33a...librería de OpenCV que mediante el uso de procesamiento digital de imágenes permite la detección del

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.

Page 17: IDENTIFICACIÓN DEL DOCUMENTO CÉDULA DE ... › b032 › 535b4359d262b9e33a...librería de OpenCV que mediante el uso de procesamiento digital de imágenes permite la detección del

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.

Page 18: IDENTIFICACIÓN DEL DOCUMENTO CÉDULA DE ... › b032 › 535b4359d262b9e33a...librería de OpenCV que mediante el uso de procesamiento digital de imágenes permite la detección del

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

Page 19: IDENTIFICACIÓN DEL DOCUMENTO CÉDULA DE ... › b032 › 535b4359d262b9e33a...librería de OpenCV que mediante el uso de procesamiento digital de imágenes permite la detección del

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.

Page 20: IDENTIFICACIÓN DEL DOCUMENTO CÉDULA DE ... › b032 › 535b4359d262b9e33a...librería de OpenCV que mediante el uso de procesamiento digital de imágenes permite la detección del

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

Page 21: IDENTIFICACIÓN DEL DOCUMENTO CÉDULA DE ... › b032 › 535b4359d262b9e33a...librería de OpenCV que mediante el uso de procesamiento digital de imágenes permite la detección del

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