Reconocimiento de formas y colores

El proposito de éste programa es, como cabría esperar, el reconocimiento de formas y colores para posteriormente enviar los datos procesados a un brazo robot que coje las piezas de la forma y color indicadas.

El programa fue desarrollado en Visual c++ y consta básicamente de las siguientes técnicas de procesado de imagenes:

- Aplicación de filtros de media y mediana.
- Conversión del espacio de colores RGB a HSI
- Binarización de objetos del color elegido.
- Clusterización y separación de los diferentes objetos en búferes diferentes.
- Detección de bordes.
- Cálculo de la Transformada de Hough.

ACTUALIZACIÓN: Codigo fuente en: reconocimiento-de-formas-y-colores-2

Lo primero que se ejecuta es un algoritmo de media repetido unas 10 veces, se utiliza para pulir los defectos encontrados en la superficie de las piezas, tales como arañazos, surcos y falta de pintura en algunas partes.

A continuación se realiza una mediana con el fin de homogeneizar la imagen.

Después de este pretratamiento se llega al menú de selección de color, donde elegimos el color de la pieza a escoger.












Se observa la imagen original y la aplicación de medias y mediana a ésta.

A continuación se realiza el cambio del espacio de colores RGB al espacio HSI.

Posteriormente se binariza la imagen para el color elegido (azul para la fotografía de la izquierda) y nos quedamos solo con unos en los píxeles donde se cumplieran las restricciones de color impuestas.

A continuación se ejecuta un algoritmo de clusterización de píxeles basado en la vecindad del píxel actual.

Es decir, se recorre la imagen desde arriba hacia abajo y de izquierda a derecha y al encontrar un píxel a uno se comprueban los píxeles ya recorridos y si se encuentra alguno en el entorno definido se añade dicho píxel al objeto anterior, en caso contrario se incrementa el contador de objetos y se añade el píxel a un nuevo objeto.

Además se dispone de una matriz de píxeles con el número de objeto al que corresponde cada píxel.

Después se separan los objetos encontrados en búferes de imagen diferentes para mostrarlos posteriormente, además calculamos su área en píxeles.

Si el objeto tiene menos de un 0.7% del área de la foto se desecha como objeto no válido.

A continuación se escriben por pantalla todos los objetos detectados, en caso de ser válidos se escribe también su área.

Luego se calcula el centroide de los objetos válidos y se muestra por pantalla.

Para los diferentes objetos válidos detectados se procede a la detección de bordes mediante el método de Sobel, además aprovechamos para contar el perímetro en píxeles del objeto y lo escribimos por pantalla.

Posteriormente decidimos la clase de objeto que es cada uno mediante una relación de perímetro cuadrado partido por área.

Y procedemos a escribir por pantalla la clase de objeto que es.

A continuación se encuentra un resumen de los objetos detectados y se nos pide la elección del tipo de figura.

Si elegimos una figura que se ha encontrado pasaremos al cálculo de la matriz de Hough de la figura correspondiente.

Además se escribirá un fichero en Matlab llamado hough.m que contendrá las diferentes matrices de Hough encontradas (en el caso de que se encontraran dos rectángulos azules por ejemplo).

Posteriormente se calcula el número de máximos correspondiente a cada tipo de figura (tres para triangulo, cuatro para rectángulos y cuadrados).

Y finalmente se hace un resumen del objeto elegido escribiendo por pantalla el tipo de objeto, las coordenadas del centroide, el ángulo del lado mayor y las coordenadas reales del centroide en mm.
A continuación se espera la pulsación de Esc o q por parte del usuario para pasar por las diferentes imágenes mostradas en los búferes y se cierra el programa.

Por ejemplo esta sería una secuencia de imágenes del programa:

Objetos azules detectados

Primer objeto azul

Segundo objeto azul


Y aquí se observa las matrices de Hough correspondientes:

Rectángulo azul

Triangulo azul


Se observan claramente los máximos correspondientes a las líneas de borde del rectángulo y triángulo.

Si quereis el código fuente o el ejecutable pedidlo en los comentarios y os lo paso.

Project Natal

Barra Project Natal

