Nota: dipende dalle coordinate utilizzate nell'immagine ridimensionata. Suppongo che tu stia utilizzando un sistema a base zero (come C
, a differenza Matlab
) e 0 viene trasformato in 0. Inoltre, presumo che tu non abbia alcuna inclinazione tra le coordinate. Se hai una inclinazione, anche questa dovrebbe essere moltiplicata
Risposta breve : supponendo che si stia utilizzando un sistema di coordinate in cui u′=u2,v′=v2 , sì, dovresti moltiplicareax,ay,u0,v0per 0,5.
Risposta dettagliata La funzione che converte un punto P in coordinate mondiali in coordinate della telecamera (x,y,z,1)−>(u,v,S) è:
⎛⎝⎜un'X000un'y0u0v01⎞⎠⎟⎛⎝⎜⎜⎜R11R21R310R12R22R320R13R23R330TXTyTz1⎞⎠⎟⎟⎟⎛⎝⎜⎜⎜Xyz1⎞⎠⎟⎟⎟
Dove ( u , v , S) - > ( u / S, v / S, 1 ) , poiché le coordinate sono omogenee.
In breve, questo può essere scritto come
u = m1Pm3P, v = m2Pm3P
doveMè il prodotto delle due matrici di cui sopra, emioè la fila-esima della matriceM. (Il prodotto è prodotto scalare).
Si può pensare a ridimensionare l'immagine:
u'= u / 2 , v'= v / 2
così
u'= ( 1 / 2 ) M1PM3Pv'= ( 1 / 2 ) M2PM3P
La conversione in forma matrice ci dà:
⎛⎝⎜0.50000.50001⎞⎠⎟⎛⎝⎜un'X000un'y0u0v01⎞⎠⎟⎛⎝⎜⎜⎜R11R21R310R12R22R320R13R23R330TXTyTz1⎞⎠⎟⎟⎟⎛⎝⎜⎜⎜Xyz1⎞⎠⎟⎟⎟
Che è uguale a
⎛⎝⎜0,5 aX0000,5 ay00,5 u00,5 v01⎞⎠⎟⎛⎝⎜⎜⎜R11R21R310R12R22R320R13R23R330TXTyTz1⎞⎠⎟⎟⎟⎛⎝⎜⎜⎜Xyz1⎞⎠⎟⎟⎟
Per ulteriori informazioni, consultare Forsyth , capitolo 3 - Calibrazione geometrica della videocamera.