Hinweis: Dies hängt davon ab, welche Koordinaten Sie im Bild mit geänderter Größe verwenden. Ich gehe davon aus, dass Sie ein auf Null basierendes System verwenden (Like C
, Unlike Matlab
) und 0 in 0 transformiert ist. Außerdem gehe ich davon aus, dass Sie keinen Versatz zwischen den Koordinaten haben. Wenn Sie einen Versatz haben, sollte dieser ebenfalls multipliziert werden
Kurze Antwort : Angenommen, Sie verwenden ein Koordinatensystem, in dem . Ja, Sie sollten mit multiplizieren 0,5.u′= u2, v′= v2einx, einy, u0, v0
Detaillierte Antwort Die Funktion, die einen Punkt in Weltkoordinaten in Kamerakoordinaten umwandelt lautet:P( x , y, z, 1 ) - > ( u , v , S)
⎛⎝⎜einx000einy0u0v01⎞⎠⎟⎛⎝⎜⎜⎜R11R21R310R12R22R320R13R23R330TxTyTz1⎞⎠⎟⎟⎟⎛⎝⎜⎜⎜xyz1⎞⎠⎟⎟⎟
Wobei , da die Koordinaten homogen sind.( u , v , s) - > ( u / s, v / S, 1 )
Kurz gesagt kann dies geschrieben werden als
wobei das Produkt der beiden oben erwähnten Matrizen ist und das i 'ist. ten Reihe der Matrix . (Das Produkt ist ein Skalarprodukt).u = m1Pm3P, v = m2Pm3P
MmichM
Das Ändern der Größe des Bildes kann gedacht werden:
u′= u / 2 , v′= v / 2
Somit
u′= ( 1 / 2 ) M1PM3Pv′= ( 1 / 2 ) M2PM3P
Das Zurückkonvertieren in eine Matrixform gibt uns:
⎛⎝⎜0,50000,50001⎞⎠⎟⎛⎝⎜einx000einy0u0v01⎞⎠⎟⎛⎝⎜⎜⎜R11R21R310R12R22R320R13R23R330TxTyTz1⎞⎠⎟⎟⎟⎛⎝⎜⎜⎜xyz1⎞⎠⎟⎟⎟
Welches ist gleich
⎛⎝⎜0,5 ax0000,5 ay00,5 u00,5 v01⎞⎠⎟⎛⎝⎜⎜⎜R11R21R310R12R22R320R13R23R330TxTyTz1⎞⎠⎟⎟⎟⎛⎝⎜⎜⎜xyz1⎞⎠⎟⎟⎟
Weitere Informationen finden Sie in Forsyth , Kapitel 3 - Geometrische Kamerakalibrierung.