miércoles, 16 de marzo de 2016

Técnicas de ficción: Zoom & Enhance

Es común ver en en el cine y la televisión exageraciones relacionadas con la tecnología que no tienen otro fin más que entretener al espectador. Recientemente me he encontrado varios vídeos en los que se parodian precisamente este tipo de "errores", pero también me he dado cuenta de que hay muchos espectadores que se creen a pies juntillas todo lo que ven en la pantalla. Un ejemplo de esto es el llamado efecto CSI.

En cuanto a visión artificial y tratamiento de imagen, que es lo que me toca más de cerca, el error más común y que se repite hasta la saciedad, sobre todo en series policíacas del tipo CSI, es el de "zoom and enhance". Consiste básicamente en hacer un zoom extremo sobre la imagen para después aplicarle un misterioso filtro que permite ver con nitidez cualquier objeto.  Es verdad que en la vida real tenemos una serie de técnicas de superresolución que intentan resolver este problema, pero no está ni de lejos tan desarrollado como en la ficción.

En el siguiente fragmento de la película Call Northside 777 podemos ver una de las primeras veces que se hace referencia en el cine al "zoom and enhance".


Aquí otro ejemplo de la serie CSI utilizando un iphone. No creo que el tuyo haga esto.


Pero esto no se queda ahí, el "zoom and enhance" ha derivado en otras "técnicas forenses" que son capaces de extraer el reflejo de la córnea de un ojo. Un ejemplo extraído de la serie CSI.


En la película Enemigo público podemos ver no solo esta "técnica" sino algo mucho más avanzado, una serie de rotaciones en 3D (imposibles) que permiten saber qué hay en la bolsa.


Existen muchos más ejemplos pero uno de mis favoritos es la triangulación que hacen en la serie Castle a partir de un reflejo de una ventana. Sin palabras.


Está claro que el cine y la televisión están mucho más avanzados que nosotros en técnicas forenses. Quizás debamos pedirles algún consejo sobre cómo hacen eso. Mientras tanto os dejo un par de parodias.




miércoles, 17 de febrero de 2016

Videovigilancia Inteligente, el proyecto INVISUM

Hace ya casi un año desde la última entrada en este blog. Una de las razones principales por las que no he escrito durante todo este tiempo es que me embarqué en un proyecto nuevo llamado INVISUM (INtelligent VIdeo SUrveillance SysteM).

El objetivo principal de este proyecto es crear un sistema avanzado de videovigilancia inteligente que sea flexible y fácilmente escalable. Lo que a la mayoría le sonará a un montón de palabras técnicas vacías de significado, así que voy a explicarlo un poco más.

Un sistema de videovigilancia generalmente se compone de un conjunto más o menos grande de cámaras conectadas a una serie de pantallas. En el mejor de los casos, detrás de estas pantallas se encuentra una persona, que por lo general, ve como no pasa absolutamente nada relevante, lo cual es bastante aburrido. Además está demostrado que tras un tiempo más o menos largo, como es lógico, esa persona se cansa, y deja de prestar atención a lo que está viendo.

Vigilante observando las pantallas de un sistema de videovigilancia
Vigilante observando las pantallas de un sistema de videovigilancia

Con la videovigilancia inteligente lo que tratamos es que esa persona no tenga que estar constantemente delante de las pantallas y pueda hacer otra cosa más productiva. Pero entonces, ¿cómo se va a enterar cuando sí ocurra algo relevante? La respuesta es sencilla, mediante el uso de inteligencia artificial.

Conectamos las cámaras a un conjunto de ordenadores, que mediante visión artificial, procesan e interpretan las imágenes captadas y nos dicen si está pasando algo reseñable. De este modo ya no hace falta que nadie mire constantemente, únicamente cuando el software detecta una situación anómala. A día de hoy somos capaces de detectar una amplia gama de situaciones anormales, como el abandono de mochilas y bolsas o la detección de personas en áreas restringidas. Sin embargo es importante señalar que no son sistemas totalmente autónomos, necesitan cierta supervisión, pero siempre significativamente menor que los sistemas tradicionales.

Hoy en día ya existen algunos productos con estas características, pero generalmente han sido diseñados para dar solución a un problema muy específico en un lugar muy concreto, lo que hace que sean poco flexibles. En nuestro proyecto hemos apostamos por soluciones generalistas, que puedan ser utilizados en lugares muy diferentes con problemas muy diversos. Por eso mismo, para este proyecto hemos optado por un sistema en la nube, permitiendo por un lado que se puedan conectar una gran cantidad de cámaras, y por otro que el personal de seguridad pueda ver las notificaciones desde cualquier lugar del planeta a través de Internet.