Desde el anunció en la conferencia del E3 2009 no volvimos a mencionar uno de los dispositivos más innovadores que se presento por parte de Microsoft se trata del Project Natal un nuevo tipo de control que promete cambiar la forma de juego que se conoce, Natal es prácticamente la respuesta de Microsoft a la Wii de Nintendo con el fin de recuperar los jugadores casuales y despegarse un poco de los hardcore gamers (aunque estoy seguro de que a ellos también les gustara), la barra Natal es prácticamente una combinación de una cámara RGB, un sensor de profundidad, un micrófono de múltiples matrices y un procesador, el sensor de profundidad es un proyector de infrarrojos combinado con un sensor CMOS monocromo que permite al “Proyecto Natal” ver la habitación en 3D (en lugar de inferir la habitación a partir de una imagen en 2D) en cualquier condición de luz.

Pero la parte del hardware no lo es todo el software que logra hacer trabajar a la barra cuenta también con reconocimiento facial, reconocimiento de voz y reconocimiento de gestos, también es capaz de reconocer los movimientos de cuatro jugadores a la vez por lo que no será un sistema de un solo jugador. Una de las curiosidades de este control es que el responsable de este es Johnny Chung Lee un ingeniero que se hizo famoso en la red por realizar diferentes experimentos de interacción con el Wii y sus controles el cual ofreció en numerosas ocasiones sus servicios a Nintendo pero fue rechazado por este, al parecer Microsoft si tomo en serio el trabajo que ha realizado y decidió contratarlo para este proyecto.

Por cierto el nombre de Natal es culpa de Alex Kipman quien se lo dio en honor a su ciudad natal de origen “Natal (Rio Grande do Norte)”, además de que Natal en latín quieren decir “a nacer”.

xbox-natal-pr-1-1

Recientemente se ha generado el rumor por parte de la página 1Up quienes aseguran escucharon hablar al personal de Microsoft sobre una nueva consola que traería integrado el Project Natal, aunque no se sabe nada todavía oficialmente se espera que no traiga cambios en lo que se refiere al hardware solo que traerá integrado Project Natal y sera encofada mas a los jugadores casuales, se ha mencionado también que hasta la Game Developers Conference en marzo del 2010 se sabrán mas detalles sobre esta misteriosa consola.

Microsoft ya dio el primer paso en admitir que los jugadores casuales también son parte importante de la industria, esperemos a ver cuál es la respuesta de Nintendo y como siempre a ver qué tontería dirá Sony con respecto al nuevo control de Xbox 360.

Links:

Controla la pc via webcam

Durante el TechCrunch40, una conferencia donde se han presentado una serie de nuevas empresas, hemos tenido la oportunidad de conocer XTreme Reality 3D, una tecnología que nos permite controlar nuestro ordenador a través de la webcam.

El concepto es similar al de la Eyetoy de la Playstation, de forma que nuestra imagen es capturada y analizada por este software para determinar nuestros movimientos, pero en el caso de XTreme Reality 3D las posibilidades y la precisión ofrecida son mucho mayores.
De este modo podemos controlar el puntero del ratón a través de la webcam o imitar pulsaciones del teclado. En los vídeos de presentación mostraron como es posible moverse por los mapas de Google Maps con simples movimientos de nuestra mano.
Una interesante tecnología que habrá que ver como y cuando se integra en nuestros ordenadores.

Fuente
http://www.genbeta.com/2007/09/19-xtreme-reality-3d-controla-el-ordenador-mediante-la-webcam

Pagina oficial:
http://www.xtr3d.com/


Controlar el pc con la mente

Introducción.

Existen muchas formas de interferir con un ordenador pero básicamente hemos utilizado durante mucho tiempo las manos como medio principal de manejar y manipular el ordenador. Este tipo de patrón es lógico ya que estamos diseñados de forma natural para aprovechar nuestras manos para el manejo de todo tipo de herramientas.

Ahora la técnica nos ofrece otros modos de controlar el ordenador mediante impulsos eléctricos generados por nuestro sistema nervioso así como otros efectos reflejos que hasta ahora no usábamos para manejar el ordenador. El NIA de OCZ es el primer periférico moderno que utiliza un triple sistema de medición de reacciones para manipular y controlar el ordenador.

La técnica detrás del OCZ NIA.

