92/Ò0(1 1Ò0(52 0$

43
92/メ0(1 1メ0(52 0$<2

Upload: haphuc

Post on 02-Dec-2018

224 views

Category:

Documents


2 download

TRANSCRIPT

La Mecatrónica en México

Comité Editorial de la Revista

Diseño Gráfico Mónica Vázquez Guerrero

Kikey Stephanie Méndez Sánchez Alejandra Miguel Vargas Mandujano

Vinculación Luis Alberto Aguilar Bautista Luis Antonio Salazar Licea

Miguel Ángel Bacilio Rodríguez

Revisión de Formato Rodrigo Escobar Díaz-Guerrero

Conrado Vargas Cabrera Alejandro de León Cuevas Ángel Juárez Buenrostro

Soporte Técnico Carlos Alberto Ramos Arreguín

Juan Carlos Moya Morales Ma. Del Carmen García López

Ubaldo Geovanni Villaseñor Carrillo

LA MECATRÓNICA EN MÉXICO, Año 4, No. 2, Mayo - Agosto 2015, es una publicación cuatrimestral editada por la Asociación Mexicana de Mecatrónica A. C., Calle Fonología No. 116, Col. Tecnológico C.P. 76158, Querétaro Qro. Tel.(01- 442) 224 0257. www.mecamex.net/revistas/LMEM/ , Editores responsables: Juan Manuel Ramos Arreguín y José Emilio Vargas Soto. Reserva de Derechos al uso exclusivo No. 04-2014-060218514400-203 otorgado por el Instituto Nacional del Derecho de Autor. Responsable de la última actualización este número: Asociación Mexicana de Mecatrónica A.C., José Emilio Vargas Soto, Calle Fonología No. 116, Col. Tecnológico C.P. 76158, Querétaro Qro. Fecha de terminación de impresión: 23 de Julio del 2015. Las opiniones expresadas por los autores de los artículos no reflejan la postura de la Asociación Mexicana de Mecatrónica A.C. Esta revista es una publicación de acceso abierto, distribuido bajo los términos de la Asociación Mexicana de Mecatrónica A. C., la cual permite el uso, distribución y reproducción sin restricciones por cualquier medio, siempre y cuando los trabajos estén apropiadamente citados, respetando la autoría de las personas que realizaron los artículos.

La Mecatrónica en México, Vol. 4, No. 2, páginas 39 � 52, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

39

Diseño y construcción de un sistema SCADA para el control de un campo de Helióstatos

Salgado Plasencia Eugenio, Toledano Ayala Manuel, Rivas Araiza Edgar Alejandro, Carrillo Serrano Roberto Valentín, Soto Zarazúa Genaro Martin.

Facultad de Ingeniería, División de investigación y posgrado, Universidad Autónoma de Querétaro, Cerro de las Campanas S/N, Las Campanas, 76010 Santiago de Querétaro, Querétaro,

México.

Resumen

En las centrales termosolares de torre central es necesario contar con un sistema que supervise y administre de manera individual y colectiva el comportamiento de los helióstatos para garantizar su correcto funcionamiento. En este documento se describe el diseño y construcción de un sistema SCADA para controlar un campo de 19 helióstatos distribuidos frente a un receptor de torre central. El sistema cuenta con una interfaz gráfica programada en Linux/Python que se comunica a través de una red inalámbrica hacia las unidades terminales remotas montadas en cada helióstato y controladas porun Microcontrolador.

Palabras clave: Campo de Helióstatos; Sistema SCADA; Microcontrolador; Python; Programación.

1. Introducción

Las centrales termosolares de torre central (CSP) utilizan espejos llamados helióstatos para concentrar la radiación solar en un receptor ubicado en la parte alta de una torre. Al conjunto de helióstatos se le conoce como campo de helióstatos y es fundamental contar con un sistema que supervise y controle el estado del campo.

El uso de un sistema SCADA permite monitorear y controlar de manera remota al campo de helióstatos utilizando una interfaz gráfica de usuario (GUI), permitiéndole al operador detener o modificar la orientación de uno o varios helióstatos a la vez, y al mismo tiempo supervisar el correcto funcionamiento del campo de helióstatos. Ya que la potencia producida por las centrales termosolares está directamente relacionada con la cantidad de energía solar adquirida por el sistema [1].

El sistema diseñado solo ejecuta la transmisión de datos entre el sistema supervisor y los helióstatos, ya que el campo aún está en construcción.

2. Metodología

El sistema SCADA consta principalmente de 3 partes: el sistema supervisor, la red de comunicación inalámbrica y las unidades terminales remotas (RTU).

2.1 Sistema supervisor

La Mecatrónica en México, Vol. 4, No. 2, páginas 39 � 52, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

40

El sistema supervisor controla al campo de helióstatos a través de una GUI programada en Linux/Python, el cual es un lenguaje dinámico orientado a objetos que se puede utilizar para el desarrollo de una amplia gama de aplicaciones de software, de programas simples a complejas aplicaciones embebidas. Incluye bibliotecas extensas y funciona bien con otros idiomas, además de ser un lenguaje de código abierto. La GUI despliega la información de los helióstatos por medio de ventanas, también muestra en pantalla datos solares y graficas de la trayectoria solar.

Los helióstatos están montados sobre un mecanismo de 2 ejes para poder orientarlos. El primer eje modifica el ángulo de azimut del helióstato (AH), teniendo un valor de cero hacia el sur, siendo positivo hacia el oeste y negativo hacia el este. El segundo eje modifica el ángulo de elevación del helióstato (EH), siendo igual a cero cuando este esta ortogonal al plano, e igual a noventa cuando elhelióstato está orientado al zenit. Ambos ángulos se miden desde la parte reflejante del helióstato y se miden en grados.

Figura 1. Ángulos de orientación del helióstato.

Para controlar los helióstatos se definieron dos variables: estado de operación (SO) y estado de conexión (SC). El estado de operación define los valores deseados de AH y EH. El estado de conexión determina si el helióstato está siendo controlado desde el campo (SC = 0) o desde el sistema supervisor (SC = 1), permitiendo evitar un conflicto en el control del helióstato.

Los estados de operación definidos son:

SO = 0 - Detenido o Stop. El helióstato está detenido sin importar los ángulos AH y EH.

SO = 1 - Posición de inicio. El helióstato está detenido con AH = 0º y EH = 90º.

SO = 2 - Posición de mantenimiento. El helióstato está detenido con AH = 0º y EH = 0º.

SO = 3 - Posición segura. El helióstato está detenido con EH = 90 sin importar su ángulode azimut.

SO = 4 � Control PID. El helióstato está reflejando la radiación solar hacia el receptor controlado por un algoritmo de control PID.

SO = 5 � Control Difuso. El helióstato está reflejando la radiación solar hacia el receptor controlado por un algoritmo de control difuso.

La Mecatrónica en México, Vol. 4, No. 2, páginas 39 � 52, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

41

SO = 6 � Posición de espera derecha. El helióstato está reflejando la radiación solar hacia el receptor pero desenfocado 10 metros hacia la derecha.

SO = 7 � Posición de espera izquierda. El helióstato está reflejando la radiación solar hacia el receptor pero desenfocado 10 metros hacia la izquierda.

SO = 8 � Posición manual. El helióstato es controlado por el operador. Orientando un eje a la vez.

Además de los estados de operación de los helióstatos, se definieron 3 estados principales de control para los helióstatos:

Operación normal. El helióstato es controlado y monitoreado desde la GUI.

Operación en campo. El helióstato es controlado desde el campo y la GUI solo monitorea su estado.

Operación en prueba. Se establece el mismo estado de operación SO para uno o varios helióstatos.

La GUI utiliza el algoritmo de Grena [2] para obtener los valores de azimut y elevación (AS y ES)de la posición del sol. Este algoritmo tiene un error máximo de 0.0027º con un costo computacional menor comparado con algoritmos astronómicos [3]. El algoritmo toma como datos de entrada la posición geográfica (latitud y longitud), la hora, la fecha, la presión y la temperatura. Los datos de salida del algoritmo son: los ángulos de azimut solar (AS) y elevación solar (ES), así como también los valores de declinación solar, ángulo horario, ascensión recta y ecuación de tiempo. Finalmente se calculan los valores de amanecer, medio día solar, ocaso y duración del día, que si bien no alteran la orientación del helióstato si definen el horario de operación del campo.

Como los algoritmos de seguimiento solar calculan la ubicación del sol con un sistema de control de lazo abierto (no usan un sensor de posición del sol, solo algoritmos), basándose en la ubicación geográfica y en el tiempo, estos no cuentan con alguna verificación de que la radiación solar incida en el objetivo [4], por lo que los errores pueden acumularse durante la operación del sistema.

2.2 Comunicación inalámbrica

La comunicación entre el sistema supervisor y los RTU se realiza mediante una red inalámbrica con topología de malla, esto con el fin de evitar el uso de una red cableada que incrementa el costo de mantenimiento y el riesgo de una falla si se daña el cableado.

Se utiliza el protocolo ZigBee para construir la red inalámbrica, la cual opera en la banda libre de 2.4 GHz con una velocidad de transmisión de hasta 256 kbps.

La topología de malla o permite acceder a un punto remoto, utilizando módulos intermedios. Además los módulos automáticamente generaran la red entre ellos, sin intervención humana alguna, permitiendo la reparación de la red en caso de que algún nodo falle. Al mismo tiempo la red por sí sola resuelve la mejor ruta para un determinado paquete.

2.3 Unidad Terminal Remota

La RTU montada en cada uno de los helióstatos cuenta con un Microcontrolador que controla la orientación del helióstato de acuerdo al estado de operación que reciba, ya sea desde el sistema supervisor o desde el campo. La posición del helióstato se obtiene mediante dos Encoder absolutos montados en los ejes del helióstato. El helióstato se orienta a través de dos motores de corriente directa alimentados con cuatro señales PWM utilizando una etapa de potencia.

La Mecatrónica en México, Vol. 4, No. 2, páginas 39 � 52, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

42

Figura 2. Diagrama de bloques del RTU.

También cuenta con un módulo Xbee para comunicarse con el sistema supervisor y un módulo de Bluetooth para controlar el helióstato desde el campo a través de una aplicación en Android para dispositivos inteligentes (Smartphone o Tablet) que cuenten con este sistema operativo.

Para reflejar la radiación hacia el receptor, la RTU modifica el vector normal del helióstato (N) para que coincida con la bisectriz obtenida de la suma de los vectores unitarios de la trayectoria solar (S) y del helióstato con respecto al objetivo (T). Los vectores unitarios S y T se obtienen mediante los ángulos AS y ES, y AT y ET respectivamente.

S = (sin(As)cos(Es), cos(As)cos(Es), sin(Es)) (1)

T = (sin(At)cos(Et), cos(At)cos(Et), sin(Et)) (2)

N = (Sx+Tx, Sy+Ty, Sz+Tz) (3)

Finalmente se obtienen los ángulos del helióstato:

AH = atan(Nx / Ny) (4)

EH = atan(Nz / sqrt(N2x+N2y)) (5)

La Mecatrónica en México, Vol. 4, No. 2, páginas 39 � 52, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

43

Figura 3. Suma de vectores unitarios S y T.

Figura 4. Ángulos de orientación del helióstato.

3. Desarrollo

3.1 Sistema supervisor

El sistema supervisor se programó en Linux/Python utilizando la herramienta Glade para crear interfaces gráficas. El sistema controla un campo de 19 helióstatos distribuidos en 4 círculos concéntricos a partir de la torre central colocada en el extremo sur del campo de helióstatos. Aunque principalmente la eficiencia en las centrales termosolares dependen del sistema de control y del tipo de seguidor solar la distribución de los helióstatos dentro del campo es un factor importante también.Esto es con el fin de evitar las pérdidas por bloqueo y sombra debido a la adyacencia de los helióstatos [5].

La Mecatrónica en México, Vol. 4, No. 2, páginas 39 � 52, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

44

Figura 5. Distribución de los helióstatos.

Al ejecutarse la GUI se leen los datos de los helióstatos desde un archivo de configuración. Los datos incluyen la altura del helióstato, la ubicación geográfica, la ubicación en metros con respecto a la torre central, la dirección MAC del módulo Xbee para la comunicación inalámbrica y la bandera de habilitación que permite controlar y monitorear al helióstato.

También se cargan a los valores de configuración de la GUI, estos valores incluyen la ubicación geográfica de la torre, la zona horaria, la corrección del horario de verano, la dirección MAC del módulo Xbee coordinador y la velocidad de transmisión de datos.

Una vez inicializada, la GUI despliega las siguientes ventanas:

Ventana de inicio. Se despliega cuando se ejecuta la aplicación y requiere un nombre de usuario y una contraseña para ingresar.

Ventana principal. despliega datos de la posición y trayectoria solar utilizando la ubicación geográfica del objetivo o torre central, así como las gráficas de la trayectoria. Muestra el estado del sistema desplegando el nombre del usuario, el número de helióstatos habilitados y en operación, y el puerto de conexión para la comunicación inalámbrica. También tiene acceso a todas las opciones del sistema.

Ventana de Habilitación. Despliega una vista representativa del campo donde es posiblehabilitar o deshabilitar a los helióstatos. Esto es que si algún helióstato no se encuentra en operación por alguna falla o simplemente no se requiere de su operación, este se deshabilita y no es posible controlarlo ni monitorear su estado.

Ventana de campo. Despliega una vista representativa del campo donde se monitorea y modifica el estado de los helióstatos mediante botones con iconos pintados de colores que representan el estado de operación de los helióstatos (figura 6). El código de colores representa un total de 20 estados de operación, que incluye los 9 estados operación ya definidos y 11 estados de operación nuevos que representan el movimiento del helióstato hacia la posición deseada. El color amarillo indica que el helióstato está en movimiento, mientras que el color solido indica que está en la posición deseada.

La Mecatrónica en México, Vol. 4, No. 2, páginas 39 � 52, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

45

Ventana de prueba. Despliega una vista representativa del campo donde se seleccionan uno o varios helióstatos y un solo estado de operación. Solo es posible seleccionar a los helióstatos que estén habilitados y que no estén siendo controlados desde el campo.

Ventana de gráfico. Muestra las gráficas acerca de la trayectoria a lo largo del día, utilizando el ángulo de azimut y elevación, así como el analemma dependiendo del día.

Ventana de helióstato. Muestra los datos de cada helióstato de manera individual, estos datos incluyen: la ubicación geográfica, los ángulos de azimut y elevación de la trayectoria solar en la ubicación geográfica del helióstato, los ángulos de azimut y elevación de la posición del helióstato con respecto al objetivo y los valores actuales de los ángulos de azimut y elevación del helióstato, los botones de control para modificar el estado de operación del helióstato y un icono que utiliza el código de colores del estado de operación. Si el helióstato está siendo controlado desde el campo o está en estado de prueba, el icono del helióstato mostrara una pequeña equis roja o una letra P azul respectivamente como se muestra en la figura 12, en este caso solo es posible monitorear el estado de operación del helióstato, ya que los botones de control se deshabilitan.

Ventana de configuración. Se selecciona la zona horaria y la corrección del horario de verano (desde el primer domingo de abril hasta el último domingo de octubre). También contiene el puerto de conexión y la velocidad de transmisión de datos.

Figura 6. Estado de operación del helióstato en la GUI.

La Mecatrónica en México, Vol. 4, No. 2, páginas 39 � 52, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

46

Por ultimo como cualquier sistema de control industrial la GUI cuenta con un botón de paro de emergencia en cada una de las ventanas de operación de helióstatos. Cuando el botón es presionado, se envía un estado de operación cero a todos los helióstatos. El estado de operación regresa a su valor anterior cuando el botón es presionado nuevamente.

El envío y lectura de los estados de operación se realiza a través de tramas de datos.

La RTU envía al sistema supervisor una trama de datos que incluye: el identificador del helióstato, el estado de conexión (SC, igual a cero si el helióstato está siendo controlado desde el campo e igual a uno si está controlado por el sistema supervisor), el estado de operación, los ángulos de azimut y e elevación, y un carácter de retorno de carro. Todo separado por espacios.

TramaRTU = �ID SC SO AH EH\n�

El sistema supervisor envía una trama de datos al RTU si el helióstato está habilitado y no está siendo controlado en campo. La trama se compone de un carácter de inicio de trama �#�, el identificador del helióstato y el estado de operación separados por una coma y un carácter de fin de trama �&�. Esta trama de datos también se envía por Bluetooth cuando el helióstato es operado en campo.

TramaSS = �#ID,SO&�

Figura 7. Ventana principal de la GUI.

La Mecatrónica en México, Vol. 4, No. 2, páginas 39 � 52, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

47

Figura 8. Ventana de habilitación.

Figura 9. Ventana de campo

La Mecatrónica en México, Vol. 4, No. 2, páginas 39 � 52, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

48

Figura 10. Ventana de prueba.

Figura 11. Ventana del helióstato.

La Mecatrónica en México, Vol. 4, No. 2, páginas 39 � 52, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

49

Figura 12. Iconos de estado de operación.

3.2 Comunicación inalámbrica

La comunicación entre el sistema supervisor y las RTU se realiza mediante una red inalámbrica construida con módulos Xbee utilizando protocolo ZigBee.

La red inalámbrica (figura 13) se compone de un coordinador conectado al sistema supervisor, el cual establece el canal de comunicaciones y el PAN ID (identificador de red) para toda la red. Cada módulo montado en los RTU está configurado como Router, el cual crea y mantiene información sobre la red para determinar la mejor ruta para transmitir un paquete de información.

La comunicación se realiza en modo API (Application Programming Interface, por sus siglas en ingles), la cual se realiza a través de tramas de datos que incluyen la dirección de destino, lo que permite enviar la información a un destino específico o utilizar el Broadcast para cuando se dispare un paro de emergencia.

Figura 13. Red inalámbrica.

La Mecatrónica en México, Vol. 4, No. 2, páginas 39 � 52, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

50

3.3 Unidad Terminal Remota

Cada RTU está controlado por un Microcontrolador dsPIC33EP256MU806 de microchip, el cualestá diseñado para el control de motores. Cuenta con módulos de encuadratura (QEI) para la lectura de encoders y PWMs de alta velocidad para controlar los dos motores que orientan al helióstato. Se utilizan 4 señales de PWM para controlar los motores, con 2 señales para cada motor, una por cada sentido de giro.

El control en campo del RTU tiene la prioridad más alta, es decir, si el RTU se conecta en campo a través del módulo de Bluetooth el estado de conexión cambia a cero y el sistema supervisor no puede controlarlo, y el estado de operación es enviado a través de una aplicación en Android por medio de Bluetooth. Si el estado de conexión es igual a uno el estado de operación es recibido desde el sistema supervisor.

La aplicación en Android (figura 14) tiene los mismos controles que la ventana de helióstato de la GUI para poder modificar el estado de operación del helióstato. También muestra la dirección MAC del módulo de Bluetooth, el estado de operación del helióstato y los ángulos de azimut y elevación.

Figura 14. Aplicación en Android.

En este punto el RTU solo contiene el circuito mínimo para enviar y recibir el estado de operación mediante la red de módulos Xbee y vía Bluetooth (figura 15), y la etapa de potencia para el control de los motores (figura 16). Los algoritmos de control PID y Difuso están en desarrollo, y los helióstatos se encuentran en construcción.

La Mecatrónica en México, Vol. 4, No. 2, páginas 39 � 52, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

51

Figura 15. Circuito mínimo del RTU.

Figura 16. Etapa de potencia para los motores de DC.

4. Conclusiones

Un sistema SCADA para el control de un campo de helióstatos ha sido propuesto. El sistema desarrollado permite administrar y controlar en tiempo real la operación de un campo de helióstatos para centrales termosolares de torre central. El uso de un lenguaje como Python permite el desarrollo de una amplia gama de aplicaciones de software, además de ser un lenguaje de código abierto por lo que no se requiere el uso de licencias de software. La construcción de una GUI permite al operador observar de manera visual el funcionamiento de los helióstatos que componen el campo y controlarlos de manera directa. La red de comunicación inalámbrica minimiza el riesgo de propagar el daño al sistema si algún helióstato es alcanzado por un rayo, además de que el uso de módulos de radio frecuencia Xbee facilita su operación al ser de fácilmente reemplazables y configurables. El último

La Mecatrónica en México, Vol. 4, No. 2, páginas 39 � 52, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

52

paso de la investigación será operar el sistema sobre un campo de helióstatos completamente funcional. Aunque el sistema está diseñado para el control de un campo de helióstatos, se puede modificar para operar un sistema de paneles fotovoltaicos o de canal parabólico, ya que el funcionamiento de estos dos sistemas solo requiere del seguimiento solar.

5. Reconocimientos

Se agradece a Conacyt por el apoyo recibido, a la Planta Solar de Hermosillo (PSH) de la Universidad de Sonora y a la Facultad de Ingeniería de la Universidad Autónoma de Querétaro por las facilidades otorgadas.

Referencias

[1] Chia-Yen L., C. Po-Cheng, C. Che-Ming, and L. Chiu-Feng. �Sun Tracking Systems: A Review�,Sensors, 9, 3875-3890, 2009.

[2] R. Grena. �An algorithm for the computation of the solar position�, Solar Energy, 82, 462�470.2008.

[3] I. Reda and A. Andreas. 2004. �Solar position algorithm for solar radiation applications�, Solar Energy, 76, 577�589, 2004.

[4] Kribus, A. A., I. Vishnevetsky, A. Yogev, and T. Rubinov. �Closed loop control of heliostats�,Energy, 29,905�913, 2004.

[5] Collado, F. J., and J. Guallar. �Campo: generation of regular heliostat fields�, Renewable energy,46, 49-59, 2012.

La Mecatrónica en México, Vol. 4, No. 2, páginas 53 � 64, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

53

Sistema de Autenticación Facial mediante laImplementación del algoritmo PCA modificado en

Sistemas embebidos con arquitectura ARM

Andrés Ernesto López Sandoval, Cyntia MendozaMartínez, Luis Ángel Reyes Cruz, Edgar Alejandro Rivas

Araiza, Juan Manuel Ramos Arreguín, Jesús CarlosPedraza Ortega

Facultad de Informática, Universidad Autónoma de Querétaro.Av. de las Ciencias S/N Campus Juriquilla, Juriquilla, Querétaro, Qro.

C.P. 76230 México. Tel. 1921200 EXT. [email protected]

Resumen

El reconocimiento facial es un área muy activa en el campo de la visión por computadora y se ha estudiado vigorosamente durante 25 años. El reconocimiento facial puede operar de dos modos: reconocimiento y autenticación. El reconocimiento o autenticación facial presentan una problemática, pues el promedio de aciertos en la estimación de la identificación es bajo, en particular, se estima que se encuentra entre un 35% y un 65% de efectividad, dependiendo de las condiciones de iluminación, tamaño de la imagen, etc. por lo que mediante el procesamiento digital de imágenes se deben realizar los ajustes necesarios de iluminación, ajuste de tamaño y mejora en el algoritmo pueda aumentar el porcentaje de reconocimiento en más de un 70%.

Aunado a lo anterior, en la mayoría de sistemas de control de acceso utilizan como medio de procesamiento de las imágenes una computadora personal y una cámara que captura el rostro y no indican que tipo de procesamiento llevan a cabo, es decir, que algoritmo se implementó. La idea principal de este proyecto es implementar un sistema de acceso por medio de reconocimiento facial e implementado en un hardware de arquitectura abierta. El sistema de reconocimiento facial propuesto se basa en una plataforma embebida de bajo consumo comprende un ARM (Advanced RISC máquinas) módulo central de procesamiento, un módulo de adquisición de vídeo, un módulo de visualización y una interfaz de transmisión de datos periférica. El algoritmo a implementar en el procesamiento digital de imágenes es el Principal Component Analysis (PCA) es robusto, rápido y eficiente para llevar a cabo el reconocimiento facial.

El sistema de reconocimiento facial basado en la plataforma embebida de bajo consumo tiene la ventaja de bajo consumo de energía, alta velocidad de computación, la alta precisión de reconocimiento, amplio campo de aplicación y similares.

Palabras clave: Reconocimiento Facial, PCA, ARM, Phyton.

1. Introducción

En los últimos años, el desarrollo de nuevo hardware y software informático para sistemas deseguridad ha experimentado un gran impulso, tal es el caso de los sistemas de reconocimiento por huella dactilar, voz, iris y facial. Entre estos, destaca por perfilarse como el más prometedor el reconocimiento facial.

La Mecatrónica en México, Vol. 4, No. 2, páginas 53 � 64, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

54

La identificación de características faciales ha recibido un fuerte impulso gracias al avance en la tecnología de vídeo multimedia propiciándose así un aumento de cámaras en los lugares de trabajo, hogar y dispositivos móviles con un reducido coste [1]. El reconocimiento facial se puede aplicar en el control de accesos a edificios públicos y privados, cajeros automáticos, laboratorios de investigación, como clave secreta de acceso para el uso de ordenadores personales o terminales móviles de última generación así como para servir de tarjeta de visita de una persona.

El proceso de identificación facial se divide básicamente en dos tareas: detección y reconocimiento [2]. La primera de ellas, la detección, comprende la localización de una o varias caras dentro de una imagen, ya sea fija o una secuencia de vídeo. La segunda tarea, el reconocimiento, consiste en la comparación de la cara detectada en el paso anterior con otras almacenadas previamente en una base de datos. Estos procesos, detección y reconocimiento, no deberían ser totalmente independientes debido a que según la forma en la que se detecte una cara puede ser prácticamente imposible su reconocimiento con caras de una base de datos detectadas de manera diferente, de ahí que los sistemas de reconocimiento facial estén fuertemente condicionados por la posición y orientación de la cara del sujeto con respecto a la cámara y las condiciones de iluminación en el momento de realizar la detección.

Para implementar un sistema de reconocimiento de rostros se presentan 6 etapas bien definidas: Captura de la imagen, preprocesamiento, localización, escalamiento y ajuste, extracción de características y por último la clasificación la toma de decisión.

Figura 1. Esquema general para implementar un sistema de reconocimiento facial [3].

Dentro de la captura de la imagen se encuentra la selección de la cámara digital y las características del ambiente de la fotografía que se realizara como la iluminación, ya sean controladas o no controladas.

El preprocesamiento de la imagen capturada incluye la selección del espacio de color en el que se desea trabajar o la extracción de la intensidad en el caso de que se trabaje con escala de grises.

La Mecatrónica en México, Vol. 4, No. 2, páginas 53 � 64, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

55

Una vez preprocesada la imagen de entrada se determina las coordenadas donde se encuentra la posición de la cara dentro de la escena, normalmente se desea determinar las coordenadas de una sub-imagen formada solo por la zona de la cara delimitada por las orejas, la frente y el mentón. Para determinar estas coordenadas normalmente se utiliza un algoritmo basado en una cascada de clasificadores básicos. Otras estrategias para localizar el rostro consisten en determinar la posición de los ojos, y en otros casos se utiliza la información del color de la piel como metodología para determinar la región que forma exclusivamente la cara, o clasificadores basados en redes neuronales.

En algunos sistemas se realiza la normalización de la cara ya sea utilizando la información de partes como los ojos, nariz u otras características, o simplemente realizando un escalado de la imagen. Los sistemas que solo hacen hasta las operaciones ahora mencionadas se llaman sistemas de localización.

Determinada la región que contiene el rostro se procede a extraer sus características. Para ello se puede utilizar diversas técnicas como lo es PCA, entre otras como SIFT (Scale Invariant Feature Transform) y SURF (Speeded Up Robust Features). Normalmente esta operación produce un vector de características de baja dimensión que debe ser comparado con una base de datos de personas previamente almacenada [4].

1.1 Sistemas embebidos con arquitectura ARM

Se puede definir los sistemas embebidos como un sistema electrónico de procesamiento programado para realizar funciones o tareas para un objetivo específico. Cuando los sistemas son más grandes se pueden incluir además de elementos electrónicos y de software, partes mecánicas,eléctricas y electromecánicas.

En la actualidad, los sistemas embebidos forman parte de la vida cotidiana de todos. En general, la sociedad no tiene conocimiento de la gran cantidad de sistemas embebidos que forman parte de la vida diaria. Por ejemplo, relojes digitales, teléfonos celulares o el horno de microondas.

El software embebido difiere del software convencional de una computadora por las siguientes características:

Los sistemas embebidos pueden ser de tiempo real.Tienen una interfaz directa con el hardware del dispositivo.Suele considerarse las pruebas de hardware como parte del desarrollo del sistema embebido.Suele haber más control del tiempo de respuesta y manejo de recursos como memoria.Requiere de recursos humanos sumamente especializados en las áreas informáticas, electrónicas, etc.

Los sistemas embebidos, por lo tanto, han sido y seguirán siendo cruciales en la mayoría de los dispositivos electrónicos. La industria electrónica sigue cambiando, necesitando modelos y arquitecturas de diseño más complejas en ciclos de desarrollo más reducidos. Los dispositivos programables lograron un cambio profundo en los esquemas de desarrollo al integrar hardware y software en componentes reconfigurables, conservando atributos vitales como eficiencia, costo, tiempo de desarrollo, entre otros [5].

En los últimos años se ha desarrollado toda una nueva industria de tarjetas de desarrollo electrónicas para sistemas embebidos, es decir, para sistemas móviles que muchas veces corren de manera automática e independientemente.

Considerando un sistema embebido como se ha mencionado anteriormente, y específicamente en el procesador que tiene incluido, que contiene una arquitectura ARM. Podemos considerar las siguientes características [6]:

La Mecatrónica en México, Vol. 4, No. 2, páginas 53 � 64, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

56

Bajo consumoCapacidad de procesadoReducción del tiempo de desarrollo hardwareAlta escalabilidadTamaño muy compactoSoportan varios módulos embebidos de ARMSistemas operativos Linux y AndroidPlataforma de desarrollo flexible

Figura 2. Esquema general de la arquitectura ARM [7].

Este tipo de sistemas ya se encuentran en muchos lugares y sirven para medir la temperatura ambiente, para llevar el control de la seguridad de una fábrica o para enviar información de manera inalámbrica. Los usos sólo están limitados por la imaginación de los desarrolladores.

1.2 Justificación de la investigación

En la mayoría de sistemas de reconocimiento facial utilizan como medio de procesamiento de las imágenes una computadora personal y una cámara que captura el rostro y no indican que tipo de procesamiento llevan a cabo, es decir, que algoritmo se implementó. El sistema de reconocimiento facial propuesto se basa en una plataforma embebida de bajo consumo, comprende un procesador con arquitectura ARM (Advanced RISC máquinas) módulo central de procesamiento, un módulo de

La Mecatrónica en México, Vol. 4, No. 2, páginas 53 � 64, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

57

adquisición de vídeo, un módulo de visualización y una interfaz de transmisión de datos periférica. El algoritmo que se planea implementar (PCA) tiene entre otras característica el ser robusto, rápido y eficiente.

El sistema de reconocimiento facial basado en la plataforma embebida de arquitectura abierta tiene la ventaja de bajo consumo de energía, alta velocidad de computación, la alta precisión de reconocimiento, amplio campo de aplicación y similares.

2. Metodología

La biometría se refiere a la identificación de una persona en base a sus características físicas y de comportamiento. Los sistemas que se basan en la biometría incluyen las características de: huellas dactilares, geometría de la mano, la voz, el iris, el rostro, etc. [8]. La biometría es usada para muchos propósitos, tales como la detección de criminales, identificación, el control de acceso, entre otros [9].

"El reconocimiento facial" es un área muy activa en el campo de la visión por computadora y datos biométricos, ya que se ha estudiado vigorosamente durante 25 años y finalmente produce aplicaciones en seguridad, la robótica, la interfaces hombre-máquina, cámaras digitales, juegos y entretenimiento.

El reconocimiento facial puede operar de dos modos: reconocimiento o identificación y autenticación o verificación. Llevar a cabo un reconocimiento o identificación facial significa dar una imagen de la cara y se requiere que el sistema diga quién (si él o ella) es la más probable identificación. En este procedimiento se dice que la coincidencia es de 1:K, donde K representa el número de clases, es decir, se compara la imagen de entrada con las K existentes en la base de datos para concluir si se trata de una coincidencia o no [10].

Mientras que en la autenticación o verificación facial, dada una imagen del rostro y una estimación de la identificación, se requiere que el sistema diga si es verdadera o falsa la estimación que se realizó. En este caso la coincidencia es de 1:1 ya que dada una imagen de entrada se compara con una sola clase de imágenes (la cual representa un conjunto de imágenes de la misma persona, ver Figura 4).

El reconocimiento o autenticación facial presenta una problemática, pues el promedio de aciertos en la estimación de la identificación es bajo, en particular, se estima que se encuentra entre un 35% y un 65% de efectividad, dependiendo de las condiciones de iluminación, tamaño de la imagen, etc. por lo que el sistema de autenticación facial mediante procesamiento digital de imágenes debe realizar los ajustes necesarios (compensar) de iluminación, de ajuste de tamaño y de mejora en el algoritmo de reconocimiento facial para aumentar el porcentaje de reconocimiento en más de un 70%.

Aunado a lo anterior, en la mayoría de sistemas de control de acceso utilizan como medio de procesamiento de las imágenes una computadora personal y una cámara que captura el rostro y no indican que tipo de procesamiento llevan a cabo, es decir, que algoritmo se implementó. En la mayoría de los sistemas trabajan con 1 o máximo 2 algoritmos, sin que se pueda modificar. En este caso la propuesta es utilizar un sistema basado en un módulo de procesamiento con núcleo ARM (Advanced RISC máquinas) y un sistema de adquisición de imágenes utilizando una webcam de alta definición (HD). El desarrollo propuesto se llevará a cabo con herramientas de código abierto, lo que facilitara el proceso de implementar diferentes algoritmos en el mismo sistema de desarrollo.

Para el desarrollo de este proyecto es necesaria la adquisición de una imagen de entrada, a la cual se le aplicará el algoritmo PCA para adquirir sus puntos de interés.

La Mecatrónica en México, Vol. 4, No. 2, páginas 53 � 64, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

58

Una vez que se ha realizado este proceso, el siguiente paso consiste en enviar la información de estos puntos mediante una conexión inalámbrica para hacer una comparación de las características de la imagen de entrada con las características de las imágenes que se encuentran almacenadas en el servidor.

Figura 3. Reconocimiento o Identificación facial [10].

Figura 4. Autenticación o Verificación facial.

Posteriormente se realizará el proceso de autenticación para definir si las características faciales del usuario que intenta tener acceso al dispositivo móvil, corresponden con las del usuario que se tienen almacenadas en el servidor, si el resultado es correcto se podrá acceder al dispositivo móvil pero si el resultado es incorrecto, a este usuario no se le permitirá el acceso.

Los pasos a seguir son los siguientes:

La Mecatrónica en México, Vol. 4, No. 2, páginas 53 � 64, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

59

Imagen de entrada desde la webcam. Se obtienen las características de los puntos de interés de la imagen por medio del algoritmo PCA.

Características de la imagen.Comunicación vía inalámbrica.Base de datos con las características de las imágenes del usuario. Se realiza comparación

entre las características de la imagen de entrada y las almacenadas.Resultado de la comparación. Se acepta o rechaza el acceso del usuario mediante una señal de salida de la tarjeta de

desarrollo.

Uso de Bases de Datos de Imágenes. Con la finalidad de validar la metodología propuesta es necesario implementarla en bases de imágenes confiables, las cuales se utilizan en una gran parte de artículos de la literatura citada en este proyecto.

Adquisición de las imágenes. Además de contar con bases de imágenes, se pueden adquirir un conjunto de imágenes del rostro de una persona [11], con características como; las imágenes se tomarán con perfil frontal a la cámara, bajo diferentes condiciones de iluminación, expresiones faciales mínimas y poca variación en la posición de la cabeza.

Creación de la Base de Datos. En una computadora se creará una base de datos la cual almacenará las características de las imágenes adquiridas, con las cuales se estarán comparando las características de la imagen de entrada para determinar si el sistema permite o no la autenticación del usuario que intenta tener acceso al dispositivo móvil.

El método Eigenfaces adopta un enfoque holístico para el reconocimiento facial: Una imagen de la cara es un punto de un espacio de imagen en un conjunto de alta dimensión y se encuentra representación en una dimensión menor, en la cual la clasificación se lleva a cabo de forma sencilla.

El subespacio dimensional inferior se encuentra con el método PCA, que identifica los ejes con varianza máxima. Si bien este tipo de transformación es óptima desde el punto de vista de reconstrucción, que no toma ninguna etiqueta de clase en cuenta. Imagine una situación en la que se genera la varianza de fuentes externas, por ejemplo la iluminación. Los ejes con la máxima varianza no contienen necesariamente información discriminativa en absoluto, por lo tanto, una clasificación se hace imposible. De esta forma, se puede aplicar una proyección específica de clase con un discriminante lineal para el reconocimiento facial. La idea básica es reducir al mínimo la varianza dentro de una clase, mientras que maximiza la varianza entre las clases al mismo tiempo. Recientemente surgieron varios métodos para la extracción de características locales. Para evitar la alta dimensionalidad de los datos de entrada sólo regiones locales de una imagen se describen las características extraídas son (con suerte) más robusto frente a la oclusión parcial, iluminación y pequeño tamaño de la muestra.

El problema que tenemos en la imagen es su alta dimensionalidad. Imágenes bidimensionales (p x q) en escala de grises abarcan un espacio vectorial m = pq-dimensional, de tal forma que una imagen de 100 x 100 pixeles se encuentra en un espacio de imagen 10,000-dimensional. ¿Es demasiada información para cualquier cálculo, pero son todas las dimensiones realmente útiles para nosotros? Sólo podemos tomar una decisión si hay alguna variación en los datos, por lo que lo que estamos buscando son los componentes que representan la mayor parte de la información. El PCA se propuso para convertir un conjunto de variables posiblemente correlacionadas en un conjunto menor de variables no correlacionadas. La idea es que un conjunto de datos de alta dimensión es a menudo descrito por variables correlacionadas y, por tanto, sólo unas pocas dimensiones significativas representan la mayor parte de la información. El método PCA encuentra las direcciones con la mayor varianza en los datos, llamado componentes principales.A continuación se presenta el algoritmo PCA.

La Mecatrónica en México, Vol. 4, No. 2, páginas 53 � 64, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

60

Se considere un vector aleatorio con observaciones

1. Calcular la media

(1)

2. Calcular la matriz de Covarianza

(2)

3. Calcular los eigenvalores y eigenvectores de S

(3)

4. Ordenar los eigenvectores en orden descendente por sus eigenvalores. Los k componentes principales son los eigenvectores correspondientes a los k eigenvalores mayores.

Los k componentes principales del x valor observado, están dados por

(4)

Donde . La reconstrucción que lleva a cabo el PCA se hace en base a

(5)

El método de Eigenfaces lleva a cabo el reconocimiento facial mediante los siguientes pasos:

a) Se proyectan todas las muestras de entrenamiento en el sub-espacio PCA utilizando la Ec. 4.b) Proyectar la imagen que se busca en el sub-espacio PCA utilizando la Ec. 5.c) Encontrar el vecino más próximo entre las imágenes de entrenamiento proyectadas y la imagen que

se busca.

3. Resultados

3.1 Reconocimiento de rostros con eigenfaces (PCA) utilizando C++ y OpenCV

En el proyecto se incluyó el método de "Eigenfaces" debido a que es uno de los métodos más utilizados, además de ser robusto en su implementación, y finalmente por su rapidez en la ejecución. Para este propósito, se tomó como base el desarrollo de herramientas basadas en C++, debido a su velocidad para el cálculo matricial. Además, se utilizó la librería OpenCV para implementar los algoritmos de procesamiento de imágenes. El primer desarrollo fue creado con Visual Studio 2010, y librerías de OpenCV 2.3, como se muestra en la Figura 5.

"El reconocimiento facial" por lo general consta de dos etapas: (i) detección de la cara, donde en la foto se busca encontrar alguna cara, entonces el procesamiento de la imagen se centra en procesar la información de esa cara detectada, reduciendo el área de procesamiento, (ii) reconocimiento facial, donde ese rostro detectado y procesado se compara con una base de datos de caras conocidas, para decidir quién es esa persona.

La Mecatrónica en México, Vol. 4, No. 2, páginas 53 � 64, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

61

a) Detección de rostro 1 b) Detección de rostro 2

