domingo, 8 de febrero de 2009

PUBLICACIÓN FINAL



En la figura anterior se observan los videos que fueron utilizados para verificar el funcionamiento del sistema de navegación.
A continuación se hace una descripción breve de cada uno de los videos utilizados:

Pasillo1: Este video video simula al robot móvil recorriendo un pasillo con bajas condiciones lumínicas, lo hace de izquierda a derecha avanzando continuamente

Pasillo2: Este video presenta condiciones medias de iluminación, en el se observan 3 posibles caminos alternativos en diferentes planos, además se simula al robot recorriendo el pasillo de un lado a otro avanzando continuamente a través de el.

Pasillo4: Recorriendo un pasillo en condiciones de luz altas.

Puerta2: Se recorre una pared hasta encontrar un camino alternativo en condiciones de luz bajas.

Video1: Un pasillo largo con condiciones altas de luz, con caminos alternativos ala derecha y a la izquierda.

Video3: El mismo pasillo2 pero en condiciones altas de luz .

Puerta: un video en condiciones media de luz en el que se recorre una puerta de extremo a extremo.

Video2: Un pasillo corto en condiciones altas de luz, se recorre a través de su centro hasta encontrar uno de los caminos alternativos.

Puerta1: es la continuación de pasillo1 después de recorrer el pasillo se encuentra las puertas del fondo.




En la siguiente figura se observan los resultados obtenidos del sistema de navegación visual implementado en matlab tras cargar el viseo pasillo2.




En la anterior tira de imágenes se observa que se detectan los tres posibles caminos alternativos, se los puede identificar en la figura anterior en la primera fila, tercera fila segunda columna, quinta fila segunda columna y las órdenes giren a la izquierda o derecha según la ubicación.


PROCESAMIENTO DE LAS FRAMES


Debido a que la velocidad a la que circulara el móvil es bastante pequeña y debido a que el video es de 25 frames por segundo, no se considero la necesidad de hacer un procesamiento de toda esta cantidad de imágenes ya que tomara de mucha carga computacional siendo esto totalmente innecesario, debido que la información por frame que cambia en esa pequeña cantidad de tiempo es muy poca y no será de mucha utilidad ala hora de guiar al robot o ubicar los caminos alternativos asi que como solución a esto se propone el muestreo de las imágenes cada cierta cantidad de frames.
Como cada video tiene 25 frames por segundo solo será necesario tomar un frame de los 25 para ser procesado cada segundo, quiere decir esto que se procesara una frame por segundo del video, el costo computacional por cada frame procesada es aproximadamente 1.3 segundos.
Cuando se utilizo la cámara web con resolución de 600*800 fue suficiente para dotar al sistema de la información necesaria y que este respondiera de manera correcta, dotando de un frame cada 1.2350 segundos aproximadamente a este ,que es lo que tarda el algoritmo en procesar cada imagen y mostrar el resultado, de esta manera eliminando la gran cantidad de información que provee la cámara que es de 24 cuadros por segundo que da la sensación al observador de estar viendo una imagen continua del mundo real pero que para el sistema no es necesaria.
Se experimento con diversas cámaras que proveían diferente resolución al sistema obteniendo los mejores resultados con cámaras mayores a 3 mega pixeles, con cámaras de menor resolución el sistema no era capas de detectar las líneas puesto que estas no se definían bien en la imagen tomada.
Se tubo problemas con las condiciones de luminosidad del entorno puesto que este no es controlado esta prueba fue efectuada con una cámara web con resolución de 600*800, se disminuyo en gran medida este problema utilizando una cámara con autoajuste de intensidad lumínica que dio óptimos resultados en ambientes con intensidad lumínica cambiante.

martes, 20 de enero de 2009

Resultados obtenidos.


La solución propuesta para el procesamiento continuo de imágenes con un banco de videos ,la cual era de muestrear continuamente cada cierta cantidad de imágenes ,mostro buenos resultados ya que no era necesario procesar la gran cantidad de información que provenían de el video cargado ,que era de 30 frames por segundo, fue suficiente con procesar cada cierta cantidad de frames para dotar al sistema de la información suficiente para que este respondiera a los cambios de dirección en el camino y la detección de caminos alternativos ya que se considera que el robot no va a gran velocidad.

Cuando se utilizo la cámara web con resolución de 600*800 fue suficiente para dotar al sistema de la información necesaria y que este respondiera de manera correcta, dotando de un frame cada 1.2350 segundos aproximadamente a este ,que es lo que tarda el algoritmo en procesar cada imagen y mostrar el resultado, de esta manera eliminando la gran cantidad de información que provee la cámara que es de 30 cuadros por segundo que da la sensación al observador de estar viendo una imagen continua del mundo real pero que para el sistema no es necesaria.

Se experimento con diversas cámaras que proveían diferente resolución al sistema obteniendo los mejores resultados con cámaras mayores a 3 mega pixeles, con cámaras de menor resolución el sistema no era capas de detectar las líneas puesto que estas no se definían bien en la imagen tomada.

Se tubo dificulatades con las condiciones de luminosidad de algunos entornos , puesto que este no es controlado ,esta prueba fue efectuada con una cámara web con resolución de 600*800, se disminuyo en gran medida este problema utilizando una cámara con autoajuste de intensidad lumínica que dio óptimos resultados en ambientes con intensidad lumínica cambiante.

viernes, 9 de enero de 2009

Diseño de la solución del sistema para procesamiento continúo de imágenes.


