调整图像大小如何影响相机校准投影矩阵?

问题描述 投票:0回答:2

我目前正在研究相机校准方法。我对这个领域很陌生。给定一组 2D-3D 对应关系,使用最小二乘拟合方法构建 3*4 投影矩阵。

案例 - 1:我拍摄了一张尺寸为 $H$ x $W$ 的图像 $I_1$ 并计算了 $3*4$ 投影矩阵 $M_1$。 情况 - 2:我通过 2 倍插值调整了图像 ($I_1$) 的大小,并获得了大小为 $2H$ x $2W$ 的新图像 $I_2$,然后计算了投影矩阵 $M_2$。

$M_1$ 和 $M_2$ 之间有什么关系。它们是相同还是不同?如果一样,为什么?如果不同的话是什么 $M_1$ 和 $M_2$ 之间的数学关系?

我通过实验发现输出 $M_1$ 和 $M_2$ 大致相同(不精确,第二个小数后有一些偏差)。我不确定我是否接近正确。

image-processing computer-vision camera-calibration homography
2个回答
0
投票

您的问题缺少一些精确答案的代码。这取决于如何匹配。

例如,通常考虑“无维”矩阵,即考虑图像坐标从 0 到 1(或 -1 到 1,中心位于图像中心)。 在这种情况下,图像分辨率并不重要。

如果考虑图像坐标是 H×W 数组中的传统索引的情况(因此从左上角开始 y=0,x=0,并在右下角以 y=H,x=W 结束),那么,调整图像大小就相当于将该图像中的点坐标乘以矩阵

Z=[[ρ,  0,  0],
   [0,  ρ,  0],
   [0,  0,  1]]

因此,初始图像中出现在坐标

(x,y,1)
处的点现在出现在新图像中的坐标
(ρx, ρy, 1)
处(在您的示例中,ρ=2)

或者,因为在那些齐次坐标中,

(ρx,ρy,1)
(x,y,1/ρ)
相同,它也可以是矩阵

Z=[[1,  0,  0],
   [0,  1,  0],
   [0,  0,  1/ρ]]

(这是有道理的:任何东西,矩阵或坐标,都对比例因子有效)

所以,如果你的 3×4 投影矩阵是 M,那么现实生活中的一个点

(xᵣ,yᵣ,zᵣ,1)
在原始图像中投影为
(xᵢ,yᵢ,1) = M.(xᵣ,yᵣ,zᵣ,1)
,并且一旦调整大小为
(ρxᵢ,ρyᵢ,1) = Z(xᵢ,yᵢ,1) = ZM(xᵣ,yᵣ,zᵣ,1)

换句话说,只需将矩阵 M 的前两行乘以 ρ 即可。或者将最后一个除以 ρ,就得到新的投影矩阵。

再次强调,如果“投影矩阵”是指将现实世界的坐标转换为表示图像的二维数组中的索引的矩阵。如果这些坐标不是索引,而是以图像大小(0 = 中心,1 = 右,-1 = 左,或类似的东西)表示的比例,或实际单位,如厘米,W 和 H 只是分辨率,而不是图像的大小,那么,投影矩阵不会受到图像分辨率的影响(显然,其估计可以是:分辨率越好,投影矩阵的估计就越好)


0
投票

相机校准中“投影矩阵”最常见的定义是:

M = K * [R|t]
,哪里

K = [[fx, 0, cx], [0, fy, cy], [0, 0, 1]]
.

注意:一些文献提到了像素倾斜参数,但在数字传感器中,这通常可以忽略不计。

该矩阵将 3D 点(同质世界坐标)投影到图像中的 2D 像素坐标(同样作为 3 元素同质向量)。 OpenCV、libCalib、Matlab、Halcon 以及有关相机校准和机器/计算机视觉的科学文献均采用此约定。有时,使用“归一化相机坐标”,其中点简单地投影到 Z=1 处的平面上,并且可以在上面的公式中省略 K 矩阵。 当按因子

s
重新缩放图像时,可以导出一个新的相应 K 矩阵。它的形式取决于所采用的坐标约定:

对于 OpenCV、Calib.io Calibrator、Halcon,像素原点位于 左上角像素的中心。新的 K 矩阵变为:

Ks = [[s*fx, 0, s*(cx+0.5)-0.5], [0, s*fy, s*(cy+0.5)-0.5], [0, 0, 1]]

如果像素原点位于左上角像素的左上角:

Ks = [[s*fx, 0, s*cx], [0, s*fy, s*cy], [0, 0, 1]]

更多信息可以在我撰写的这篇文章中找到:https://calib.io/blogs/knowledge-base/camera-models

© www.soinside.com 2019 - 2024. All rights reserved.