Download Imprimir este artículo
Document related concepts
no text concepts found
Transcript
REFI UPN.2015; 3(1): 01-10 Sistema básico de identificación de usuario SISTEMA BÁSICO DE IDENTIFICACIÓN DE USUARIO MEDIANTE ALGORITMO DE PROCESAMIENTO EN MATLAB Basic system for user identification using a Mathlab algorithm Carlos Sánchez Márquez1 1 Universidad Privada del Norte Recibido ene. 2015; aceptado mar. 2015; versión final abr. 2015. Correspondencia: augusto.sanchez@upn.edu.pe _______________________________________________________________ Resumen El sistema consta de una webcam común, un microcontrolador PIC 16f628A de microchip y un dispositivo de transmisión serial (que incluye el integrado MAX232) cuyo programa de comunicación está desarrollado en lenguaje C. El programa de identificación está basado en la técnica de identificación de objetos mediante algoritmos de binarización y segmentación de imágenes. Dichos algoritmos incluyen los comandos de erosión y dilatación que se aplican directamente sobre el elemento estructurante, a través de sus operadores morfológicos. Para finalizar el proceso, las piezas de la imagen se encuadran dentro de un área o intervalo mínimo y máximo para determinar el número de piezas. El algoritmo procesa las imágenes en blanco y negro (casi como un código de barras) captadas por la webcam y si determina que está dentro del rango y la zona de conteo, "identifica" al usuario. El programa de identificación fue desarrollado en Matlab. Palabras clave: Procesamiento de imágenes, segmentación, operadores morfológicos, identificación de usuario. Abstract This system consists of a common webcam, a PIC 16F628A microchip serial transmission system (including integrated MAX232) whose microcontroller communication program was developed in C language. The identification program is also simple, is based in the technique for identifying objects by binarization and image segmentation algorithms, whose erosion and dilation commands are applied directly to the element estructurant through morphological operators. Finally the included image parts are framed within an area, or range interval to determine the number of pieces. The algorithm works on black and white images (almost like a barcode) captured by the webcam and then, if it determines that it is within range and the counting zone, "identifies" the user. The identification program was developed in Matlab. Keywords: Images processing, sequencing, morphological operators, user identification. 1 REFI UPN.2015; 3(1): 01-10 Sistema básico de identificación de usuario I. INTRODUCCIÓN El procesamiento de imágenes puede conducirnos a obtener mejoras en la presentación de una imagen, puede ayudarnos a reconstruir una imagen, así como puede ayudar en el diagnóstico clínico de los pacientes o el mejoramiento de las imágenes satelitales (Malacara, 1997) (Martínez-Nistal y Sampedro, 1995). Otra de sus aplicaciones puede ser la identificación de usuarios, como por ejemplo zonas o áreas restringidas, y es ahí donde trabajamos en esta oportunidad, en este proyecto, en el cual hacemos uso de accesorios multimedia como webcam, microcontroladores y programas desarrollados en Matlab. Existen diversas formas y aplicaciones para el procesamiento de imágenes (Yang, 2014), una de ellas es la identificación de usuario. Esta identificación puede darse para fines de seguridad, como por ejemplo para brindar acceso restringido al personal que pertenece a una determinada área o grupo de trabajo. Sobrado Malpartida (2011) señala que una etapa importante de la visión artificial es el pre procesamiento de imágenes; es decir, la transformación de la imagen original en una nueva en la cual se eliminaron los problemas de ruido granular de cuantización o de iluminación espacial variable. El uso de dichas técnicas mejora las imágenes digitales adquiridas de acuerdo a los objetivos planteados en el sistema de visión artificial. El procesamiento de imágenes puede ser aplicado también en el conteo de objetos en un proceso industrial, e incluso grupos de objetos dentro de una imagen. Todo ello contribuye a la selección de productos o un número determinado de objetos. Marcos Asensio (2013) detalla los pasos para desarrollar algoritmos: 1. Lectura del fichero: En este paso se carga en memoria la imagen a procesar. 2. Conversión a mapa de bits: Separa los objetos del fondo, aprovechando el contraste de la imagen. 3. Relleno de huecos: Recupera pixeles interiores que forman parte del objeto, pero que no se reconocieron. 4. Suavizado de bordes: Redondea las aristas en la imagen para suavizar el contorno de los objetos. 5. Filtrado por tamaño: Elimina las virutas pequeñas. 6: Etiquetado y conteo: Contabiliza los bloques de pixeles. 2 REFI UPN.2015; 3(1): 01-10 Sistema básico de identificación de usuario Técnicas de segmentación de Imágenes La segmentación es un proceso que consiste en dividir una imagen digital en regiones homogéneas con respecto a algunas características (e.g., el brillo o el color) para facilitar un posterior análisis o reconocimiento automático. Dos aplicaciones de segmentación de imágenes son localizar un rostro humano dentro de la imagen de una fotografía o encontrar los límites de una palabra dentro de una imagen de un texto. A continuación se describen las técnicas más frecuentes. Binarización Permite cambiar la escala de colores de una imagen a una escala de grises; es decir, solo niveles de blanco y negro. Umbralización Empleada para definir un umbral, de tal forma que permite distinguir los objetos de interés respecto del fondo. Elemento estructurante: Examinar la estructura geométrica de una imagen usando como sonda un patrón de ajuste que se denomina elemento estructurante (E.E.). Dilatación Es el producto de la aplicación de la binarización, el resultado es una imagen binaria Erosión Técnica que elimina grupos de píxeles con espacio insuficiente para incorporar una estructura geométrica que emplea un patrón de ajuste, conocida como elemento estructurante. II. MATERIALES Y MÉTODOS Al inicio el individuo ingresa su plantilla codificada en la ranura del módulo de lectura de código, la webcam toma la imagen. Luego el programa en la computadora digitaliza la imagen y aplica la técnica de segmentación de imagen. El individuo ingresa su Usuario en el panel de acceso de la pantalla. Si el código ingresado coincide con el del algoritmo, se envía un pulso al microcontrolador, desde el cual se envía un pulso a un transistor que activa un relay abre la puerta de acceso (ver Figura 1). 3 REFI UPN.2015; 3(1): 01-10 Sistema básico de identificación de usuario CÓDIGO INDIVIDUO camara COMPUTADOR ACCESO A ZONA RESTRINGIDA Figura 1. Diagrama del sistema Fuente: Elaboración propia Accesorios utilizados Webcam Para la adquisición de imágenes se utilizó la webcam HA 013 de Halion, cuyas características técnicas son las siguientes: Interfaz: USB 2.0. / 2.0 Mega pixel. Resolución de video: 640 x 480 / 1600 x 1200. Microcontrolador Se empleó el microcontrolador PIC16F628A de microchip, cuyas características son: Emcapsulado: DIP 18 pines. / Oscilador interno de 4MHz. Memoria flash: 2K / Memoria RAM: 224 bytes. / Memoria EEPROM: 128 bytes. Dos comparadores análogicos y USART. Hyperterminal Permite efectuar el enlace de comunicación entre la computadora y el microcontrolador. En el Hyperterminal se determina el puerto de comunicación (e.g., el puerto serial es el COM4). Así se produce el enlace, siempre que la velocidad de transmisión sea de 2400 o 9600 baudios por segundo (bps) en ambas etapas. 4 REFI UPN.2015; 3(1): 01-10 Sistema básico de identificación de usuario Virtual serial port Es otro paquete que permite crear puertos virtuales para el caso de la simulación de la comunicación. Este sistema fue simulado previamente mediante este paquete, el cual permite asignar puertos virtuales desde el COM1:COM4 hacia adelante. Programas empleados en las diferentes etapas Comunicación serial El programa fue desarrollado en lenguaje C. Para la comunicación serial usa los pines de transmisión y recepción del microcontrolador. Para que funcione correctamente es necesario utilizar programas complementarios como el Hyperterminal y el Virtual serial port, los cuales asignan los puertos de comunicaciones (ver Anexo 1). Acceso restringido La ventana de diálogo se diseñó en el módulo Guide de Matlab, en cuya plantilla se lee el título "Acceso restringido", debajo del cual hay un recuadro en blanco para ingresar un código y presionar el botón Ingresar. Con este evento, el individuo pasa la primera etapa de identificación (ver Figura 2). Figura 2. Ingreso de código numérico Fuente: Elaboración propia Identificación del usuario Ventana de diálogo también diseñada en Guide de Matlab, en cuya plantilla se leen los títulos "Ingrese identificador", y "Elija usuario". Debajo de este rótulo aparece un menú desplegable de usuarios numerados del 1 al 100, desde el cual el individuo selecciona el usuario correspondiente (ver Figura 3). En el Anexo 2 se presenta un extracto del código fuente de este programa. 5 REFI UPN.2015; 3(1): 01-10 Sistema básico de identificación de usuario Figura 3. Ingreso de código numérico Fuente: Elaboración propia Transmisión serial Esta es una plantilla clásica de Matlab para transmisión serial, la misma se puede obtener de manera libre de la página de Mathworks (ver Anexo 3). III. RESULTADOS Cuando el individuó trató de ingresar a una zona de acceso restringido, ingresando el código y seleccionando el usuario del menú desplegable, se activó el programa de identificación de usuarios. Para entender mejor el procesamiento realizado, se incluyen los circuitos de simulación desarrollados en Proteus. Inicialmente se observa la activación de un motor dc que representa la activación del motor de una puerta automática. En un segundo momento se presenta la activación de una puerta (apertura) por medio de la activación de un relay, previa identificación del Usuario mediante su código (ver Figuras 4 y 5). Figura 4. Circuito de activación de motor de apertura 6 REFI UPN.2015; 3(1): 01-10 Sistema básico de identificación de usuario Figura 5. Circuito de activación de acceso a área restringida (Puerta) IV. CONCLUSIONES Este sistema básico para el procesamiento de señales permite identificar individuos que desean acceder a áreas restringidas de trabajo. Las técnicas de procesamiento de imágenes empleadas son diversas y pueden ser aplicadas a procesos industriales, tales como selección de objetos o mejoramiento de la calidad de producción. Además, el procesamiento de imágenes también se puede aplicar en el mejoramiento de imágenes médicas para un mejor diagnóstico. BIBLIOGRAFÍA Malacara, D. (1997). Óptica tradicional y moderna. Editorial Ciencia para todos, México D.F. Marcos, B. (2013). Provisión de servicios de procesado de imágenes basados en arquitecturas orientadas a servicios. Proyecto de fin de carrera / Trabajo de fin de grado. Universidad Politécnica de Madrid. Recuperado 13 de marzo de 2015, a partir de http://oa.upm.es/22223/ Martínez-Nistal, A. y Sampedro, A. (1995). Introducción al proceso de digital de imágenes. Universidad de Oviedo. Servicios de proceso de imágenes, Asturias, España. Sobrado, E. (2011). Sistema de visión artificial para el reconocimiento y manipulación de objetos utilizando un brazo robot. Tesis de Maestría en Ingeniería de Control y 7 REFI UPN.2015; 3(1): 01-10 Automización. Pontificia Sistema básico de identificación de usuario Universidad Católica del Perú, Escuela de Posgrado. Disponible en http://tesis.pucp.edu.pe/repositorio/handle/123456789/68 Yang, H. (2014). Computer digital image processing: application and research. Advanced Materials Research, 926-930, 3389-3392. 8 REFI UPN.2015; 3(1): 01-10 Sistema básico de identificación de usuario ANEXOS Anexo 1. Programa para la transmisión serial #include <16F628.h> #fuses XT,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT #use delay(clock=4000000) #use rs232(baud=9600, xmit=pin_B2, rcv=pin_B1) #use delay (clock=4000000) unsigned char X=0; #int_rda void serial_isr() { X=getc(); } main() { enable_interrupts(int_rda); enable_interrupts(GLOBAL); while(true) { if(X=='O') { output_high(pin_a0); output_low (pin_a1); } } } Anexo 2. Programa de identificación del usuario function popupmenu1_Callback(hObject, eventdata, handles) % hObject handle to popupmenu1 (see GCBO) % Start up the video. fun =get(handles.popupmenu1,'Value'); switch fun case 1 vid = videoinput('winvideo', 1, 'mjpg_800x600'); vid.FramesPerTrigger = 1; start(vid); bn=im2bw(rgbImage);%Convertir a blanco y %negro la imagen bn2=not(bn); im_dilate=imdilate(im_erode,SE); im_label1=bwlabel(im_dilate,6); set(handles.text4,'String',n1) case 2 vid = videoinput('winvideo', 1, 'mjpg_800x600'); vid.FramesPerTrigger = 1; start(vid); set(handles.text4,'String',n2) end 9 REFI UPN.2015; 3(1): 01-10 Sistema básico de identificación de usuario Anexo 3. Programa de transmisión serial %CONDICION DE APERTURA clc; disp('BEGIN') s = serial('COM3'); set(s,'BaudRate',2400); set(s,'DataBits',8); set(s,'Parity','none'); set(s,'StopBits',1); set(s,'FlowControl','none'); fopen(s); if (n1 == 10) fprintf(s,'O'); end fclose(s); clear s 10