Módulo de visión por computador

Started by grisendo, November 22, 2009, 04:19:55 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

grisendo

Ya que esto del conocimiento libre es compartir, lo del MP
es un Proyecto Fin de Carrera de reconocimiento de voz.
Lo pongo aquí, para el que le sirva de algo:

http://www.grisendo.com/subidas/memoriavoz.pdf

Por cierto, se me ha olvidado decirte, la implementación
se la he pedido pero no me ha contestado aún, en cuanto
me la mande (si aún la tiene) también la subo.

Drumpi

Muchas gracias, eso tampoco hacía mucha falta, pero mira, si lo tiene por ahi...
Pero me comentas que está hecho en Matlab (adoremos a la herramienta para dominar al mundo), y es un lenguaje bastante... raro (iba a decir feo, pero no quiero faltar a los feos ;D). Bueno, es normal, es un lenguaje matemático con aspiraciones de código, jejeje.

Pero bueno, C es mi herramienta, y ya veremos si no termina siendo Bennu mi osciloscopio.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

l1nk3rn3l

comparte los fuentes para subirlos al bennupack..(fuentes dll )

Gracias...

grisendo

¿Seguro? Tras las últimas modificaciones, la cosa está inestable inestable... tanto que peta a la más mínima sin sentido :D
sigo trabajando en ello (con poca frecuencia porque ando muy ocupado últimamente...)

La última versión medio estable la subí aquí:
http://grisendo.com/subidas/codigo.rar

Pero desde aquella hasta ahora he ido cambiando todo lo que son funciones que devuelven cosas por procedimientos
con parámetros de salida... así que si se publica ya, la compatibilidad de futuras versiones con esa será nula... :(

SplinterGU

una pregunta, y modulo de reconocimiento facial? que onda con eso?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Windgate

Splinter, el módulo facial básicamente permite utilizar tu cara frente a la webcam como controlador del juego :P además de otras posibilidades interesantes. Tuve problemas con mi otro portátil y aún no lo pude probar, descargo en el nuevo a ver si me va todo ok y te cuento Grisendo.
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

SplinterGU

si, gracias, ya se lo que hace esto... pero lo que quiero saber es si tiene algun prototipo de reconocimiento facial o conocimientos y/o quizas piensa hacer algo al respecto...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

grisendo

Toy en ello :P Lo de la detección facial no sólo sirve como controlador,
se puede utilizar para más cosas, ya que se obtiene la x e y iniciales
así como el ancho y alto, con lo cual puede usarse también por ejemplo
para obtener la textura de tu cara y luego poder ponérsela a un
personaje 3D (si hay algún módulo que permite cargar texturas, que
yo nunca he tocado el 3D) o realizar otro tipo de tareas (detectar
emociones...).

La cosa es que el módulo de visión por computador incluye:
    - Captura de imágenes desde webcam
    - Detección de objetos
        - Un caso particular es la detección de caras, pero se puede entrenar
           cualquier objeto entrenado y guardado en un XML. Aunque sólo he
           conseguido encontrar XML de ojos, caras, narices, cuerpos... existe
           una herramienta para crearlos.
    - Operaciones avanzadas con imágenes
        - Diferencia de imágenes (para detección de movimiento)
        - Umbralizado, suavizado, expansión...
    - Más cosas relacionadas, según sigan surgiendo...

Creo que no me he enterado bien de la pregunta, ¿Era esa la duda?

SplinterGU

eso va fantastico... la pregunta va a reconocer personas... como el feature de google... que te reconoce a tus amigos en tus fotos y te los taguea automaticamente...

la idea es poder reconocer personas...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Como poder, claro que podría ¿no ves CSI? se marcan unos puntos en la cara (posición y tamaño de los ojos, nariz, boca, pómulos y contorno), se compara con una base de datos y te suelta unos cuantos resultados... lo que pasa es que en las pelis (que casualidad) siempre sale una única cara :D

Y si reconoce cuerpos, se puede jugar estilo eyetoy. Si reconoce manos se pueden crear IDEs que se manejen a lo "Minority Report". Y si reconoce otras figuras, se puede hacer lo que en esos videos que se ven personajes 3D en la vida real (lo que se conoce como "realidad aumentada").
¿Os imaginais que funcionase en WIZ y pudiéramos ponerle una webcam? (babea).
Juer, se me ocurre colgar varios papeles de esos, con el cuadradito dibujado, en el cuarto, y hacer un shooter en primera persona.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

la idea es que me si me siento yo, el soft sepa que soy yo y si se sientan 1000 personas diferentes, que identifique a cada 1 de ellas... ya hay soft de ese estilo y nada de programas de ciencia ficcion... hay varios, google tiene uno... la idea es que si hay algo hecho por la gente de la comunidad me agrada mas...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

grisendo

Sí, se puede.

----------------------------------------------
DANGER!!! Rollo patatero a continuación:
----------------------------------------------

Lo que pasa que ahora mismo no hay forma inmediata de hacerlo como sí que la hay para detectar la posición. Pero OpenCV proporciona funciones a bajo nivel que se pueden exportar a Bennu, y desde Bennu unir esas funciones de bajo nivel en un algoritmo para reconocer caras. O exportar a Bennu directamente un algoritmo de detección de más alto nivel para "tontos" (más bien para usuarios normales no-frikis jeje). A fín de cuentas la función de detectar la posición está hecha con funciones de bajo nivel de OpenCV y exportada a Bennu para gente que no tiene ni idea del tema. Y si se pudo hacer esa, también se puede hacer la de reconocimiento ("me juego lo déo shico de la mano de que" hay algoritmos de reconocimiento implementados íntegramente con funciones de OpenCV).

Pero como hay miles de formas de hacerlo, no se pueden hacer todas en alto nivel para Bennu, por eso habría que elegir alguna, la que más se utilice en todos los campos por su gran tasa de aciertos y velocidad (como se ha hecho para la detección de la posición de la cara). El reconocimiento facial es un tema que no me he metido mucho, pero sólo hace falta ponerse a leer y a investigar.

Se puede empezar exportando las funciones básicas de OpenCV a Bennu (que es lo que intento hacer). Luego en código Bennu, combinarlas para ir viendo resultados intermedios, y cuando se tenga algún algoritmo interesante, meterlas como funciones de alto nivel en el módulo.

Ejemplo:
Funciones básicas de Bennu:
1. Restar dos imágenes
2. Umbralizar una imagen
3. Tomar una foto de la webcam
4. Mezclar dos imágenes

Ejemplo código en Bennu hecho por un "investigador":
(3) tomar_imagen(foto_sin_usuario);
(3) tomar_imagen(foto_con_usuario);
(1) usuario_y_ruido=restar(foto_con_usuario, foto_sin_usuario);
(2) usuario=umbralizar(usuario_y_ruido, umbral);
(4) mezclar(foto_fondo_falso, usuario);

Entonces como vemos que funciona bien y puede ser muy útil,
lo incluimos en el módulo como una función para "tontos":
5. Poner un fondo falso

Ejemplo código en Bennu hecho por un usuario normal:
(3) tomar_imagen(foto_sin_usuario);
(3) tomar_imagen(foto_con_usuario);
(5) poner_fondo_falso(foto_sin_usuario, fondo_falso, foto_con_usuario);

SplinterGU

a esto me surge una pregunta (tambien podria googlear), OpenCV es una libreria tuya o es una libreria opensource de otro/s?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

grisendo

Es una librería de otros, de hecho la crearon en Intel, pero no sé si todavía la mantienen ellos o una comunidad propia. Tiene licencia BSD, así que todo el mundo prácticamente se la fo*** como quiere.

SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2