Remarque: cela dépend des coordonnées que vous utilisez dans l'image redimensionnée. Je suppose que vous utilisez un système basé sur zéro (comme C
, contrairement à Matlab
) et que 0 est transformé en 0. De plus, je suppose que vous n'avez pas d'inclinaison entre les coordonnées. Si vous avez un biais, il doit également être multiplié
Réponse courte : en supposant que vous utilisez un système de coordonnées dans lequel u′=u2,v′=v2 , oui, vous devez multiplierax,ay,u0,v0par 0,5.
Réponse détaillée La fonction qui convertit un point P en coordonnées universelles en coordonnées de caméra (x,y,z,1)−>(u,v,S) est:
⎛⎝⎜ax000ay0u0v01⎞⎠⎟⎛⎝⎜⎜⎜R11R21R310R12R22R320R13R23R330TxTyTz1⎞⎠⎟⎟⎟⎛⎝⎜⎜⎜xyz1⎞⎠⎟⎟⎟
Où (u,v,S)−>(u/S,v/S,1) , puisque les coordonnées sont homogènes.
En bref, cela peut s'écrire
u=m1Pm3P,v=m2Pm3P
oùMest le produit des deux matrices mentionné cidessus, etmiest la iième rangée de la matrice deM. (Le produit est un produit scalaire).
Le redimensionnement de l'image peut être pensé:
u′= u / 2 , v′= v / 2
Donc
u′= ( 1 / deux ) M1PM3Pv′= ( 1 / deux ) M2PM3P
La reconversion sous forme matricielle nous donne:
⎛⎝⎜0,50000,50001⎞⎠⎟⎛⎝⎜uneX000uney0u0v01⎞⎠⎟⎛⎝⎜⎜⎜R11R21R310R12R22R320R13R23R330TXTyTz1⎞⎠⎟⎟⎟⎛⎝⎜⎜⎜Xyz1⎞⎠⎟⎟⎟
Qui est égal à
⎛⎝⎜0,5 aX0000,5 ay00,5 u00,5 v01⎞⎠⎟⎛⎝⎜⎜⎜R11R21R310R12R22R320R13R23R330TXTyTz1⎞⎠⎟⎟⎟⎛⎝⎜⎜⎜Xyz1⎞⎠⎟⎟⎟
Pour plus d'informations, reportez-vous au chapitre 3 de Forsyth - Étalonnage de la caméra géométrique.