Примітка. Це залежить від того, які координати ви використовуєте в розмірі зображення. Я припускаю, що ви використовуєте нульову систему (як C
, на відміну від Matlab
) і 0 перетворюється на 0. Крім того, я припускаю, що у вас немає перекосу між координатами. Якщо у вас є перекос, його також слід помножити
Коротка відповідь : Припустимо, що ви використовуєте систему координат, у якій u′=u2,v′=v2 , так, ви повинні помножитиax,ay,u0,v0 на 0,5.
Детальна відповідь Функція, яка перетворює точку P у світових координатах у координати камери (x,y,z,1)−>(u,v,S) є:
⎛⎝⎜ax000ay0u0v01⎞⎠⎟⎛⎝⎜⎜⎜R11R21R310R12R22R320R13R23R330TxTyTz1⎞⎠⎟⎟⎟⎛⎝⎜⎜⎜xyz1⎞⎠⎟⎟⎟
Де (u,v,S)−>(u/S,v/S,1) , оскільки координати однорідні.
Коротше кажучи, це можна записати як
u=m1Pm3P,v=m2Pm3P
,
деMявляє собою добуток двох матриць згадувалося вище, аmiє iму рядку матриціM. (Продукт скалярний продукт).
Повторне розмір зображення можна подумати:
u′=u/2,v′=v/2
Таким чином
u′=(1/2)M1PM3Pv′=(1/2)M2PM3P
Перетворення в матричну форму дає нам:
⎛⎝⎜0.50000.50001⎞⎠⎟⎛⎝⎜ax000ay0u0v01⎞⎠⎟⎛⎝⎜⎜⎜R11R21R310R12R22R320R13R23R330TxTyTz1⎞⎠⎟⎟⎟⎛⎝⎜⎜⎜xyz1⎞⎠⎟⎟⎟
Який дорівнює
⎛⎝⎜0.5ax0000.5ay00.5u00.5v01⎞⎠⎟⎛⎝⎜⎜⎜R11R21R310R12R22R320R13R23R330TxTyTz1⎞⎠⎟⎟⎟⎛⎝⎜⎜⎜xyz1⎞⎠⎟⎟⎟
For additional information, refer to Forsyth, chapter 3 - Geometric camera calibration.