c) Tiempo de detección d) Imagen promedio

e) Eigenfaces creadas y utilizadas para la detección del rostro

Figura 5. Pruebas del software desarrollado, utilizando el método de Eigenfaces

En la Figura 6 se puede mostrar el software desarrollado en sus 2 etapas, en la parte a) se muestra la imagen, en donde se resalta en color verde la detección del rostro 1, en esta área se

La Mecatrónica en México, Vol. 4, No. 2, páginas 53 � 64, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

62

localiza la detección de la cara, y abajo de esta localización se muestra el nivel de confidencia con el cual se detectó el rostro. En el inciso c) se muestra el tiempo que se tomó para la detección del rostro. La imagen promedio de las caras utilizadas para la detección, se muestra en el inciso d) de la Figura 5. Finalmente, las Eigenfaces creadas y utilizadas para la detección se muestran en el inciso e) de la Figura 5.

3.2 Reconocimiento de rostros con eigenfaces (PCA) utilizando Python � OpenCV

El reconocimiento de rostros se realiza en dos etapas. La primera etapa consiste en la detección del rostro, donde se busca en la imagen un rostro, y se toma solamente esa sección, que es con la que se trabaja para continuar con la segunda etapa. En la segunda etapa, se toma la imagen exclusivamente del rostro reconocido y esa imagen es procesada y comparada contra una base de datos de rostros conocidos, para decidir qué persona es.