Diagrama ejemplo de un sistema en la nube.
Diagrama ejemplo de un sistema en la nube.


INVISUM es por tanto un proyecto en el que confluyen tecnologías muy diversas como son la inteligencia artificial, la visión artificial, el cloud computing, el big data o el Internet de las cosas.

lunes, 30 de marzo de 2015

Visión Artificial en el Espacio

La visión artificial puede aplicarse en multitud de escenarios (robótica, industria, automoción...), pero uno de los que me parecen más apasionantes es el espacio. Aún no hay muchas aplicaciones fuera de la tierra, pero van en aumento.

Uno de los principales problemas que nos encontramos a la hora de diseñar un sistema para el espacio exterior son las condiciones climáticas que allí se dan (cambios bruscos de temperatura, fuerte radiación solar...). Esto nos obliga a utilizar hardware específico que pueda soportar estas condiciones, lo que encarece enormemente el sistema final.

Otro aspecto a tener en cuenta es la inaccesibilidad del espacio, ya que generalmente, antes de desarrollar cualquier algoritmo, necesitamos un conjunto más o menos grande de imágenes captadas en las mismas condiciones en las que deberá funcionar el sistema. Dada la lejanía del espacio y lo complicado que resulta mandar una cámara allí, se necesita tener una gran cantidad de recursos para poder realizar este proceso.

Además, en las aplicaciones que se llevan al espacio no se permite ningún tipo de error, ya que tan sólo uno puede generar grandes pérdidas económicas. La visión artificial es aún un campo muy joven, por lo que para la mayoría de soluciones no está suficientemente pulida ni probada, sobre todo si hablamos de entornos no controlados, lo que disminuye sus opciones en este tipo de ambientes.

Sin embargo, pese a todos estos inconvenientes, ya existen algunas aplicaciones realizadas en visión artificial orientadas sobre todo al control de actitud (orientación de las naves respecto a un sistema de referencia inercial u otra nave) como por ejemplo los star tracker, que calculan la orientación de la nave con ayuda de las estrellas.

Star Tracker
Star Tracker

Para ello, mediante una cámara se detectan las estrellas (puntos brillantes), para después buscar la disposición de éstas en una base de datos que contiene mapas celestes, de forma que se obtiene la porción de cielo hacia la que el sistema está mirando. Una vez que se sabe hacia dónde está mirando la cámara, se calcula la rotación comparando esta porción del cielo de la base de datos con la imagen obtenida. Una vez que se sabe la posición del cielo y la rotación inicial, se hace un seguimiento de las estrellas, recalculando la rotación con cada nueva imagen.

Este tipo de sistemas son muy precisos y además pueden calcular la velocidad angular, es decir, lo rápido que gira la nave, por lo que aporta una información muy valiosa. Sin embargo también tienen algunos problemas, como por ejemplo los ocultamientos al ponerse la tierra o la luna en medio, o los deslumbramientos producidos por el sol.

martes, 2 de diciembre de 2014

¡¡El rosa no existe!!

El rosa no existe. Parece una afirmación atrevida, y hasta cierto punto lo es, pero es así, en realidad no existe.

Cuando vemos un objeto y decimos que es de un cierto color, lo que estamos viendo realmente es la luz que refleja ese objeto. Un objeto iluminado con una luz blanca, realmente está iluminado por un gran número de colores, de hecho estará iluminado por todo el espectro visible (teóricamente), ya que la luz blanca es eso,  la luz de todos los colores mezclada. Cuando esa luz llega al objeto, parte de la luz es absorbida por el propio objeto y parte reflejada. Esa luz reflejada es la que vemos, y la que nos hace ver los objetos de un cierto color.

Ejemplo de reflexión de la luz en un objeto
Ejemplo de reflexión de la luz en un objeto.

Generalmente esa luz reflejada corresponde con una longitud de onda o con una pequeña parte de todo el espectro visible, pero con el rosa es distinto. Con el rosa lo que realmente vemos es dos partes muy alejadas de ese espectro. Vemos una parte del rojo y otra del violeta, es decir, vemos cada uno de los extremos del espectro visible. Esto es posible gracias a la capacidad que tiene el ojo para detectar varias longitudes de onda a la vez, y a la del cerebro que es capaz de fusionar  esa información en una sola.
Espectro electromagnético visible.
Espectro electromagnético visible.

