【相机标定系列】0415 图像缩放之后相机内参变化,调整图像大小如何影响固有相机矩阵?

在对采集到的图像进行3D坐标相关计算时,需要用到相机内参信息,但是在对图像进行缩放之后相机内参如何变化

https://dsp.stackexchange.com/questions/6055/how-does-resizing-an-image-affect-the-intrinsic-camera-matrix/6057#6057


20210415 重新修订

调整图像大小如何影响固有相机矩阵?

我有一个相机矩阵(我知道内在参数和外在参数),已知尺寸为HxW的图像。 (我将此矩阵用于需要的一些计算)。

我想使用较小的图像,例如:H / 2×W / 2(原件的一半)。 为了保持相同的关系,我需要对矩阵进行哪些更改?

我有,K作为固有参数,(R,T旋转和平移)

在这里插入图片描述
K为3 * 3,我曾考虑过将ax,ay,u0和v0乘以0.5(图像调整大小的因子),其实不是这样的

回答:

注意:这取决于您在调整大小后的图像中使用的坐标。 我假设您使用的是从0开始的语言(例如C,与Matlab不同,matlab是从1开始)。而且,我假设您在坐标之间没有任何skew 偏差。 如果您确实有skew 偏斜,也应该乘以 skew 。

简短的答案:假设您使用的坐标系中u’= u/2,v’= v/2,是的,您应该将ax,ay,u0,v0乘以0.5。

详细答案:
将世界坐标中的点P转换为相机坐标(x,y,z,1)->(u,v,S)的函数是:

在这里插入图片描述
其中(u,v,S)->(u / S,v / S,1),因为坐标是齐次的。

简而言之,可以写成u = m1P/m3P,v = m2P/m3P
其中M是上述两个矩阵的乘积,mi是矩阵M的第i行。(乘积是标量积)。

重新调整图像大小可以考虑:

u′=u/2,v′=v/2

u′=(1/2)M1P/M3P
v′=(1/2)M2P/M3P

转换回矩阵形式可以使我们:

在这里插入图片描述

在这里插入图片描述

不是您从0开始的c语言,使用的是matlab,是否需要其他任何调整

如果您使用的是Matlab,则应使用u′=(u-1)/ 2 + 1,v′=(v-1)/ 2 + 1的转换,因为它具有基于一个的索引(第一个元素为1 ,而不是0)。 在这种情况下,请尝试计算相关矩阵。 如果您不需要亚像素精度,则可以忽略它并使用我给您的公式。

呢?

在这里插入图片描述

通用的思想

您真正需要做的唯一假设是,您的图像变换可以由3x3矩阵表示 。 要更新您的相机矩阵,您可以将其乘以代表图像变换的矩阵。

[new_camera_matrix] = [image_transform]*[old_camera_matrix]

例如,假设您需要将图像的分辨率更改2^n倍,并且使用0索引像素坐标。 您的坐标由关系转换

在这里插入图片描述
这可以用矩阵表示

在这里插入图片描述

所以你最终的相机矩阵是

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值