En la figura 6 se muestra un diagrama a bloques del proceso utilizado en Python, para obtener la sección del rostro, para su comparación con una base de datos.

Figura 6. Metodología para el reconocimiento del rostro.

La metodología es implementada utilizando el lenguaje de programación Python, el cual es compatible con el sistema Debian, instalado en una tarjeta Beagleboard, para el desarrollo del proyecto. El programa mencionado utilizó librerías OpenCV para el procesamiento de imágenes. A continuación, se describe brevemente el proceso del programa en Python.

1. La cámara es inicializada utilizando la función VideoCapture(0). El valor 0 es para indicarle el número de la cámara. En caso de contar con dos cámaras, la segunda cámara tendrá el número 1.

La Mecatrónica en México, Vol. 4, No. 2, páginas 53 � 64, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

63

2. El video es capturado de manera continua, al tiempo que se está detectando de manera continua el rostro.

3. Una vez detectado el rostro, el mismo es marcado por un cuadrado, en este caso de color azul.

4. Se extrae la sección de la imagen que contiene el rostro.5. La imagen es redimensionada a un tamaño de 125x150 pixeles.6. Se convierte la imagen a escala de grises, y se aplica un proceso de ecualizado para lograr un

contraste adecuado de la imagen.7. Se realiza una comparación contra una base de datos, y se devuelve el resultado. En caso de