Para dar solución al problema de la adquisición continua de imágenes se procedió a crear dos soluciones, la primera solución fue crear un archivo de videos tomados con una cámara Samsung de 5 megapixeles, estos videos simularan a un robot móvil el cual sigue una trayectoria en un entorno cerrado a través de un pasillo en entornos no controlados ,esta cámara fue colocada sobre una silla con ruedas la cual se encontraba a una altura de 47cm la cámara fue coloca en dirección al horizonte y ubicada paralela a esta ,se tomo el programa que se realizo para el procesamiento de fotos de pasillos y caminos alternativos y se le agrego un pequeño código para que tomara muestras cada cierta cantidad de imágenes del video(Frames),esto debido a que la velocidad a la que circulara el móvil es bastante pequeña y debido a que el video es de aproximadamente de 30 frames por segundo, no se considero la necesidad de hacer un procesamiento de toda esta cantidad de imágenes ya que tomara de mucha carga computacional siendo esto totalmente innecesario, debido que la información por frame que cambia en esa pequeña cantidad de tiempo es muy poca y no será de mucha utilidad ala hora de guiar al robot o ubicar los caminos alternativos asi que como solución a esto se propone el muestreo de las imágenes cada cierta cantidad de frames.
Adquisición de imágenes y video con Matlab

“Pasos para la adquisición de imágenes:

Creación: Crear un objeto de entrada de vídeo

Configuración: Definir las propiedades del objeto y visualizar propiedades de la configuración

Adquisición: Se adquieren datos del objeto de entrada de vídeo

Finalización: Se borra el objeto de entrada de vídeo que ha sido
Creado”
Tomado de Http:omarsanchez.net/Documents/Imagen_Fundamentos_II.pdf
A continuación se observa el código agregado para el muestreo de frames.
Clc

obj= mmreader('puerta1.mpg') cargamos el video
g=0;variable auxiliar
numFrames = get(obj, 'numberOfFrames');extraemos el numero de frames
if numFrames > 50
Fra = 50; linitamos el numero de frames que queremos procesar
else
Fra= numFrames;
end

for i=1: Fra ciclo for para cada frame a procesar

g=3*i; % en esta parte indicamos cada cuatas frames hacer el %%procesamiento

if(g< numFrames )
RGB = read(obj,g); guardamos la frame para su respective procesamiento


RGB = imresize(RGB, [300 400]); %B devuelve la imagen que es la escala veces el tamaño de la entrada A.
I = rgb2gray(RGB); % convert to intensity
BW = EDGE(I,'canny',[0.1 0.2],2); % extract edges
Continua el mismo programa anterior….
end


la segunda solución fue mediante la utilización de una web-cam de 600*800 ubicada con las mismas características mencionadas en la solución 1,solo que se tomara cada frame que se adquiera de la cámara web cada 1.2350 segundos aproximadamente que es el tiempo que le toma al programa el procesamiento de cada imagen, al realizar pruebas se obtuvo que este es suficiente tiempo para que la imagen siguiente le dote de información nueva al sistema para hacer las correcciones necesarias de posición o de ubicación del camino.

A continuación se observa el código para la obtención de imágenes en tiempo real con cámara web.
vid = videoinput('winvideo',1);% Define objeto para adquirir imagen
preview(vid);% muestra el video
for i=1:30 % indico al programa que es para 30 frames

RGB = getsnapshot(vid);% capturo la imagen en ese instante t del video.


RGB = imresize(RGB, [300 400]); %B devuelve la imagen que es la escala veces el tamaño de la entrada A.
I = rgb2gray(RGB); % convert to intensity
BW = EDGE(I,'canny',[0.1 0.2],2); % extract edges
Continua el mismo programa...

Se observa que solo fue necesario cambiar las cabeceras del programa anterior para la adquisición continua de imágenes.

Análisis del costo computacional


En este proyecto se ha realizado un sistema de percepción visual en tiempo real cuya fiabilidad y robustez depende directamente de la velocidad en el tratamiento de las imágenes. Un robot Capaz de procesar mayor cantidad de imágenes por segundo podrá detectar, seguir y predecir a mayor velocidad los cambios en su entorno y en definitiva de interactuar con este con mayor fiabilidad. Con el fin de evaluar la velocidad de procesamiento del presente proyecto se ha realizado un estudio del tiempo de ejecución del algoritmo sobre distintas plataformas de Procesamiento.

Para realizar dicho estudio en unas condiciones similares a las de funcionamiento real, se tomo un video del banco de videos el cual simula a un robot con una cámara montada que realiza un recorrido por un entorno cerrado no controlado.

En el video se pretende recoger una razonable variedad de escenas con las que el robot podría encontrarse durante un recorrido.

A fin de realizar una comparativa, se realizaron pruebas de ejecución del algoritmo implementado sobre un conjunto de imágenes muestreadas por el algoritmo del video en dos plataformas de procesamiento.
Se tomaron 50 frames del video con las cuales se corrió el algoritmo y se promediaron los tiempos que les tomo procesar cada frames las diferentes plataformas de procesamiento.

Promedios obtenidos:
5.45 segundos por frame con un procesador AMD Turion 64x2 2.1GHz
1.23 segundos por frame con un procesador AMD Atlon 64x2 2.8GHz
Los resultados muestran que el algoritmo responde bien con un procesador de 2.8 GHz pero con un procesador de 2.1 GHz el sistema no tiene buenos resultados ya que este tiempo de ejecución del algoritmo no dotaría de la información necesaria del entorno al sistema para responder de manera adecuada al propósito para el cual fue echo.