Computer vision 基于内、外摄像机参数计算单应矩阵

Computer vision 基于内、外摄像机参数计算单应矩阵,computer-vision,homography,image-stitching,360-panorama,projective-geometry,Computer Vision,Homography,Image Stitching,360 Panorama,Projective Geometry,我愿意为6台鱼眼相机进行360°全景拼接 为了找到摄像机之间的关系,我需要计算单应矩阵。后者通常通过在图像中找到特征并进行匹配来计算 但是,对于我的相机设置我已经知道了: 固有摄像机矩阵K,我通过摄像机校准计算得出 外部摄像机参数R和t。相机方向是固定的,在任何点上都不会改变。摄像机位于一个已知直径d的圆圈上,每个摄像机相对于圆圈移动60° 因此,我认为我可以手动计算单应矩阵,我假设这将导致比执行特征匹配更精确的方法 在文献中,我发现以下公式用于计算图像2与图像1之间的单应矩阵: H_2_1

我愿意为6台鱼眼相机进行360°全景拼接

为了找到摄像机之间的关系,我需要计算单应矩阵。后者通常通过在图像中找到特征并进行匹配来计算

但是,对于我的相机设置我已经知道了

  • 固有摄像机矩阵K,我通过摄像机校准计算得出
  • 外部摄像机参数R和t。相机方向是固定的,在任何点上都不会改变。摄像机位于一个已知直径d的圆圈上,每个摄像机相对于圆圈移动60°
因此,我认为我可以手动计算单应矩阵,我假设这将导致比执行特征匹配更精确的方法

在文献中,我发现以下公式用于计算图像2与图像1之间的单应矩阵:

H_2_1 = (K_2) * (R_2)^-1 * R_1 * K_1
这个公式只考虑了摄像机之间的旋转角度,而不是我的例子中存在的平移向量

如何在计算H时插入每个摄像机的平移t?

我已经尝试在不考虑平移的情况下计算H,但由于d>1米,图像在全景图中无法精确对齐

编辑:

根据下面Francesco的回答,我得到了以下问题:

  • 校准鱼眼透镜后,我得到了一个矩阵
    K
    ,焦距
    f=620
    ,用于尺寸为1024 x 768的图像。这被认为是大焦距还是小焦距

  • 我的相机位于一个直径为1米的圆圈上。下面的解释对我来说很清楚,由于摄像机之间的这种“大”平移,我对相对靠近它们的物体产生了显著的重影效果。因此,如果单应模型不能完全表示摄像机的位置,是否可以使用另一种模型,如基本/基本矩阵来进行图像拼接?

你不能“插入”平移:平移的存在以及非平凡的旋转在数学上意味着图像之间的关系不是单应关系

但是,如果成像场景距离摄影机“足够远”,也就是说,与场景对象距离摄影机的距离相比,摄影机之间的平移很小,并且摄影机的焦距足够小,则可以使用纯旋转产生的同音字作为近似值

你的方程式错了。正确的公式如下所示:

  • 在相机1中取一个像素:
    p_1=(x,y,1)
    在齐次坐标中
  • 将其反向投影到三维空间中的光线中:
    P_1=inv(K_1)*P_1
  • 在摄影机2的坐标中分解光线:
    P_2=R_2_1*P1
  • 将光线投影到摄影机2中的像素:
    p_2=K_2*p_2
  • 把这些方程放在一起:
    p_2=[K_2*R_2_1*inv(K_1)]*p_1
乘积
H=K2*R\u 2\u 1*inv(K1)
是(近似)单应性。旋转R_2_1将点从第1帧转换为第2帧。它是一个3x3矩阵,其列是在第2帧中分解的第1帧的x、y、z轴的组件。如果您的设置提供了所有相机相对于公共帧0的旋转,即R_i_0,则它是
R_2_1=R_2_0*R_1_0。转置的

一般来说,您应该使用上述单应性作为初始估计,通过匹配点和优化进行细化。这是因为(a)单应模型本身只是一个近似值(因为它忽略了平移),以及(b)机械装置(即使是校准装置)给出的旋转受到误差的影响。使用匹配的像素优化变换将最大限度地减少图像上的错误,而不是抽象旋转空间中的错误。

不能“插入”平移:平移的存在以及非平凡的旋转从数学上意味着图像之间的关系不是单应关系

但是,如果成像场景距离摄影机“足够远”,也就是说,与场景对象距离摄影机的距离相比,摄影机之间的平移很小,并且摄影机的焦距足够小,则可以使用纯旋转产生的同音字作为近似值

你的方程式错了。正确的公式如下所示:

  • 在相机1中取一个像素:
    p_1=(x,y,1)
    在齐次坐标中
  • 将其反向投影到三维空间中的光线中:
    P_1=inv(K_1)*P_1
  • 在摄影机2的坐标中分解光线:
    P_2=R_2_1*P1
  • 将光线投影到摄影机2中的像素:
    p_2=K_2*p_2
  • 把这些方程放在一起:
    p_2=[K_2*R_2_1*inv(K_1)]*p_1
乘积
H=K2*R\u 2\u 1*inv(K1)
是(近似)单应性。旋转R_2_1将点从第1帧转换为第2帧。它是一个3x3矩阵,其列是在第2帧中分解的第1帧的x、y、z轴的组件。如果您的设置提供了所有相机相对于公共帧0的旋转,即R_i_0,则它是
R_2_1=R_2_0*R_1_0。转置的

一般来说,您应该使用上述单应性作为初始估计,通过匹配点和优化进行细化。这是因为(a)单应模型本身只是一个近似值(因为它忽略了平移),以及(b)机械装置(即使是校准装置)给出的旋转受到误差的影响。使用匹配像素进行优化