tener una comparación exitosa, se indica el nombre de la persona con la que coincide el rostro y en caso contrario, se devuelve como resultado: �Desconocido�.

8. Termina el programa.

4. Conclusiones

El presente trabajo de investigación muestra una propuesta para autenticación facial utilizando el algoritmo Principal Component Analysis (PCA) modificado. La metodología propuesta se desarrollóen dos etapas; la primera fue la implementación del algoritmo SURF en C++ con librerías OpenCV con la finalidad de valorar el algoritmo, y la segunda se implementó en Python 2.7 y el uso de librerías de OpenCV.

La metodología propuesta fue probada con la adquisición de múltiples imágenes con poses diferentes de varios usuarios, se entrenó al sistema y posteriormente se implementó la parte del reconocimiento facial. Nuestra metodología propuesta tiene un mejor rendimiento en el porcentaje de autenticación y reconocimiento que el algoritmo PCA original.

Creemos que existen algunos aspectos que se pueden cambiar en este proceso para obtener un porcentaje de autenticación y reconocimiento más alto. Entre estos aspectos a considerar tenemos un análisis más profundo en la etapa de preprocesamiento, así como del efecto de la expresión facial y pose.

Como trabajo futuro tenemos la elaboración de una base de datos de imágenes más amplia con diferentes condiciones de iluminación y algunas posiciones del rostro (ejem., frente al dispositivo de captura y con algún ángulo de rotación de la cabeza). Estas bases de datos de imágenes servirán para ver y valorar la repetibilidad del algoritmo y si tiene alguna variación con los porcentajes de autenticación y reconocimiento facial.