Con la colocación de una banda de sensores sobre la frente del jugador con el NIA tendremos un triple sensor capaz de medir nuestro encefalograma (ondas alfa y beta), las reacciones de nuestros músculos faciales mediante un electromiograma o las reacciones de nuestros ojos (parpadeos o flujo sanguíneo) mediante un electrooculograma. Con estos tres tipos de sensores logramos un triple interfaz para manipular el ordenador ajenos al control natural de las manos.

Combinados permitirán al jugador desde manejar el movimiento del personaje hasta activar funciones más complejas como disparar, saltar o activar elementos del juego. También pueden ser aprovechados para el manejo y control de cualquier tipo de aplicación. Puede ser una solución más que adecuada para el control avanzado de cualquier aplicación de entorno tridimensional.

El NIA funciona con un único control, una pequeña caja que no supera los 10cm de largo y pesa menos de 200gr. La caja se conecta sin necesidad de controladores al ordenador pero sí que requiere de una aplicación de control que actualmente está disponible tanto para sistemas operativo de 32 y 64-bit siempre hablando de sistemas Windows.

Un único USB proporciona toda la electricidad que requiere el aparato, ahora solo es necesaria la “maestría” del jugador para saber adaptarse a un sistema de control, quizás más natural, pero bastante ajeno a lo que entendemos actualmente como interfaz del ordenador.

OCZ NIA. Software, calibración y primeras sensaciones.

Este sistema que parece complejo, y en buena parte lo es, se simplifica bastante gracias al software que OCZ ha desarrollado para el NIA. Desde este panel de control es desde donde podemos calibrar nuestro ordenador para el uso del NIA así como la personalización de perfiles de actuación, tan complejos como queramos, para las diferentes reacciones que son capaces de ser traducidas por el NIA en acciones dentro de juego.

Con el NIA encontraremos predefinidos útiles perfiles que usar desde un inicio para ir cogiendo experiencia. Algunos de ellos como el perfil “fácil” de UT3, son especialmente indicados para nuestras primeras experiencias con este periférico. Se basa en movimientos de perspectiva y en saltos y disparos por lo que es ideal para iniciarse sin operaciones complejas.

Desde el panel de calibración también podremos practicar algunos movimientos básicos, sobretodo basados en movimientos musculares, con los que ir practicando nuestras habilidades.

El programa también dispone de un sistema activación mediante comandos de teclas para evitar que activemos comandos antes de haber iniciado el programa especialmente parametrizado. Cuando seamos usuarios avanzados podremos incluso ejecutar macros de acción de forma instintiva pero lo cierto es que es complejo llegar a este nivel de maestría.

Primeras sensaciones usando NIA.

Los primeros minutos con NIA son sencillamente un caos. De hecho la palabra que usaría es frustración. Es difícil saber lo que hacemos, empezamos a mover la cara como si el secreto de su funcionamiento estuviera en poner las muecas más raras que se nos ocurra y por mucho que usemos la mente como si estuviéramos intentando hipnotizar al ordenador nada claro surge de nuestras acciones.

Movimientos caóticos, o ningún movimiento, son las pautas de estos primeros minutos que a más de uno resultaran suficientes para volverse al teclado y al ratón. Sin embargo si aplicamos algo de paciencia y calma las cosas empiezan a funcionar. Los movimientos comienzan a ser mas instintivos según nuestro cerebro comienza a traducir la manipulación del ordenador en accione ya conocidas y pasamos de las muecas extrañas a un sistema más basado en reflejos que en acciones premeditadas.

De hecho no es diferente a la primera vez que nos enfrentamos al ratón, aunque ya no lo recordemos, y poco a poco se va alcanzando un nivel de uso bastante satisfactorio, de hecho, para mi es ya una herramienta ideal sobretodo para juegos de estrategia en tiempo real, en los cuales, podemos realizar rápidos movimientos de cámara dedicando las manos al ratón y a los comandos rápido de construcción y estrategia de ataque.


Controlando vista y zoom en Dawn of War: Soulstorm.

Cuando vas adquiriendo experiencia con este dispositivo te vas dando cuenta de dos grandes verdades. La primera es que con práctica y tesón todo se saca adelante y las sensaciones van mejorando cada día. La segunda es que este dispositivo no es capaz de sustituir años y años de aprendizaje de teclado y ratón sobretodo en juegos de acción en primera o tercera persona.

