Nota: Eso depende de las coordenadas que use en la imagen redimensionada. Supongo que está utilizando un sistema basado en cero (como C
, a diferencia Matlab
) y 0 se transforma en 0. Además, supongo que no tiene sesgo entre las coordenadas. Si tienes un sesgo, también se debe multiplicar
Respuesta corta : suponiendo que está utilizando un sistema de coordenadas en el que , sí, debe multiplicar por 0.5.tu′= u2, v′= v2unX, unay, u0 0, v0 0
Respuesta detallada La función que convierte un punto en coordenadas mundiales en coordenadas de cámara es:PAG( x , y, z, 1 ) - > ( u , v , S)
⎛⎝⎜unX0 00 00 0uny0 0tu0 0v0 01⎞⎠⎟⎛⎝⎜⎜⎜R11R21R310 0R12R22R320 0R13R23R330 0TXTyTz1⎞⎠⎟⎟⎟⎛⎝⎜⎜⎜Xyz1⎞⎠⎟⎟⎟
Donde , ya que las coordenadas son homogéneas.(u,v,S)−>(u/S,v/S,1)
En resumen, esto se puede escribir como
donde es el producto de las dos matrices mencionadas anteriormente, y es el i ' º fila de la matriz . (El producto es producto escalar).u=m1Pm3P,v=m2Pm3P
MmiM
Se puede pensar en cambiar el tamaño de la imagen:
u′=u/2,v′=v/2
Así
u′=(1/2)M1PM3Pv′=(1/2)M2PM3P
Convertir de nuevo a forma matricial nos da:
⎛⎝⎜0.50000.50001⎞⎠⎟⎛⎝⎜ax000ay0u0v01⎞⎠⎟⎛⎝⎜⎜⎜R11R21R310R12R22R320R13R23R330TxTyTz1⎞⎠⎟⎟⎟⎛⎝⎜⎜⎜xyz1⎞⎠⎟⎟⎟
Que es igual a
⎛⎝⎜0.5 aX0 00 00 00.5 ay0 00.5 u0 00.5 v0 01⎞⎠⎟⎛⎝⎜⎜⎜R11R21R310 0R12R22R320 0R13R23R330 0TXTyTz1⎞⎠⎟⎟⎟⎛⎝⎜⎜⎜Xyz1⎞⎠⎟⎟⎟
Para obtener información adicional, consulte Forsyth , capítulo 3 - Calibración de cámara geométrica.