Finalmente es necesario mencionar que se pueden implementar las pruebas en diferentes tarjetas con arquitectura ARM; ejem. Raspberry Pi (modelos B, B+ y 2), BeagleBone Black, etc., con la finalidad de verificar el desempeño de este tipo de hardware embebido y poder así plantear el desarrollo de un sistema de reconocimiento facial más robusto y con un número mayor de núcleos de procesamiento.

Referencias

[1] Brunelli, Roberto, and Tomaso Poggio. "Face recognition: Features versus templates." IEEE Transactions on Pattern Analysis & Machine Intelligence 10 (1993): 1042-1052..

[2] Zhao, Wenyi, et al. "Face recognition: A literature survey." ACM computing surveys (CSUR) 35.4 (2003): 399-458..

[3] Hernández, R. G. Estudio de técnicas de reconocimiento facial., Departamento de Procesado de Señal y Comunicaciones. 2010.

La Mecatrónica en México, Vol. 4, No. 2, páginas 53 � 64, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

64

http://upcommons.upc.edu/pfc/bitstream/2099.1/9782/1/PFC_RogerGimeno.pdf (Consultado el 28 de Febrero del 2015)

[4] Fuentes, Benoit, Roland Badeau, and Gaël Richard. "Adaptive harmonic time-frequency decomposition of audio using shift-invariant PLCA." Acoustics, Speech and Signal Processing (ICASSP), 2011 IEEE International Conference on. IEEE, 2011.