Cierto es que abre un nuevo campo de manejo que en teoría debería ser más rápido y efectivo pero el sistema nervioso es complejo y tras años de práctica los movimientos que realizamos con el ratón dejan de ser meditados para convertirse en movimientos reflejos que se activan con una simple estimulación visual o sonora sin intervención del cerebro en tiempos que rivalizan con otro tipo de movimientos basados en reflejos. Nunca lograremos pulsar el botón del ratón tan rápido como parpadear pero sí que se convierte en algo tan básico como respirar.


Juegos FPS como Team Fortress 2 son todo un desafio con el NIA.

Mucho deberemos practicar, quizás durante años, para lograr que el NIA sustituya a la velocidad de reacción que logramos con un teclado y un ratón delante de un juego FPS (First Person Shooter). Personalmente creo que a ciertas edades ya es demasiado tarde para iniciar un aprendizaje tan complejo que difícilmente conseguirá igualar nuestra velocidad de reacción con el uso del ratón como para encima mejorarlo.

Quizás iniciándose desde edades tempranas, nuestros hermanos o hijos, encuentren en este tipo de sistemas el arma perfecta con el que avanzar en la complejidad del juego con el ordenador.

Manejando aplicaciones con NIA.

Personalmente veo más interesante el uso de este tipo de dispositivos para el control de aplicaciones profesionales sobretodo las orientadas al diseño profesional en tres dimensiones. Solo hace falta que la aplicación entienda comandos basados en teclas para controlar la perspectiva de las diferentes “cámaras” o ejecutar algunos comandos más complejos.

Del mismo modo que en un juego el aprendizaje es complejo y lleva tiempo pero tiene una ventaja notable, al menos en la gran mayoría de los casos, que es que podemos tomarnos el control con más tranquilidad ya que no tenemos un enemigo disparándonos desde un costado (aunque algunos jefes son peores que el francotirador más avezado).


Controlador 3Dconnexion para entornos tridimensionales.

Fácilmente podría sustituir en los estudios de diseño a dispositivos de movimiento en tres dimensiones tan extendidos como los Logitech desarrollados por su división 3Dconnexion.Este tipo de dispositivos requieren de una mano para su manejo por lo que tenemos que despegar la mano izquierda del teclado, con el NIA podríamos mantener las manos en el teclado mientras que nos movemos en un entorno tridimensional.

Para poco mas encontraremos utilidad a nivel “profesional” en el NIA aunque seguramente a muchos de los que leéis ahora estas líneas se os ocurren más aplicaciones. Si estáis pensando en la orientación médica yo personalmente no me fiaría mucho de un bisturí controlado con este sistema.

y el ratón como medio principal de juego delante del ordenador. Es cierto que ofrece un potencial interesante pero es un dispositivo complejo de manejar.

SI que abre una nueva vía de control que irá evolucionando con el tiempo y que sin duda conseguirá ser más intuitivo con cada desarrollo. También la adaptación progresiva a este tipo de dispositivos nos hará mas capacitados para este modo de manipulación. Por ahora nos quedamos con el interesante trabajo de OCZ sobretodo para hacer asequible para cualquiera, por 150 Euros, una tecnología profesional que hasta ahora estaba al alcance de unos pocos.

Un video:

Fuente: http://www.hispazone.com/Articulo/381/6/OCZ-NIA—Neural-Impulse-Actuator-Primeras-impresiones–Analisis-y-Conclusion.html

Queres Jugar a la Nintendo Wii En tu PC?

Ahora les traigo una novedad (no muy novedoza que digamos) que a mi me sorprendio mucho

Resulta que uno puede tener la Wii en la pc solo teniendo una Web Cam,si,escucharon bien,una web cam.

Esto es debido a que la camara puede detectar el movimiento de un objeto,ya sea un carton,hoja,etc,y puede usarse ese objeto como volante para algun juego de autos,u otros juegos,no necesariamente un juego de autos.

Siempre el objeto debe tener un color en especial para que lo detecte la camara,desde ahi detecta su rotacion,movimiento,etc.



Para los q no saben que es camspace:

CamSpacees una pequeña empresa que acaba de conseguir $200.000 de seed funding. La tecnología suena prometedora! Es muy similar a muchas demos que hicimos en el Laboratorio de Robótica en UADE (tracking de color y formas) pero además el algoritmo parece fijar un objeto de con un patrón de color y de allí en más seguir sus rotaciones y desplazamientos! Muy interesante!




