[Jde] [Fwd: Re: opencv detector de ejes]

Roberto Calvo rocapal en gsyc.es
Dom Jul 20 21:00:35 CEST 2008


Gracias por la info Javier!!

Cuento mi experiencia con opencv.

Yo he optado por utilizar directamente los tipos IplImage, en los
ejemplos que he visto en [1] (buen manual) y en la documentación de
opencv (opencv-doc package), usan este tipo de estructura para trabajar
con imágenes y aplicar los filtros.

El único problema que me llevó más tiempo solucionar, es que cuando
pasamos una imagen de "formato jde" a IplImage, lo que tenemos que tener
en cuenta es crear esa estructura de imagen con 4canales (bit B, bit G,
bit R y bit dummy).

Para el futuro y para quien lo quiera usar, puede encontrar la función
que ya realiza toda esta conversión en el archivo attention.cpp
( http://svn.jde.gsyc.es/users/rocapal/attention/trunk/attention.cpp/ )

[Ahora mismo esta caido el svn, por el apagón, pero mañana podréis
acceder sin problema]

La función es:

void attention_calculateEdges (char* jdeImage, 
                               int width, int height, 
                               char* edgeImageP)

que dada una imagen en formato "jde", su altura y anchura, devuelve un
char[width*height] donde:
 
  - si el valor de un pixel != 0 hay borde.
  - en cualquier otro caso no hay borde.

Además existe una variable interna a esta función llamada 'edge_thresh',
que define cuanto de "finos" queremos ser en la detección de bordes. El
funcionamiento es similar a susan, hay que pasar la imagen a escala de
grises y luego aplicar el filtro de bordes.

Si vamos a tener opencv como referente, quizás no sea mala idea crear un
pequeño wrapper con las funciones más comunes (bordes, movimiento,
rgb2hsi ...)

saludetes!

[1]
http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html#


El vie, 18-07-2008 a las 19:58 +0200, Javier Martín escribió: 
> Hola,
> 
> pues la estructura CvMat tiene un campo que es un puntero directo a
> los datos subyacentes. En el caso que os he puesto, el de encapsular
> una imagen de jde, se podría acceder a *mycolorA, el colorA del driver
> usado, desde imgMyColorA así: imgMyColorA.data.ptr
> 
> De igual manera, los datos subyacentes a un tipo IplImage están en un
> campo de la estructura llamado imageData.
> 
> Los tipos IplImage y CvMat son subtipos de CvArr, así que todas las
> funciones aplicables sobre CvArr , que en realidad es abstracta, han
> de funcionar bien con ellas.
> 
> Recomiendo a quien esté interesado que se eche un vistazo a este wiki
> [1].
> 
> Saludos.
> 
> 1. http://opencvlibrary.sourceforge.net/CxCore
> 
> El día 18 de julio de 2008 17:37, Roberto Calvo <rocapal en gsyc.es>
> escribió:
>         
>         Lo reenvio a la lista que creemos que es de interes general
>         para empezar
>         a usar opencv en la infraestuctura de jde.
>         
>         Javier ha comentado
>         
>         [En cuanto a utilizar con funciones de OpenCV imágenes de la 
>         infraestructura de jde, puedes encapsular una imagen de jde
>          con un
>         CvMat, que es un tipo de CvArr, parecido a IplImage.
>         
>         CvMat imgMyColorA;
>         char **mycolorA;
>         imgMyColorA = cvMat(mycolorAheight, mycolorAwidth, CV_8UC3,
>         *mycolorA);
>         
>         ]
>         
>         Perfecto, es de gran ayuda Javier. De hecho ya te coronas, si
>         nos pegas
>         la forma de pasar cvMat a char** ;-) 
>         
>         
>         un saludete!!
>         
>         --
>         Roberto Calvo Palomino          | Libre Software Engineering
>         Lab (GSyC)
>         Tel: (+34)-914 888 105          | Universidad Rey Juan Carlos
>         rocapal en gsyc.es                 | Edif. Departamental II -
>         Despacho 116
>         http://libresoft.urjc.es/       | c/Tulipán s/n 28933 Móstoles
>         (Madrid)
>         
>         GPG-KEY: http://gsyc.es/~rocapal/rocapal.gpg
>         
>         
>         
>         ---------- Mensaje reenviado ----------
>         From: "Javier Martín" <xaverbrennt en yahoo.es>
>         To: "Roberto Calvo" <rocapal en gsyc.es>
>         Date: Fri, 18 Jul 2008 08:49:14 +0200
>         Subject: Re: opencv detector de ejes 
>         Hola, Roberto:
>         
>         No tengo nada en esa línea. OpenCV tiene funciones para
>         obtener bordes, como cvCanny, por ejemplo, que te saca una
>         máscara de bordes. Luego para localizar regiones con más
>         densidad de bordes, puedes utilizar por ejemplo una rejilla
>         homogénea y contar píxeles bordes en cada zona. También se
>         podrían hacer apaños para buscar regiones con una determinada
>         densidad de bordes de tamaño variable. No sé muy bien qué
>         quieres hacer.
>         
>         En cuanto a utilizar con funciones de OpenCV imágenes de la
>         infraestructura de jde, puedes encapsular una imagen de jde
>         con un CvMat, que es un tipo de CvArr, parecido a IplImage.
>         
>         CvMat imgMyColorA;
>         char **mycolorA;
>         imgMyColorA = cvMat(mycolorAheight, mycolorAwidth, CV_8UC3,
>         *mycolorA);
>         
>         No sé si te he ayudado, pero seguimos en contacto.
>         
>         Saludos.
>         
>         El día 17 de julio de 2008 23:00, Roberto Calvo
>         <rocapal en gsyc.es> escribió:
>                 
>                 Buenas, que tal??
>                 
>                 Oye, creo que tenías algún ejemplo hecho de como
>                 detectar bordes con
>                 opencv, a partir de la estructura de imagen que hay en
>                 jde.
>                 
>                 Si tienes algo sobre esto, me harías una gran
>                 favor :-)
>                 
>                 un saludete!!
>                 
>                 --
>                 Roberto Calvo Palomino          | Libre Software
>                 Engineering Lab (GSyC)
>                 Tel: (+34)-914 888 105          | Universidad Rey
>                 Juan Carlos
>                 rocapal en gsyc.es                 | Edif. Departamental
>                 II - Despacho 116
>                 http://libresoft.urjc.es/       | c/Tulipán s/n 28933
>                 Móstoles (Madrid)
>                 
>                 GPG-KEY: http://gsyc.es/~rocapal/rocapal.gpg 
>         
>         
>         
>         _______________________________________________
>         Jde-developers mailing list
>         Jde-developers en gsyc.es
>         http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
>         
> 
> 
> _______________________________________________
> Jde-developers mailing list
> Jde-developers en gsyc.es
> http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
-- 
Roberto Calvo Palomino          | Libre Software Engineering Lab (GSyC)
Tel: (+34)-914 888 105          | Universidad Rey Juan Carlos
rocapal en gsyc.es                 | Edif. Departamental II - Despacho 116
http://libresoft.urjc.es/       | c/Tulipán s/n 28933 Móstoles (Madrid)

GPG-KEY: http://gsyc.es/~rocapal/rocapal.gpg
------------ próxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre     : no disponible
Tipo       : application/pgp-signature
Tamaño     : 197 bytes
Descripción: Esta parte del mensaje =?ISO-8859-1?Q?est=E1?= firmada
	digitalmente
Url        : http://gsyc.escet.urjc.es/pipermail/jde-developers/attachments/20080720/88ef9c50/attachment.pgp 


Más información sobre la lista de distribución Jde-developers