[5] Aceves M. & Ramos J., �Fundamentos de Sistemas Embebidos�, Asociación Mexicana de Mecatrónica A.C. México. 1ra edición, 2012.

[6] Romero M. E., Martínez E. A.,. Microcontroladores de 32 bits ARM. 2011[7] Embedinfo, 2014. Embedded System Development Specialist. ,

http://www.embedinfo.com/en/ARM_Cortex-list.asp?id=15 (Consultado el 28 de Febrero del 2015)[8] Brumnik, Robert, Iztok Podbregar, & Teodora Ivanu�a. �Reliability of Fingerprint Biometry (Weibull

Approach)�. INTECH Open Access Publisher, 2011.[9] Duc, Nguyen Minh, and Bui Quang Minh. "Your face is not your password face authentication

bypassing lenovo�asus�toshiba." Black Hat Briefings. 2009.[10] Chao, Wei-Lun. "Face Recognition.". GICE, National Taiwan University. 2007.[11] Bhattacharyya, Debnath, et al. "Biometric authentication: A review." International Journal of u-and

e-Service, Science and Technology 2.3. 2009.

La Mecatrónica en México, Vol. 4, No. 2, páginas 65 � 76, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

65

Desarrollo de un Sistema de Detección de Movimiento basado en Flujo Óptico en Raspberry Pi

Silva Blanco Gonzalo Elias1, Avecilla Rangel Francisco Javier1, Rivas Araiza Edgar Alejandro2, Toledano Ayala Manuel2, Pedraza Ortega Jesus Carlos1, Ramos Arreguín

Juan Manuel1

1Facultad de Informática, Universidad Autónoma de Querétaro, 2Facultad de Ingeniería, Universidad Autónoma de Querétaro,

[email protected]

Resumen

El presente proyecto muestra una alternativa para desarrollar un sistema para la detección de movimiento, utilizando sistemas embebidos de bajo costo basados en microprocesador. Se realiza la implementación de un algoritmo para la detección de flujo óptico. El flujo óptico se caracteriza básicamente por la detección de movimiento en una secuencia continua de imágenes o en un video en particular. De esta manera, es posible que se detecte movimiento en una zona donde no debe existir actividad en un horario específico. El sistema que se va a desarrollar se basa en el uso de sistemas embebidos basados en microprocesador, en este caso, una tarjeta Raspberry Pi, el cual cuenta con una cámara de 5 Mega-pixeles, para la adquisición de imágenes o video, así como la instalación de Python y las librerías de OpenCV. Se analizan diversas opciones de algoritmos de flujo óptico para determinar el que puede ser implementado en la tarjeta mencionada. Una vez que el sistema detecta movimiento, se adquiere la imagen del lugar y es almacenada para un análisis posterior.

Palabras clave: Sistemas embebidos, Raspberry Pi, flujo óptico, Raspberry Pi, Python, openCV.

1. Introducción

El flujo óptico visto desde un punto de vista de visión artificial es una herramienta algorítmica que ha probado ser un componente de vital importancia en tareas de visión por computadora. Entre las cuales destacan detección y cálculo de tiempos de colisión, segmentación del movimiento, seguimiento, extracción de fondo, odometría visual, compresión de video, entre otras tareas, que bien pueden ser usadas tanto en el dominio de la inspección industrial, la robótica y misiones espaciales.

Para el hombre la capacidad de recibir a información través de sus sentidos, las imágenes, impresiones o sensaciones para conocer algo, alude al término percepción. La percepción visual es el medio más importante puesto que permite tener conocimiento espacial de un entorno relativamente amplio, a una resolución considerablemente alta, permitiendo procesar escenas dinámicas de forma natural, desde la estimación del movimiento relativo entre objetos, movimiento propio, orientación, discriminación entre distintos objetos e incluso en reconocimiento de objetos.

Con la finalidad de reproducir sistemas capaces de analizar el movimiento de objetos dentro de una escena, se han propuesto múltiples algoritmos de estimación del movimiento, y también existen

La Mecatrónica en México, Vol. 4, No. 2, páginas 65 � 76, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

66

diversas formas para clasificarlos. Una propuesta de clasificación la da Tabatabai [1], donde una primera clasificación es la existente entre técnicas de detección del movimiento 3D y técnicas de detección del movimiento 2D. Dentro de cada técnica existen distintos métodos que a su vez, algunos de ellos, pueden sub-clasificarse, y al mismo tiempo se complementa con la clasificación propuesta por Barrón [2] tal como se muestra en la figura 1.

á =

3

2

ó

ó

ó

ó

í

á

ó

( )

á

Figura 1.- Clasificación de las distintas técnicas para el análisis del movimiento.

El flujo óptico, es definido como el movimiento aparente de un patrón de brillo sobre una superficie y/o borde en una escena, causado por el movimiento relativo entre un observador y la escena. Este concepto fue introducido por primera vez en la década de 1925 por el psicólogo Von H. Helmholtz [3]quien lo atribuía principalmente a la percepción de las variaciones de la imagen en la retina y, finalmente, fue publicado por el psicólogo estadounidense James J. Gibons [4] indicando su relación directamente con el patrón óptico y haciendo referencia a la estructura poseída por la luz en un punto de observación en movimiento. En un concepto bio-inspirado es el cambio estructurado de patrones de luz sobre la retina que conduce a una impresión del movimiento de la imagen visual proyectada, tal como se presenta en la figura 2.

Figura 2.- Desplazamiento de dos características visuales en un plano y el globo ocular.

La Mecatrónica en México, Vol. 4, No. 2, páginas 65 � 76, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

67

De manera análoga, si la luz en la estructura es muestreada espacial y temporalmente, y resulta en una secuencia de imágenes como las presentadas en la figura 3, es posible determinar los vectores de desplazamiento de dicho patrón.

El hecho es que, se defina como se defina, el flujo óptico es la mejor medida del movimiento en el espacio bidimensional. El cálculo del flujo óptico es importante para un sistema artificial y para un organismo vivo. El único problema es que el flujo óptico, sigue siendo un campo de investigación buscando nuevas estrategias y técnicas para su cálculo [5], [6]. La razón es que los sistemas de visión artificial todavía no han logrado calcularlo con precisión elevada en poco tiempo.

Actualmente existe una amplia base de conocimiento acerca de métodos para el cómputo del flujo óptico. Estos pueden ser clasificados en cuatro grupos principalmente: aquellos basados en derivadas, correlación, energía y fase. Sin embargo, el cómputo del flujo óptico así como de algunos otros algoritmos, sufre de alta complejidad computacional, por lo que aplicaciones robóticas y espacialesrequieren el uso de sistemas de cómputo de alto costo. Para este tipo de implementaciones es común el uso de PCs, Procesadores Digitales de Señales (Digital Signal Processing) y Microcontroladores. Enlos últimos años el desarrollo de hardware, ha hecho posible el uso de microprocesadores con un alto poder de cómputo, los cuales son empleados en sistemas embebidos como tarjetas de desarrollo basados en microprocesadores, dispositivos lógicos reprogramables FPGA y dispositivos móviles.

Figura 3. Secuencia de tres imágenes, donde el flujo óptico es representado por el contorno de los pixeles entre el cuadro 0 y 1 así como el cuadro 1 y 2.

El presente trabajo presenta el resultado de haber implementado un algoritmo proyecto, busca hacer uso de las tecnologías de sistemas embebidos y dispositivos móviles para implementar algoritmos de flujo óptico, y detectar movimiento en áreas donde en ciertos momentos no debe existir movimiento. Los equipos comerciales son extremadamente costosos, y con el uso de sistemas embebidos y sistemas móviles, se pueden tener sistemas con un menor costo.

2. Desarrollo

En esta sección se presenta el desarrollo del trabajo, comenzando por una evaluación de métodos que puedan ser implementados en la tarjeta Raspberry Pi, de acuerdo a sus limitaciones.

La Mecatrónica en México, Vol. 4, No. 2, páginas 65 � 76, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

