[Jderobot] ¿Bug en progeo?

Eduardo Perdices eperdices en gsyc.es
Jue Sep 5 20:30:44 CEST 2013


Hola,

si miras los cálculos que se hacen en el project son estos:

     a = RT*in;
     out = K*a.head(3);
     out(0) = out(0)/out(2);
     out(1) = out(1)/out(2);
     out(2) = 1.0;

En tu caso "a" valdría (0,0,800) y out saldría (159.5*800, 119.5*800, 
800), que al dividir por 800 te saldría el número bien.

Después como tenemos lo de pasar de coordinadas ópticas a coordenadas 
gráficas se hace esto:

     double aux = out(0);
     out(0) = out(1);
     out(1) = this->rows-1-aux;

Y aquí out valdría (119.5, rows  - 1 - 159.5), si en tu caso tienes el 
240, te sale el resultado que has puesto. La cosa es que después de 
hacer un project tienes que hacer la operación inversa, pasar de nuevo 
de coordenadas gráficas a coordenadas ópticas y de nuevo te saldrá el 
(159.9, 119.5).

Al hacer un backproject es lo contrario, primero hacer el cambio de 
coordenadas y luego llamas a backproject. Esto se hace así porque en 
progeo los valores en 2D que se toman como entrada y salida tienen como 
sistema de coordenadas el sistema x-y típico de las gráficas, algo así:

/\
|
| X
|     Y
----------->

y no el sistema que se utiliza en la mayoría de imágenes que es así:

      X
------------->
|
|
|  Y
|
\/

Yo particularmente creo que habría que trabajar directamente con 
coordenadas ópticas, puesto que es lo que se hace en la mayoría de los 
sitios, pero ahora mismo Progeo funciona como digo. Viene esto mejor 
explicado aquí:

http://jderobot.org/Manual-4.3#Progeo_Library

Saludos.

El 05/09/13 19:21, Roberto Calvo escribió:
> Hola,
>
> Os quiero comentar un comportamiento que me estoy encontrando con
> Progeo, a ver si a alguno más os ha pasado o es un bug de la librería.
>
> Parto de la siguiente configuración de la cámara de Progeo:
>
> Camera:
>
>       Position: (X,Y,Z,H)=(0,0,0,0,0,0,0,0)
>       Focus of Attention: (x,y,z,h)=(0,0,0,0,0,0,0,0)
>
>       Focus DistanceX(vertical): 272,2 mm
>       Focus DistanceY(horizontal): 272,2 mm
>       Skew: 65,75091
>       Optical Center: (x,y)=(159,5 , 119,5)
>
> K Matrix:
> 272.171       0   159.5
>        0 272.171   119.5
>        0       0       1
>
> R&T Matrix:
> 1 0 0 0
> 0 1 0 0
> 0 0 1 0
> 0 0 0 1
>
>
> Hasta aquí parece estar todo bien. También funciona bien el hecho de
> usar cualquier pixel, pasar a punto 3D y ese mismo punto 3D o cualquiera
> de su recta hacer al project y que vuelta a dar el mismo pixel.
>
> El caso es que estoy teniendo problemas con el centro óptico.
> Teóricamente cualquier punto 3D que sea del estilo (0, 0, Z) debería
> hacer el project al centro óptico que se corresponde con el centro de la
> imágen. El centro óptico es (159.5,119.5).
>
> Sin embargo al hacer el project del punto 3D (0,0,800) me devuelve el
> píxel (119.5, 79.5). No sé si se me está escapando algo, o es fruto de
> algún bug o problema de memoria.
>
> ¿Alguien más está trabajando con la librería de Progeo nueva?
>
>

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://gsyc.escet.urjc.es/pipermail/jde-developers/attachments/20130905/ba113be1/attachment.htm 


More information about the Jde-developers mailing list