[Jderobot] ¿Bug en progeo?

Eduardo Perdices eperdices en gsyc.es
Vie Sep 6 13:51:38 CEST 2013


Hola,

yo lo tenía implementado en mi código con la versión antigua, habría que 
adaptarlo:

void
Kinematics::pixel2Optical(TPinHoleCamera * camera, HPoint2D * p)
{
     float aux;
     int height;

     height = camera->rows;

     aux = p->x;
     p->x = height-1-p->y;
     p->y = aux;
}

void
Kinematics::optical2Pixel(TPinHoleCamera * camera, HPoint2D * p)
{
     float aux;
     int height;

     height = camera->rows;

     aux = p->y;
     p->y = height-1-p->x;
     p->x = aux;
}

Saludos.

El 06/09/13 13:42, Roberto Calvo escribió:
> Genial Edu, era justo eso :-)
>
> He estado mirando y veo que no hay nada de graphic2optical y viceversa
> en las librerías, asi que lo voy a meter dentro de Progeo.
>
> Gracias por la explicación!
>
> El jue, 05-09-2013 a las 20:30 +0200, Eduardo Perdices escribió:
>> 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?
>>>
>>>
>> _______________________________________________
>> Jde-developers mailing list
>> Jde-developers en gsyc.es
>> http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers



More information about the Jde-developers mailing list