68

2.1 Evaluación de técnicas de flujo óptico.

Es posible evaluar diversos métodos comparándolos uno respecto de otro en términos de precisión y velocidad de computo [2], [7], en alguna secuencia de imágenes conocida tal como ��Rubik�s cube��, ��Hamburg Taxi��, ��Translating Tree�� o �Yosemit with clouds� presentadas en la figura 4, o bien referirnos a una base propuesta como punto de referencia [7], la cual presenta secuencias de imágenes de textura oculta, sintética, tipo estéreo y de cámara de alta velocidad y es presentada en la figura 5.

En el desarrollo de algoritmos de Flujo Óptico se considera lo siguiente:

Precisión. Dentro de la literatura uno de los principales puntos a evaluar para cualquier tipo de técnica para el cálculo del flujo óptico es el desempeño de los valores obtenidos, en particular Baker [7]refina y extiende la metodología de evaluación propuesta por Barron [2] en términos de: medidas de desempeño y estadísticas calculadas.

Figura 4. Secuencias de imágenes comúnmente empleadas para la evaluación de algoritmos de flujo óptico a) Cubo Rubik, b) Hamburg Taxi, c) Translating Tree, d) Yosemit with cloud.

La Mecatrónica en México, Vol. 4, No. 2, páginas 65 � 76, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

69

Figura 5. Secuencias de imágenes contenidas en Middlebury database.

Error angular (AE). Es la medida más comúnmente usada para medir el desempeño del flujo óptico. Es calculado entre un vector de flujo estimado ( , ) y un vector de referencia ( , ). Se calcula mediante el producto punto de los vectores, dividiendo por el producto de sus distancias, y calculando la inversa del coseno, ecuación (1). Esta medición fue introducida por Barrón [2].

= cos1 + +

1 + + 1 + + (1)

Error de punto final (EE). Es posible medir el error absoluto en un punto final de flujo, usado por Otte & Nagel [9](1994) y definido en la ecuación (2).

= ( ) + ( ) (2)

Interpolación (IE). Para hacer uso de interpolación de imágenes Szeliski introduce el error de interpolación para ser la raíz cuadrada media (RMS) diferencia entre una imagen de referencia y la imagen interpolada estimada , ecuación (3).

= [1

( ( , ) ( , ))

( , )

] (3)

Donde N es el número de pixeles. Para imágenes en color, es necesario considerar la norma 2

del vector de diferencias RGB.

Interpolación normalizada (NE). El error de interpolación normalizada entre la imagen interpolada y la imagen de referencia es denotado por la ecuación (4).

= [1 ( ( , ) ( , ))

( , ) +( , )

] (4)

Estadísticas Calculadas. Se puede realizar variantes de las mediciones anteriores, como es el promedio de los errores angulares en la imagen completa, y se obtiene una medida global llamada error medio angular (AAE) para la imagen. También se puede definir AAE como medición de una secuencia (SAAE) así como su respectiva desviación estándar (SD) [7].

La Mecatrónica en México, Vol. 4, No. 2, páginas 65 � 76, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

70

Velocidad. Un punto a resaltar en la evaluación de cada método es el tiempo de computo necesario para la estimación del flujo óptico, para lo cual es necesario reproducir cada método e implementarlo sobre una misma plataforma a fin de obtener resultados lo más exactos para su comparación, una aproximación a esto es la presentada por Baker [7] para los cuales se usa la secuencia Urban contenida en Middlebury database, sin embargo, no se encuentran normalizados para un mismo entorno de programación, velocidad de PC, numero de núcleos o aceleración de hardware, sino más bien son tratados como una guía muy aproximada de la complejidad computacional inherente a los algoritmos.

2.2 Flujo óptico método seleccionado (Horn & Schunk, 1981)

El Flujo Óptico cuenta con dos vectores desconocidos y en una sola ecuación lineal. Por lo anterior, es necesario introducir ciertas restricciones adicionales a fin de poder calcular estos vectores. Horn & Schunck [8] introducen una ecuación adicional de restricción de suavidad. Esta segunda restricción es desarrollada en base a la observación a menudo en secuencias de video, los pixeles vecinos a un pixel de la imagen están sujetos a un movimiento similar al del pixel mismo. Este comportamiento resulta en un vector de campo de suave variación y una ecuación de restricción de la suavidad. El término de restricción es obtenido definiendo una función de costo adecuado. El primer componente de este costo es para representar el monto total de cambio en la imagen como una función de la posición de la imagen (x, y). Calculado como el cuadrado de las magnitudes de los gradientes de los vectores de flujo óptico y dado por la ecuación (5).

= + + + (5)

Otro componente de la función de costo es acerca de la constancia de iluminación sobre una misma secuencia de imágenes, ecuación (6).

= + +(6)

El problema puede ser reformulado como una minimización combinada de la función de costo calculado sobre la imagen completa, ecuación (7).

= ( + ) (7)

Aquí, es un término de peso usado para ajustar la contribución relativa de los dos términos en la función de costo. Es posible ajustar la suavidad de el campo de flujo óptico mediante el ajuste de .Incrementando el valor de este parámetro se incrementara el peso del termino de suavidad en la función de costo y por lo tanto, el algoritmo dará lugar a un campo de flujo óptico más suave. Este parámetro juega un papel importante solo para áreas donde el gradiente de iluminación es pequeño, previniendo ajustes aleatorios para la estimación de la velocidad de flujo ocasionados por ruido en la estimación de las derivadas. Esta formulación acepta que durante la minimización, la iluminación se verá minimizadapero no será exactamente cero. Este no es un problema debido a que en la práctica los valores de iluminación cambian muy levemente para ruido o cuantización de errores.

Los valores del par ( , ) que minimizan la función de costo presentada en (7) son el vector de campo del flujo óptico. Esto puede ser reformulado en la Ecuación (8).

+ =

+ =(8)

En la práctica, la solución es obtenida por el método iterativo de Gauss-Seidel [12], ecuación (9).

La Mecatrónica en México, Vol. 4, No. 2, páginas 65 � 76, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

71

=( + + )

+ +

=( + + )

+ +

(9)

Donde representa el número de iteración. Para el desarrollo computacional de la Ecuación (9), los gradientes y LaPlacianos pueden ser estimados numéricamente. Esto es posible mediante diversas formas. Para el cálculo del gradiente, Horn & Schunck [8] utiliza una diferenciación de primer orden en un arreglo de ocho pixeles mostrado en la figura 6a. El Laplaciano es estimado mediante la substracción del valor en un punto promedio, ponderando los valores de los pixeles vecinos, mediante el uso de una máscara de 3x3 mostrada en la figura 6b, para el cálculo de los promedios locales de vectores de flujo óptico, donde los subíndices ( , , ) representan los números de fila, columna e imagen respectivamente. Haciendo uso de la máscara presentada en la figura 6a, donde el cálculo de puede ser obtenido como en la Ecuación (10), de igual forma para los gradientes y .

=1

4( , , , , + , , , , + , , , , + , , , , ) (10)

Figura 6. (a) Diferenciación de primer orden de ocho pixeles. (b) Matriz de peso para estimación de promedios locales.

2.3 Adaptación del algoritmo en entorno de procesamiento de imágenes.

Una vez considerado el algoritmo y considerando su naturaleza se prosigue a su implementación en el entorno seleccionado, para lo cual se plantea el diagrama a bloques presentado en la figura 7. Elbloque principal representa una arquitectura general de procesamiento de imágenes, mediante una etapa de adquisición, procesado y etapa final, la cual representa una interpretación del movimiento en la escena, como se muestra en la figura 8.

La Mecatrónica en México, Vol. 4, No. 2, páginas 65 � 76, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

72

Figura 7. Diagrama a bloques del algoritmo seleccionado.

Figura 8. Etapas que constituyen un sistema para el procesamiento de imágenes.

2.4 Implementación en Sistema Embebido basado en Microprocesador

Para este propósito se utiliza la tarjeta Raspberry Pi, la cual se muestra en la figura 9. Se utiliza el lenguaje de programación Python, y librerías OpenCV para la adquisición de las imágenes, así como el procesamiento de las imágenes.

Figura 9. Tarjeta Raspberry Pi, para implementar el algoritmo de Horn & Schunk.

El siguiente código es utilizado para la implementación del algoritmo de Horn & Schunk en la tarjeta Raspberry Pi.

import cv2import sysimport numpy as np

def Pixel(img, i, j):i = i if i >= 0 else 0j = j if j >= 0 else 0i = i if i < img.shape[0] else img.shape[0] - 1

La Mecatrónica en México, Vol. 4, No. 2, páginas 65 � 76, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

73

j = j if j < img.shape[1] else img.shape[1] - 1return img[i, j]

def xDer(img1, img2):res = np.zeros_like(img1)for i in xrange(res.shape[0]):

for j in xrange(res.shape[1]):sm = 0sm += Pixel(img1, i, j + 1) - Pixel(img1, i, j)sm += Pixel(img1, i + 1, j + 1) - Pixel(img1, i + 1, j)sm += Pixel(img2, i, j + 1) - Pixel(img2, i, j)sm += Pixel(img2, i + 1, j + 1) - Pixel(img2, i + 1, j)sm /= 4.0res[i, j] = sm

