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: [email protected]
_______________________________________________________________
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