Answers:
注意:这取决于您在调整大小后的图像中使用的坐标。我假设您使用的是从零开始的系统(如C
,与Matlab
有所不同),并且0转换为0。而且,我假设您在坐标之间没有任何偏差。如果您确实有偏斜,也应该乘以
简短答案:假设您使用的坐标系中,是的,你应该乘以0.5。
详细答案将世界坐标中的点转换为相机坐标 函数是:
其中,因为坐标是同质的。
简而言之,可以写成
,其中是两个矩阵的乘积如上所述,和是矩阵的第i行。(该产品为标量产品)。
重新调整图像大小可以考虑:
从而
转换回矩阵形式可以使我们:
等于
有关更多信息,请参阅Forsyth,第3章-相机几何校准。
安德烈(Andrey)提到,他的解决方案假设将0转换为0。如果使用像素坐标,则在调整图像大小时可能不正确。您真正需要做的唯一假设是,您的图像变换可以由3x3矩阵表示(如Andrey所示)。要更新相机矩阵,您可以将其乘以代表图像变换的矩阵。
[new_camera_matrix] = [image_transform]*[old_camera_matrix]
例如,假设您需要将图像的分辨率更改一个因子 并且您正在使用0个索引像素坐标。您的坐标由关系转换
这可以用矩阵表示
所以你最终的相机矩阵是