return res

def yDer(img1, img2):res = np.zeros_like(img1)for i in xrange(res.shape[0]):

for j in xrange(res.shape[1]):sm = 0sm += Pixel(img1, i + 1, j ) - Pixel(img1, i, j )sm += Pixel(img1, i + 1, j + 1) - Pixel(img1, i, j + 1)sm += Pixel(img2, i + 1, j ) - Pixel(img2, i, j )sm += Pixel(img2, i + 1, j + 1) - Pixel(img2, i, j + 1)sm /= 4.0res[i, j] = sm

return res

def tDer(img, img2):res = np.zeros_like(img)for i in xrange(res.shape[0]):

for j in xrange(res.shape[1]):sm = 0for ii in xrange(i, i + 2):

for jj in xrange(j, j + 2):sm += Pixel(img2, ii, jj) - Pixel(img, ii, jj)

sm /= 4.0res[i, j] = sm

return res

averageKernel = np.array([[ 0.08333333, 0.16666667, 0.08333333],[ 0.16666667, 0. , 0.16666667],[ 0.08333333, 0.16666667, 0.08333333]], dtype=np.float32)

def average(img):return cv2.filter2D(img.astype(np.float32), -1, averageKernel)

def translateBrute(img, u, v):res = np.zeros_like(img)u = np.round(u).astype(np.int)v = np.round(v).astype(np.int)for i in xrange(img.shape[0]):

for j in xrange(img.shape[1]):res[i, j] = Pixel(img, i + v[i, j], j + u[i, j])

return res

def hornShunckFlow(img1, img2, alpha):img1 = img1.astype(np.float32)img2 = img2.astype(np.float32)

La Mecatrónica en México, Vol. 4, No. 2, páginas 65 � 76, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

74

Idx = xDer(img1, img2)Idy = yDer(img1, img2)Idt = tDer(img1, img2)

u = np.zeros_like(img1)v = np.zeros_like(img1)

#100 iterations enough for small examplefor iteration in xrange(100):

u0 = np.copy(u)v0 = np.copy(v)

uAvg = average(u0)vAvg = average(v0)u = uAvg - 1.0/(alpha**2 + Idx**2 + Idy**2) * Idx * (Idx * uAvg + Idy * vAvg

+ Idt)v = vAvg - 1.0/(alpha**2 + Idx**2 + Idy**2) * Idy * (Idx * uAvg + Idy * vAvg

+ Idt)

return u, v

if __name__ == '__main__':img1c = cv2.imread(sys.argv[1])img2c = cv2.imread(sys.argv[2])img1g = cv2.cvtColor(img1c, cv2.COLOR_BGR2GRAY)img2g = cv2.cvtColor(img2c, cv2.COLOR_BGR2GRAY)

u, v = hornShunckFlow(img1g, img2g, 0.1)imgRes = translateBrute(img2g, u, v)cv2.imwrite('res.png', imgRes)print img1gprint translateBrute(img2g, u, v)

En la figura 10 se muestra el sistema completo para detección de movimiento, donde se utilizauna cámara, y una pantalla adicional a la tarjeta.

El sistema está diseñado para realizar el análisis entre dos imágenes previamente seleccionadas, las cuales son analizadas utilizando el método Horn & Schunk, y de la matriz resultante se analizan los vectores para determinar los niveles de movimiento. A continuación, se presentan los resultados de la investigación.

Figura 10. Sistema Raspberry Pi, detección de movimiento utilizando el algoritmo de Horn & Schunk.

La Mecatrónica en México, Vol. 4, No. 2, páginas 65 � 76, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

75

3. Resultados

Se desarrolló una aplicación en un sistema embebido basado en microcontrolador, de nombre comercial Raspberry Pi. El sistema embebido utiliza un sistema operativo basado en Linux, y el desarrollo de la aplicación ha sido desarrollado en lenguaje Python. Cuando la cámara detecta movimiento, se toma una fotografía y la imagen es almacenada en la memoria, para que, en un momento dado, pueda ser analizada posteriormente. También se ha dejado la opción al usuario de activar una alarma sonora, la cual puede ser programada en la misma aplicación. La figura 11 muestra imágenes de los resultados de la detección de movimiento.

Figura 11. Imágenes obtenidas al detectar movimiento.

Las imágenes de la figura 11, muestran a una persona en posición estática (figura 11a), y cuando procede a moverse, el algoritmo de Flujo Óptico Horn & Schunk implementado en la aplicación ydesarrollada en lenguaje Python, detecta cambios en la intensidad de los pixeles que cambian, por lo que el sistema procede a almacenar la imagen (Figura 11b) para un análisis posterior de las incidencias en la zona que está siendo monitoreada. La imagen almacenada tiene formato jpg, con una resolución de 5 MPixeles. Debido a la lentitud de procesamiento del sistema, no se considera la impresión de los vectores de flujo óptico de cada uno de los vectores, simplemente se procesan las magnitudes y de acuerdo a eso se toman las decisiones de movimiento activo.

Se puede apreciar un retardo considerable en la respuesta del sistema a la acción del movimiento, por lo que es necesario mejorar la respuesta para se considere factible su uso como sistema de detección de movimiento. Sin embargo, es importante resaltar que el sistema resulta compacto, por lo que es fácil de ocultar, y el consumo de corriente es bajo, por lo que puede ser alimentado fácilmente con una batería externa. Este sistema tiene un costo aproximado de $1,500.00 MN, sin considerar el monitor de alta definición. Se tiene noticia de que está por salir una versión mejorada de la tarjeta Raspberry Pi, la cual se va a llamar Raspberry Pi 2, que va a contar con una mayor cantidad de memoria RAM, por lo que se considera que esto viene a resolver el problema.

A pesar de que el sistema resulta ser lento en la tarjeta Raspberry Pi, es suficiente para realizar los cálculos necesarios. Las imágenes de la figura 11 fueron pre-procesadas para manejar las mismas en formato de grises y ahorrar de esta manera un poco de memoria. Posteriormente, se configura el

La Mecatrónica en México, Vol. 4, No. 2, páginas 65 � 76, Mayo 2015Disponible en línea en www.mecamex.net/revistas/LMEMISSN en trámite, 2014 Derechos de autor y derechos conexos, Asociación Mexicana de Mecatrónica A.C

76

sistema para detectar movimiento, de forma que cuando la magnitud de los vectores característicos del flujo óptico son mayores de un cierto umbral, entonces se concluye que existe movimiento, por lo cual la imagen es almacenada en la memoria del sistema embebido.

4. Conclusiones

Tomando en cuenta que un dispositivo móvil puede resultar costoso a comparación de un sistema embebido, se procede a realizar la implementación del algoritmo Horn & Schunk en un sistema embebido Raspberry Pi, para comprobar el funcionamiento del mismo y saber si el sistema tiene la capacidad de procesamiento adecuado. Se utiliza el lenguaje Python y librerías OpenCV para el desarrollo de la aplicación, obteniendo de esta manera un sistema de monitoreo con detección de movimiento, de manera compacta y económica. La respuesta del sistema embebido es satisfactoria, aun cuando se hace lento debido a la exigencia de cómputo que implica el algoritmo implementado. Cuando se detecta el movimiento, se toma una fotografía y se almacena para que se pueda realizar un análisis posterior.

En estos casos, es importante resaltar que los sistemas tienen la capacidad de realizar alguna acción secundaria, como emitir alarmas sonoras, envío de mensajes SMS en caso de teléfonos inteligentes.

Se espera que con el uso de la tarjeta Raspberry Pi 2, se mejore la respuesta del sistema, de forma que pueda ser utilizado de una manera más continua.

Referencias

[1] Tabatabai, A., R. Jasindchi, and T. �Naveen. Motion estimation methods for video compression � Areview�. Elsevier Science Ltd, J. Franklin Inst., 335B(8):1411�1441. 1998.

[2] Barron, J. and D. Fleet. �Performance of Optical-Flow Techniques�. International Journal of Computer Vision 12(1): 43-77. 1994.

[3] Von Helmholtz, D. �Treatise on physiological optics�. Translated from the 3rd German Edition. Vol.I James. Soutthall, JPC Dover Publications. 1925.

[4] Gibson, J. �The senses considered as perceptual systems�. A symposium on Perception: 230-232.1967.

[5] Koray, G. and A. Saranli. �An FPGA based high performance optical flow hardware design for computer vision applications�. Journal of Microprocessors and Mycrosystems, 37: 270-286. 2013.

[6] Raudies, F., R. Gilmore, K. Kretch, J. Franchak and K. Adolph. �Understanding the Development of Motion Processing by Characterizing Optic Flow Experienced by Infants and their Mothers�. In International Conference on Development and Learning and Epignetic Robotics (ICDL): 1-6.2012.

[7] Baker, S., D. Scharstein, J. Lewis, S. Roth, M. Black, and S. Richard, �A database and evaluation methodology for optical flow�. International Journal of Computer Vision 92, 1-31. 2011.

[8] Horn, B. and B. Schunck. �Determining optical flow�. AI 17: 185�203. 1981.