Todo el proceso comienza en la retina, que es donde va a parar la luz que entra por nuestro ojo. En la retina existen dos tipos de células fotosensibles que convierten la luz en impulsos nerviosos, los llamados bastones y conos. Los bastones se activan en condiciones de poca luminosidad (lugares oscuros) y los conos en condiciones de luminosidad normal o alta. A su vez los conos se dividen en tres tipos, los que detectan el color rojo, los que detectan el color verde y los que detectan el color azul. Por lo tanto cada uno es sensible a una parte del espectro, es decir hacen un filtrado de la luz que nos llega. La respuesta de estas células depende de la cercanía de la luz al color que filtran, e decir si llega al ojo una luz entre el verde y el azul, pero que se acerca más al verde, se activarán las células del verde y del azul, pero las del verde con más intensidad. 


Gráfico de respuesta de las células fotorreceptoras
Gráfico de respuesta de las células fotosensibles.

Después de este filtrado, la información de los tres colores se manda al cerebro, donde se fusiona en una sola respuesta. Por ejemplo, cuando el cerebro recibe una mezcla de verde y rojo, como resultado vemos el color amarillo, es decir busca un color "intermedio", o lo que es lo mismo, el cerebro interpola la respuesta de las células para dar un nuevo color.

Cuando el cerebro recibe una mezcla de violeta y rojo, fusiona esa información y busca un color "intermedio" igual que hace con otros colores. El problema es que el color intermedio en el espectro es el verde, que no sería una respuesta válida porque no sería fiel ya que veríamos igual dos cosas totalmente distintas y porque se encuentra muy alejado de los colores originales. Para arreglar este problema, el cerebro interpreta el espectro como algo circular en vez de lineal, y se inventa el color rosa como unión del rojo y el violeta.


Dibujo de la interpretación del cerebro del espectro
Dibujo de la interpretación del cerebro del espectro.

Por lo tanto el rosa no existe, es un color inventado por el cerebro para sustentar su interpretación del espectro, que utiliza para no mezclar colores. No existe en la realidad, o mejor dicho, no tiene un fenómeno físico que lo sostenga ya que simplemente no tiene una longitud de onda asociada.

domingo, 19 de octubre de 2014

Visual SLAM

Cuando empecé a meterme en el mundillo de la visión artificial descubrí una serie de técnicas, muy utilizadas en robótica, que me han estado obsesionando desde entonces. Estas técnicas se llaman Visual SLAM (Simultaneous Localization And Mapping) y permiten que un robot móvil construya un mapa del entorno (desconocido) en el que se encuentra, a la vez que estima la trayectoria de su propio desplazamiento dentro de ese entorno. Existen multitud de técnicas SLAM y pueden utilizar sensores muy variados, pero en este caso hablaré de las que utilizan cámaras, es decir de los Visual SLAM.



En las técnicas de Visual SLAM se pueden utilizar distintos tipos de cámaras: monoculares, binoculares o RGBD (Tipo Kinect). Según el tipo de cámara se utilizan unos algoritmos u otros, pero todos están enfocados a descubrir cuál es la relación de movimiento que hay entre un frame y el anterior, es decir, descubir cuánto y en qué sentido se ha movido la cámara.


Este tipo de técnicas, además de ayudar a los robots móviles a conocer su entorno, se pueden utilizar para otro tipo de aplicaciones. Un claro ejemplo es el de la realidad aumentada, donde se necesita saber la posición de la cámara para poder mostrar los objetos virtuales correctamente. Antes de las técnicas de Visual SLAM, para poder calcular esa posición se utilizaban una serie de dibujos que servían como referencia y que llamamos marcas o marcadores.


Realidad aumentada con marcadores
Ejemplo de realidad aumentada con marcador.

Hoy en día, con estas nuevas técnicas, no hace falta tener ninguna referencia previa, o la referencia se coge del propio entorno, lo que nos da mucha más flexibilidad a la hora de mostrar esos objetos virtuales, haciendo que el resultado sea mucho más atractivo.




domingo, 21 de septiembre de 2014

Cámaras de altos vuelos