link: http://www.videos-star.com/watch.php?video=w4gckfzSy0A


y a este programa lo pueden descargar de aca:

http://www.camspace.com/

Fuente: http://www.taringa.net/posts/downloads/2192188/Queres-Jugar-a-la-Nintendo-Wii-En-tu-PC-Con-Camspace-podes!.html

Wiki: Descriptores visuales

Los descriptores visuales describen las características visuales de los contenidos dispuestos en imágenes o en vídeos. Describen características elementales tales como la forma, el color, la textura o el movimiento, entre otros.

Introducción

Como consecuencia de las nuevas tecnologías de comunicación y al uso masivo de Internet en la sociedad actual, la cantidad de información audiovisual disponible en formato digital está alcanzando cifras realmente elevadas. Es por ese motivo que ha sido preciso diseñar sistemas que nos permitan describir el contenido de varios tipos de información multimedia para poderlos buscar y clasificar.

Los encargados de describir el contenido son los llamados descriptores audiovisuales. Éstos tienen un buen conocimiento de los objetos y eventos presentes en un vídeo, imagen o audio y permiten la búsqueda rápida y eficiente de dicho contenido audiovisual.

Este sistema se puede comparar con los buscadores de contenido textual. Si bien es cierto que es relativamente fácil encontrar texto con un ordenador, resulta mucho más difícil encontrar partes concretas de audio y vídeo. Por ejemplo, imaginemos alguien buscando una escena de una persona feliz. La felicidad es un sentimiento y no es evidente la descripción de su forma, color y textura en las imágenes.

La descripción del contenido audiovisual no es una tarea superficial y es esencial para la utilización eficaz de este tipo de archivos. El sistema de estandarización por excelencia que explota los descriptores audiovisuales es el MPEG-7 (Motion Picture Expert Group - 7).

Tipos de descriptores visuales

Los descriptores son el primer paso para poder encontrar la conexión entre los píxeles contenidos en una imagen digital y aquello que los humanos recordamos después de haber observado durante unos minutos una imagen o un conjunto de las mismas.

Los descriptores visuales se dividen en dos grandes grupos:

  1. Descriptores de información general: contienen descriptores de bajo nivel, proporcionando una descripción a cerca del color, formas y regiones, texturas y movimiento.
  2. Descriptores de información de dominio específico: proporcionan información acerca de los objetos y eventos que van apareciendo en la escena. Un ejemplo muy concreto seria el de reconocimiento facial.

Descriptores de información general [editar]

Los descriptores de información general consisten en descriptores que cubren distintas características visuales básicas y elementales como son: el color, textura, forma, movimiento y localización, entre otras. La descripción es generada automáticamente mediante procesamiento digital de señales.

  • COLOR: es la cualidad más básica del contenido visual. Se definen cinco herramientas para describir el color. Las tres primeras herramientas representan la distribución del color. Las dos restantes herramientas, una describe la distribución espacial del color y la última describe la relación del color entre una secuencia o conjunto de imágenes:
    • Dominant Color Descriptor (DCD)
    • Scalable Color Descriptor (SCD)
    • Color Structure Descriptor (CSD)
    • Color Layout Descriptor (CLD)
    • Group of frame (GoF) o Group-of-pictures (GoP)
  • TEXTURA: es otra cualidad muy importante para describir una imagen. Se diseña para caracterizar las texturas o regiones de una imagen. Observan la homogeneidad de las regiones y los histogramas de los bordes de dichas regiones. El conjunto de descriptores está formado por:
    • Homogeneous Texture Descriptor (HTD)
    • Texture Browsing Descriptor (TBD)
    • Edge Histogram Descriptor (EHD)
  • FORMA: posee una información semántica muy importante, debido a que los humanos somos capaces de reconocer los objetos sólo viendo su forma. No obstante, esta información sólo puede ser extraída mediante una segmentación similar a la que realiza el sistema visual humano. En la actualidad todavía no está disponible, pero si existen una serie de algoritmos que nos permiten una buena aproximación. Estos descriptores describen las regiones, contornos y formas para imágenes 2D y volúmenes 3D. El conjunto de descriptores está formado por:
    • Region-based Shape Descriptor (RSD)
    • Contour-based Shape Descriptor (CSD)
    • 3-D Shape Descriptor (3-D SD)
  • MOVIMIENTO: se define mediante cuatro descriptores que describen el movimiento en las secuencias de vídeo. Éste movimiento va asociado a los objetos de la secuencia o bien al movimiento propio de la cámara. Ésta última información es proporcionada por el dispositivo de captura, mientras que el resto se realiza con procesamiento digital de señales. El conjunto de descriptores está formado por:
    • Motion Activity Descriptor (MAD)
    • Camera Motion Descriptor (CMD)
    • Motion Trajectory Descriptor (MTD)
    • Warping and Parametric Motion Descriptor (WMD and PMD)
  • LOCALIZACIÓN: de los elementos dentro de una imagen se utiliza para describir elementos en el dominio espacial o temporal dentro de la secuencia de vídeo. Los dos descriptores que lo permiten son los siguientes:
    • Region Locator Descriptor (RLD)
    • Spatio Temporal Locator Descriptor (STLD)

