Примечание. Это зависит от того, какие координаты вы используете в измененном изображении. Я предполагаю, что вы используете систему с нулями (например C
, в отличие от Matlab
) и 0 преобразуется в 0. Кроме того, я предполагаю, что у вас нет перекоса между координатами. Если у вас есть перекос, его также нужно умножить
Краткий ответ : Предполагая, что вы используете систему координат, в которой , да, вы должны умножить на 0,5.u′=u2,v′=v2ax,ay,u0,v0
Подробный ответ Функция, которая преобразует точку в мировых координатах в координаты камеры :P(x,y,z,1)−>(u,v,S)
⎛⎝⎜aИкс000aY0U0v01⎞⎠⎟⎛⎝⎜⎜⎜R11R21R310R12R22R320R13R23R330TxTyTz1⎞⎠⎟⎟⎟⎛⎝⎜⎜⎜xyz1⎞⎠⎟⎟⎟
Где (u,v,S)−>(u/S,v/S,1) , поскольку координаты однородны.
Вкратце это можно записать как
u=m1Pm3п, v =m2пm3п
,
гдеMпредставляет собой произведение двух матриц упоминалось выше, иявляется iой строке матрицы. (Продукт скалярный продукт).мяM
Изменение размера изображения можно подумать о:
U'= u / 2 , v'= v / 2
таким образом
U'= ( 1 / 2 ) М1пM3пv'= ( 1 / 2 ) М2пM3п
Преобразование обратно в матричную форму дает нам:
⎛⎝⎜0,50000,50001⎞⎠⎟⎛⎝⎜aИкс000aY0U0v01⎞⎠⎟⎛⎝⎜⎜⎜р11р21р310р12р22р320р13р23р330TИксTYTZ1⎞⎠⎟⎟⎟⎛⎝⎜⎜⎜ИксYZ1⎞⎠⎟⎟⎟
Который равен
⎛⎝⎜0,5 аИкс0000,5 аY00,5 ед.00,5 В01⎞⎠⎟⎛⎝⎜⎜⎜р11р21р310р12р22р320р13р23р330TИксTYTZ1⎞⎠⎟⎟⎟⎛⎝⎜⎜⎜ИксYZ1⎞⎠⎟⎟⎟
За дополнительной информацией обращайтесь к Форсайту , глава 3 - Калибровка геометрической камеры.