Hace unos meses tuve que elegir una cámara que iría instalada en un UAV o drone de gran tamaño. Nunca había trabajado con este tipo de sistemas por lo que intenté buscar información sobre el tema, pero me di cuenta de que no hay mucha abierta al público, ya que la mayoría son sistemas militares. Así que he decidido hacer un post sobre este tipo de cámaras ya que es algo curioso y que puede ayudar a alguien que se vea en la misma tesitura que yo.

Generalmente las cámaras de este tipo se venden ya encapsuladas, y además de la cámara RGB, suelen contener una cámara infrarroja o térmica y un puntero láser para marcar objetivos (aquí sale a relucir el tema militar). Suelen ser del tipo PTZ (pan, tilt y zoom), lo que quiere decir que se pueden mover en horizontal y vertical y además hacer zoom. Normalmente los rangos tanto de movimiento como los del zoom suelen ser muy grandes, pudiendo llegar a girar en torno a 360º en ambas direcciones y tener un zoom de hasta 200x.

Cámara UAV UAS Drone
Ejemplo de cámara para Drones (Cámara STAR SAFIRE 380 HD)

A la hora de elegir un sistema, lo primero que hay que tener en cuenta es la altura a la que volará el drone y la resolución con la que se quiere ver los objetos, ya que ésto determinará la óptica. Generalmente se trabaja con unidades del tipo GRD, NIRS o IFOV, que relacionan el tamaño de un objeto en píxeles con el tamaño real del objeto, es decir, es la relación entre el tamaño de la imagen y el tamaño real de lo que se ve en esa imagen. Lógicamente estas unidades dependen de la altura a la que se encuentra la cámara y del zoom empleado, ya que al acercarse la cámara al suelo o al aumentar el zoom, los objetos en la imagen se ven más grandes, es decir ocupan más píxeles, y viceversa, por lo que cambia la relación entre tamaño en píxeles y tamaño real.

Ejemplo de cómo se ve una misma imagen al variar la relación entre tamaño real y tamaño en píxeles. Las relaciones son de 10cm 25cm 50cm y 100cm por píxel.
Por lo tanto para poder reconocer objetos muy pequeños a gran altura, parece que lo mejor es tener una óptica con mucho zoom e imágenes con mucha resolución. Sin embargo, una gran óptica significa más peso y volumen, que son variables muy críticas en este mundo de los drones. Por lo que nos queda aumentar el tamaño de la imágen (resolución en píxeles), pero teniendo en cuenta que las imágenes tomadas por la cámara generalmente se suelen mandar vía radio a una estación de tierra, hay que tener cuidado en este aspecto. Las imágenes suelen ocupar mucho espacio, y los anchos de banda destinados a este fin suelen ser limitados, por lo que generalmente se opta por imágenes pequeñas y muy comprimidas para poder enviarlas. Así que la elección de una cámara para un drone es un compromiso entre la calidad de las imágenes, las capacidades técnicas del drone (peso y volumen que puede llevar) y los sistemas de comunicación que emplea.

Además de la óptica, un factor a tener en cuenta para obtener una imagen de calidad es la de la estabilización. Hay que tener en cuenta que un UAV se mueve mucho por lo que para que las imágenes no se vean borrosas o movidas hace falta un sistema que minimice ese movimiento. Los sistemas de estabilización de imagen de estos equipos suelen estar compuestos por una parte mecánica que corrige los movimientos más grandes o bruscos, y otra software que hace la corrección más fina.

Otro aspecto que puede marcar la diferencia en este tipo de sistemas es el de los modos de funcionamiento. Además de sacar fotos y vídeo como casi cualquier cámara, estos sistemas pueden tener otros modos de funcionamiento, que aunque son más típicos en los SAR (synthetic aperture radar), también  pueden estar incluidos en estas cámaras y permiten hacer cosas como seguimiento de objetivos, barrido de áreas grandes para crear una gran imagen o panorámica, seguimiento de trazas de calor... etc. En estos modos, las cámaras incluso pueden llegar a comunicarse directamente con el drone para indicarle un rumbo que permita no perder un objetivo marcado o para darle instrucciones que permitan realizar el barrido de un área extensa.

Además de las funcionalidades que la cámara realiza en el aire, hay otras que pueden ampliar su valor y que se realizan en la estación de tierra mediante software especializado (algoritmos de visión artificial), como reconocimiento de vehículos y personas, lectura de una matrícula de coche o identificación de un objetivo.

