fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Avisos
Vaciar todo

Detección de formas en visión artificial

30 Respuestas
8 Usuarios
0 Reactions
11.3 K Visitas
ethiel
Respuestas: 19
Topic starter
(@ethiel)
Active Member
Registrado: hace 17 años

Buenos días.

Estoy empezando en ésto de la robótica, ya he construido un sigue línea sencillito y ahora me he metido de lleno en la visión artificial.

Por ahora he conseguido detectar bordes y colores de formas geométricas sencillas, pero ahora me encuentro en la tesitura de que no se como extraer las características de dichas formas para un posterior reconocimiento de patrones.

En otras palabras, estoy atascado en el punto 3 del reconocimiento de patrones: la extracción de características.

He leído y tengo abundante documentación sobre visión artificial y redes neuronales (que parecen ser la mejor manera de detectar forma mediante entrenamiento) pero al no saber extraer las características, estoy perdido.

¿Alguien puede decirme como extraigo las características de círculos, cuadrados, rectángulos y similares?. Con un ejemplo de uno sólo de ellos me basta, por supuesto, no quiero que los pongais todos.

Saludos.

Responder
29 respuestas
jorcoval
Respuestas: 418
(@jorcoval)
Reputable Member
Registrado: hace 18 años

jorcoval, he estado viendo tu blog y me interesaría ver los tutoriales y librerías pero han caducado en "megaupload".

Estoy trabajando con el robot del coleccionable de Planeta. Usa linux para ARM (DragonBall) con el compilador TinyCC y tengo acceso a una matriz de pixels RGB de 120x160 y necesito reconocer formas sencillas. Es un problema parecido al de ethiel, pero yo sí voy a trabajar en C.

Es que ese blog lleva abandonado desde que me puse a trabajar (perro que es uno).

Toma: aqui hay apuntes de la asignatura con la que aprendí visión artificial:
http://futura.disca.upv.es/~sdv/

Si tienes dudas, dame un toque.

Échale un vistazo a la parte teórica porque lo básico en la VA está ahi. Luego mirate la parte práctica: el proyecto fue programar un clasificador de garbanzos, alubias y lentejas, bastante interesante.

Responder
ethiel
Respuestas: 19
Topic starter
(@ethiel)
Active Member
Registrado: hace 17 años

Es JAVA porque es para el proyecto de fin de carrera y me lo exigen. He pensado hacerlo por Descriptores de Fourier, pero necesito ver un ejemplo. Si alguien tiene algo parecido, por favor, que me lo comunique, porque estoy completamente loco.

Responder
luisj
Respuestas: 235
(@luisj)
Estimable Member
Registrado: hace 18 años

Buenas

Me uno al movimiento "Java NO". Según tengo entendido puedes linkar código Java con cógido C/C++. Java es lento para funcionar en tiempo real y el desarrollo no creo que sea mucho más rápido. Lo normal es hacer las pruebas en Matlab/Octave y luego, cuando funciona lentamente, hacerlo en C/C++ para que vaya rápido.

Si lo que quieres es detectar polígonos regulares es mejor que no uses FFT, si lo que quieres es detectar formas de polígonos irregulares, lo mejor que conozco es FFT. También puedes analizar los momentos del contorno si no tienes ganas de leer demasiado, funciona regularmente bien si las formas no son muy complicadas. Si quieres reconocer cosas que no sean simples formas, debes usar otras técnicas, como descriptores SIFT o los clasificadores basados en filtros de Haar.

Según he estado mirando se puede llamar a OpenCV desde Java, por lo que no tendrías realmente que programar los algoritmos, sólo usarlos.

Te recomiendo que eches un vistazo a http://dis.um.es/~alberto/material/percep.pdf para ver un poco sobre teoría, vienen ejemplos interesantes pero los apuntes no están terminados.

Responder
ethiel
Respuestas: 19
Topic starter
(@ethiel)
Active Member
Registrado: hace 17 años

Necesito que sea invariante a rotación, escalado y traslación. Por todo lo que he leído, lo mejor son los descriptores de Fourier. He implementado la fórmula mil veces, pero no consigo que sean invariantes a nada de nada. Estoy absolutamente desesperado.

Además, por la fórmula, NO PUEDEN SER INVARIANTES. Me explico:

la fórmula es un sumatorio. Dentro de él tengo que poner las coordenadas del borde del objeto, hasta ahí, perfectamente. Pero si las coordenadas cambian, el valor numérico también lo hace, y no es invulnerable a escalado, ni rotación ni nada de nada.

Si alguien tiene algún ejemplo de Descriptores invariantes que sean invulnerables a lo que he dicho antes, que me pase el enlace, por favor. Necesito ver cómo se vuelven invariantes y cómo se calculan con un ejemplo.

Muchísimas gracias por vuestra inestimable ayuda y por el tiempo que os estais tomando.

Saludos.

Responder
luisj
Respuestas: 235
(@luisj)
Estimable Member
Registrado: hace 18 años

Yo diría que lo que tienes que poner no son las coordenadas, según tengo entendido...

Lo que tienes que hacer es hallar el centro de masa de la figura y para cada punto frontera de la figura, guardas la distancia del punto al centro de masa, por lo que para un circulo sería constante:

|
|
|*********************************************
|
|
|_____________________________________________________

para un cuadrado, sería algo así:

| * * *
| ** ** **
| * * * * * *
| * * * * *
| * * * * *
|**
|
|______________________________________________________

pero claro, con cuatro picos enteros, que es que estoy harto de dibujar...

|_________________________________________________________________

Responder
Página 3 / 6
Compartir: