lunes, 29 de octubre de 2012

Avance #3 Proyecto Final



Resumen del proyecto

Coloca una breve descripción de tu proyecto (pueden ser un par de líneas). Si realizaste cambios con respecto a la entrega anterior, menciónalos.



El proyecto se sigue trabajando en Python, tal y como se había mencionado en el avance pasado, la librería mas importante en esto es OpenCV, y otras dos que son también de vital importancia son Pygame, para los juegos y Pybrain, esta ultima para darle la parte “adaptativa” al sistema. El cambio que se realizó es que serán dos juegos, uno parecido al de tomar pelotas, para acumular puntos y otro para que un personaje “camine” con nuestra mano.
Otra modificación que cabe destacar es que posiblemente se cambie la Webcam por un sensor Kinect, para un mejor manejo de la interfaz y la codificación.



Avance con respecto a la planeación. Comenta, con una extensión de entre media y una cuartilla, cómo haz avanzado en tu proyecto. Puedes incluir el Gantt actualizado. En tus comentarios, contesta las siguientes preguntas:



¿Qué se ha hecho? Se ha programado ya el primer avance, lo principal del sistema, así como una investigación de lo que e necesitará para poder realizar lo juegos en este lenguaje. También se investigó la interfaz gráfica, como los menús, las imágenes del fondo en ellos y las imágenes para los botones, pero aún falta plasmar esto en el programa, en este avance no se ve tanto de interfaz, se observa más la codificación referente a lo que viene siendo un sistema adaptativo, según los temas vistos en clase.

¿Qué falta? Falta hacer los juegos que llevara nuestro programa, llevando con esto la forma de como se van a conectar éstos con la mano que detectará nuestra red neuronal, además a pesar de que ya se investigó como se puede dar una interfaz al sistema, falta plasmarlo y ver si funciona lo que se ha investigado.

¿Qué problemas se han presentado y cómo los has resuelto / piensas resolverlos? Uno de los principales problemas fue empezar a codificar ya que la relación que teníamos con el lenguaje era mínima, dado que en cursos anteriores se había estado trabajando con C++, sin embargo esto se revolvió investigando por parte de los miembros del equipo, por separado y juntos. Algún problema que también se ha presentado pero no de tanta relevancia fue que, como no teníamos un gran conocimiento del lenguaje, no sabíamos exactamente que lirerías utilizar, eso lo resolvimos investigado, y viendo tutoriales en internet.

Diagrama de Grantt [ver]


Lista actualizada de recursos y herramientas. Expande la lista que tienes con información que te haya sido útil. Si has investigado técnicas inteligentes (ej. redes neuronales, agentes, métodos para NLP, etc.), describe esto concisamente.

Herramientas:

OpenCV


ü  Python 2.7. Usando el lenguaje Python: Es un Lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis muy limpia y que favorezca un código legible.

ü  Librerías como :
o   OpenCV: Biblioteca libre de visión artificial. Es multiplataforma, existiendo versiones para GNU/Linux, Mac OS X y Windows. Contiene más de 500 funciones que abarcan una gran gama de áreas en el proceso de visión, como reconocimiento de objetos (reconocimiento facial), calibración de cámaras, visión estereo y visión robótica.

o   Pygame: es un conjunto de módulos del lenguaje Python que permiten la creación de videojuegos en dos dimensiones de una manera sencilla

o   Pybrain: biblioteca libre y modular del aprendizaje de máquina.




Recursos:
Inteligencia Artificial, más concreto, Redes Neuronales Artificiales.

Redes neuronales artificiales: son un paradigma de aprendizaje y procesamiento automático inspirado en la forma en que funciona el sistema nervioso de los animales. Se trata de un sistema de interconexión de neuronas en una red que colabora para producir un estímulo de salida. En inteligencia artificial es frecuente referirse a ellas como redes de neuronas o redes neuronales.


Primera versión del sistema. 
Coloca fragmentos de código correspondientes a los módulos más importantes de tu proyecto.

Lo primero que se hizo en el código, para lo adaptativo fue capturar desde la cámara

cv2.VideoCapture(1)

A continuación se procedió a cambiar los colores, a  colores “binarios” es decir blanco y negro por medio del comando:
cv.Threshold(imagen, imagen, umbral, color, cv.CV_THRESH_BINARY)
Como en nuestro proyecto, lo más importante es encontrar la mano, ya que ésa es la que guía al juego, se creo un umbral. Éste funciona de la siguiente manera: Primero, se llama encender la cámara con el código visto anteriormente, luego se abre la cámara, y al momento en que se presiona la tecla ESC e guarda la última imagen que vio. De esta manera el programa cambia lo que sea negro a 0 y lo que esté con blanco a 1, con este método podemos distinguir una mano humana.
Nuestro código quedó así:
gray = cv2.cvtColor(f,cv2.COLOR_BGR2GRAY)
    ret,thresh = cv2.threshold(gray,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
    gray = cv2.Threshold(image,image, threshold,colour,cv.CV_THRESH_BINARY)