En general elegir una cámara para un drone es una tarea complicada, ya que no hay mucha información al respecto y hay que tener muchas variables en cuenta a la hora de elegir un sistema. Las claves para decidirse por uno u otro, además de las especificaciones propias de las cámaras, son el objetivo final del drone, sus especificaciones, sobre todo en cuanto a peso y volumen que puede transportar y los sistemas de comunicación empleados.

jueves, 21 de agosto de 2014

Vehículos Autónomos

Desde hace ya algún tiempo se habla mucho de los vehículos autónomos, especialmente de los coches que vendrán en el futuro, pero también de aviones (UAVs), submarinos (AUVs), barcos... etc. Este tipo de sistemas prometen traer grandes mejoras en seguridad, reducción de costes y optimización de recursos, eliminando el factor humano por supuesto.

Para conseguir todo esto se utilizan una gran cantidad de sensores, como GPS, LIDAR, radares o cámaras, y una multitud de técnicas procedentes de disciplinas tan diversas como son la ingeniería de control, la inteligencia artificial, la automatización, y como no podía ser de otra forma, la visión artificial.

Una de las principales necesidades de este tipo de vehículos es la de capturar una gran cantidad de información en sólo un instante de tiempo, por lo que la visión artificial es perfecta, ya que una cámara puede capturar muchos datos del entorno en centésimas de segundo. Por eso hoy quiero hablaros sobre lo que pueden aportar las técnicas de visión artificial a este tipo de vehículos, que pronto estarán presentes en nuestro día a día.

He de decir que hay grupos de investigación que llevan mucho tiempo investigando en en este campo de la visión, sobre todo en coches y camiones, y que han conseguido desarrollar sistemas con una gran capacidad de autonomía. Un ejemplo claro es el grupo VisLab de Parma (Italia), que con más de veinte años de investigaciones se ha convertido en uno de los grupos más importantes, llegando incluso a acabar el DARPA Grand Challenge (carrera de vehículos autónomos fundada por el DARPA para fomentar la investigación en estos campos), con un vehículo que únicamente utilizaba un GPS y visión artificial. Otro ejemplo claro es el archiconocidísimo coche de Google que ya se pasea por las calles de Mountain View y que es un referente en cuanto a fusión de datos procedentes de una gran variedad de sensores.

VisLab Braive coche vehiculo autonomo
El coche de VisLab BRAiVE

Después de tantos años de investigaciones y prototipos se han desarrollado muchas tecnologias basadas en visión y enfocadas sobre todo a la seguridad. Algunos de estos sistemas ya podemos verlos en los coches comerciales de hoy en día, como pueden ser los sistemas de aparcado automático, la detección de coches y peatones, el reconocimiento de la señalización o las alarmas de cambio involuntario de carril. Aunque algunas de estas tecnologías son más o menos maduras, aún queda mucho camino por recorrer, ya que suelen tener fallos (no son fiables al 100%) y los sistemas más avanzados de momento son sólo prototipos. Sin embargo estos prototipos auguran un futuro muy prometedor ya que demuestran que los vehículos autónomos son algo alcanzable en un futuro no tan lejano como podríamos pensar.

Algunas tecnologías basadas en visión que se encuentran en fase de prototipo son el reconocimiento del terreno mediante cámaras estereoscópicas, navegación basada en visión en vez de gps y cálculo de trayectorias de objetos en movimiento (coches, motos, personas...) , para saber dónde se encontrarán en el siguiente instante de tiempo y poder reaccionar con antelación.

Aquí os dejo un vídeo de prototipo de camiones del grupo VisLab para que veáis el alcance de estas tecnologías que espero que veamos dentro de poco circulando por las calles.



En cuanto al futuro, los investigadores se tendrán que enfrentar a un sin fin de retos. Algunos de ellos son hacer que los sistemas sean más fiables, encontrar la manera de que los vehículos se enfrenten a ambientes desconocidos de una forma eficaz e integrar todos los sistemas necesarios en el vehículo de forma que sean imperceptibles (en el caso de los vehículos comerciales). Además de los retos tecnológicos hay otros que tienen que ver con la legislación, el alto coste de estas tecnologías o la seguridad que transmite al usuario que el vehículo se conduzca sólo, por comentar algunos.

En los próximos años iremos viendo como evolucionan y se van integrando en nuestro día a día estos sistemas que son sin ninguna duda el futuro en cuanto a transporte se refiere y que traerá muchas ventajas respecto de los sistemas convencionales.