Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Como ya estoy de medio vacaciones, pero a la vez no tengo demasiados medios técnicos, me dedico a recopilar datos y a procesarlos como puedo en mi cabecilla, para poder hacer cosas en verano.
Como sabeis estoy con el tema del Bluetooth... a falta de hacer algunas pruebas con otro ordenador, el tema del TouchPad... necesito más medios que mi portatil... y... ahora viene el proyecto guapi guapi... Visión artificial con una simple webcam, entonces aqui vienen mis preguntas y aclaraciones:
·Sé que es posible, porque si no me equivoco Golfus Hispanicus lo emplea, asi como otros proyectos como los de esta chiquita tan maja: Mavis
·¿Cómo se empieza en este mundito?
·¿Qué librerías usais para obtener imágenes de la webcam?
·¿Qué librerías usais para procesar la imagen?
·¿Es imprescindible programar el sistema en C?
·¿Tenemos algun proyecto de ejemplo?
Yo estoy comenzando con la librería WebCam.dll, pero me temo que es muy incompleta, y además consume demasiados recursos comparándolo con el proyecto de Mavis. Aun así, tengo un programa hecho que lo único que tiene es un botón, con el que al pulsarlo, se copia la imágen de la webcam en un control PictureBox... me imagino que es un primer paso en este mundo, y que me quedan miles de caminos que recorrer, pero esta librería no sé si da mucho más de si, de modo que me gustaría que alguno que haya trabajado con esto me eche un cablecillo.
Seguiré informando. Muchas gracias por la ayuda.
Ángel
He estado leyendo la CMUcam 3 con respecto al algoritmo de detección facial y lo que les queda claro es la poco "memoria" de que dispone. Sus 80Mhz. del procesador dan para "mover" el algoritmo Viola-Jons a 15 fps. pero realizan "trucos" para no malgastar la memoria. Además trabajan con capturas que no pesen mucho. No penseis que lo hacen con una cámara de 1Kpixel. Los primeros intentos detectaban caras en tiempo de más de 5sg. (inviable) . Cambiaron el algoritmo y optimizaron éste para la CMUcam.
Y sigo con la misma pregunta de siempre ¿que funciones queremos que ejecute nuestra visión? es decir, ¿que tiene que hacer nuestro robot?
Ranganok,
no tengo documentado nada. Simplemente he ido recopilando información para hacerme una idea global de la visión artificial. PDF´s , PFC, ideas, inventos, etc. y centrarme un poco. Pero esto si quieres tambien lo podemos comentar en la siguiente reunión de ARDE Barcelona. 😀
De cosecha propia tengo un .exe que es el que utilizo para realizar el PAN-TILT automático para el Tracking en el que estoy metido (cuando puedo y me dejan).
A grandes rasgos lo que realiza el programa:
Capturo la imagen de una WebCam.(352x288x24bits)
Lo paso de RGB al espacio de color HLS.
Filtro los canales H,L,S por separado y los pixeles que se salen de los valores del filtraje los desestimo. (por cierto, todo esto con punteros nunca useis funciones como GetPixel y cosas por el estilo porque son más lentas que el caballo del malo).
Calculo la media en X,Y de los pixeles que han pasado el filtro
Dibujo un puntero (cruz) en el centro de esa media.
Presento la imagen filtrada en pantalla
Si el valor X,Y de la media está fuera del rango del centro de la imagen envio por puerto serie los valores a los servos para corregir esa posición y centrar el puntero en la imagen.
Con todo esto lo que consigo es que la WebCam mediante el PAN-TILT te "siga" por ejemplo un objeto, puntero láser, etc.
Por ejemplo, para pasar de RGB a HLS se necesitan raices cuadradas y floats. Y sabemos que eso no es sumar ni restar en potencia de cálculo. Las CMUcam antiguas ya realizan esta función de tracking así que doy por hecho que potencia tienen al menos para eso.
Lo del I2C/SPI en los sensores CMOS de OmniVisión ya lo había visto en su Web y pensé que si tuviera que hacer algo sería una opción válida. Lo que no me queda claro es por donde "salen" los datos de los pixeles . Una cosa es el control que tienes a través de SCCB (Serial Camara Control Bus) para controlar la cámara y otra es por donde salen los datos en bruto RGB por ejemplo. (YUV,salida video no interesa necesitaría un conversor). Lo suyo es meterle mano a un sensor de muestra ¿si lo pido me lo darán? 😈
La idea es capturar los datos RGB en bruto,almacenarla, preprocesar la imagen (filtros,ruido,espacio de color), ejecutar los algoritmos que necesita nuestro robot (aqui si que necesitas imaginación) y todo esto ejecutado rapidito. ( y con la regla de las 3B´s 😆 ) Así dicho de pronto parece fácil 😉
Una pregunta . ¿cual es la plataforma en MicroATX o NanoATX más barata que habeís visto para implantación de todo esto?
Saludos
Hay sensores de Omnivision que tienen salida paralela de 8 y 16 bits, por los cuales te envian (por ejemplo en RGB) los datos de cada color a la vez. Por ejemplo el OV6620 y OV7620. Es importante que tenga este bus paralelo para optimizar la comunicación con el microcontrolador.
Hay que tener en cuenta que la tensión de I/O del sensor tiene que ser de 5V ya que los hay tambien de 3.3V y no valdria a no ser que utiziceis un micro tipo ARM.
Yo creo que se pueden pedir samplers (yo no los he pedido) pero el encapsulado en bastante engorroso. Además hace falta la lente con su filtro IR que supongo habrá que comprar aparte. Venden unas tarjetas que montan este sensor con la lente, oscilador, etc. se llaman C3088 y C3188 y al cambio al euro no salen muy caros:
www.electronics123.com/s.nl/sc.8/category.241/.f
También venden camaras USB para PC que incorporan este sensor con su lente, carcasa, etc. Lo malo es que hay que desoldar el sensor (con lo delicado que es) y hacer una tarjeta nueva.
Saludos. Carlos.
Ranganok, Intente pedir muestras una vez y solo te las envian si tienes intencion de sacar una linea de productos a mercado. Dependiendo del sensor que quieras pedir te hablan de hasta 50.000 unidades. Aunque en la pagina diga samples, si los pides te llamaran desde matrix (asi se llama su distribuidor en españa) y te diran que solo para el datasheet tienes que enviarles un NDA firmado, y un contrato de confidencialidad tanto por mail como por correo convencional. Si eso te piden para el datasheet imaginate la que te montan para el sensor. Conclusion, si no eres una gran empresa que pretende vender 10.000 robots, entonces te quedas sin samples
TumBos mira esta placa ITX, sale por 67.50 eur IVA inc. y lleva un celeron a 1,3Ghz incluido. [web] http://www.cartft.com/catalog/il/820 [/web]
lo malo es la fuente que vale otros 44 eur.
Salu2
Equipo ARDE 2k8 eso para el robot de eurobot nos vendria de perlas