Descriptores de información de domini específico

Éstos descriptores, que proporcionan información sobre objetos y eventos en la escena, no son fáciles de extraer, aún más si se pretende realizar una extracción automática. Sin embargo, siempre cabe la posibilidad, aunque ardua, de realizar un procesado manual.

Tal y como se has mencionado anteriormente, un ejemplo concreto de una aplicación que intenta extraer este tipo de información de forma automática sería el de reconocimiento facial.

Aplicaciones de los descriptores

Entre todas sus aplicaciones, las más relevantes son:

  • Buscadores y clasificadores de documentos multimedia.
  • Bibliotecas Digitales. Permite una búsqueda muy detallada y concreta de cualquier vídeo o imagen, mediante diferentes tipos de parámetros de búsqueda: desde la búsqueda de la última película donde salga un actor conocido, hasta buscar todos los vídeos donde salga la montaña Everest.
  • Servicio de noticias electrónicas personalizado.
  • Posibilidad de una conexión automática a un canal de televisión, que esté emitiendo un partido de fútbol, cada vez que un jugador se acerque al área de gol, por ejemplo.
  • Filtrado y control de cierto contenido audiovisual. Por ejemplo material violento o pornográfico no apto para ciertas personas. Y también autorización para algunos contenidos multimedia.

Microsoft surface

Construya su Multitouch en casa



Wiki: Multi-touch

Multi-touch es el nombre con que se conoce a una técnica de interacción hombre-máquina y al hardware que la implementa. El multi-touch (del inglés múltiple tacto) consiste en una pantalla táctil o touchpad que reconoce simultáneamente múltiples puntos de contacto, así como el software asociado a esta que permite interpretar dichas interacciones simultáneas.

Historia

El desarrollo de esta técnica comienza en el año 1982, con un trabajo realizado por la Universidad de Toronto (tabletas digitalizadoras multi-touch) y los laboratorios Bell (pantallas multi-touch). El primer dispositivo comercial que utilizaba esta tecnología fue el Lemur Input Device, un controlador multimedia profesional de la compañía francesa JazzMutant que apareció en el mercado en 2005. En julio de 2007, Apple registró la palabra multi-touch junto con su iPhone. El nuevo iPod touch también incluye esta tecnología entre sus características.

Funcionamiento

Las pantallas multi-touch consisten en una matriz de sensores ópticos que permiten obtener la posición de varios puntos de contacto sobre ella de manera simultanea. A menudo también permite calcular la presión o el ángulo de cada uno de los puntos de contacto de forma independiente, lo que permite hacer gestos e interactuar con varios dedos o manos de manera simultanea (de manera similar a los acordes de mouse) y proveer así de una interacción más rica a través de gestos mucho más intuitivos.

Dependiendo del tamaño del dispositivo, algunos de éstos suficientemente grandes permiten que varios usuarios puedan utilizarlos de manera simultánea. Otro aspecto importante de esta técnica es que permite realizar zooms en la aplicación que se esté manejando con sólo usar dos dedos de una manera más directa que con otros dispositivos como el ratón o el estilo.

Las investigaciones actuales van dirigidas a intentar calcular otros parámetros como por ejemplo saber que dedo concreto es el que está tocando en cada una de las posiciones (por ejemplo el pulgar, el índice...).