当前位置: 首页 > news >正文

三维重建【0-D】3D Gaussian Splatting:相机标定原理与步骤

三维重建【0-D】3D Gaussian Splatting:相机标定原理与步骤

  • 前言
  • 张正友相机标定法数学推导求解

前言

基于前面的学习,通过相机成像几何模型,我们知道了如何将世界坐标系中的三维坐标和像素坐标系中的二维坐标联系起来。此外,根据标定棋盘图纸及其对应的照片已经得到了单应性矩阵H(H是内参矩阵和外参矩阵的混合体)。

张正友相机标定法数学推导求解

首先不考虑镜头畸变,求解思路是利用旋转向量的约束关系,先将单应性矩阵H化为3个列向量H=[h1h2h3]H=[h_1 \space h_2 \space h_3]H=[h1 h2 h3]
H=[h1h2h3]=sM[r1r2t]H=[h_1 \space h_2 \space h_3]=sM[r_1 \space r_2 \space t]H=[h1 h2 h3]=sM[r1 r2 t]
则可以得到:
在这里插入图片描述
r1r_1r1r2r_2r2相互正交,由此可以利用“”正交的两个含义,得出每个单应矩阵提供的两个约束条件:

  • 约束条件1: 旋转向量点积为0(两垂直平面上的旋转向量互相垂直),即:
    在这里插入图片描述
  • 约束条件2: 旋转向量长度相等(旋转不改变尺度),即:
    在这里插入图片描述

那么如何利用上述两个约束条件求解内参或者外参呢?我们一步一步来看,由前面可知内参矩阵M:
在这里插入图片描述
根据前面的公式,令B=(M−1)TM−1B=(M^{-1})^{T}M^{-1}B=(M1)TM1,则:
由于M=[fxγu00fyv0001]M=\begin{bmatrix} f_x & \gamma & u_0\\ 0 & f_y & v_0\\ 0 & 0 & 1 \end{bmatrix}M=fx00γfy0u0v01,则 ∣M∣=fxfy|M|=f_xf_yM=fxfy,则:
Adj(M)=[fy−γγv0−fyu00fx−fxv000fxfy]Adj(M)=\begin{bmatrix} f_y & -\gamma & \gamma v_0-f_yu_0\\ 0 & f_x & -f_xv_0\\ 0 & 0 & f_xf_y \end{bmatrix}Adj(M)=fy00γfx0γv0fyu0fxv0fxfy
则有:
M−1=1fxfy[fy−γγv0−fyu00fx−fxv000fxfy]M^{-1}=\frac{1}{f_xf_y}\begin{bmatrix} f_y & -\gamma & \gamma v_0-f_yu_0\\ 0 & f_x & -f_xv_0\\ 0 & 0 & f_xf_y \end{bmatrix}M1=fxfy1fy00γfx0γv0fyu0fxv0fxfy
则有:
(M−1)T=[1fx00−γfxfy1fy0γv0−fyu0fxfy−v0fy1](M^{-1})^{T}=\begin{bmatrix} \frac{1}{f_x} & 0 & 0\\ \frac{-\gamma}{f_xf_y} & \frac{1}{f_y} & 0\\ \frac{\gamma v_0-f_yu_0}{f_xf_y} & \frac{-v_0}{f_y} & 1 \end{bmatrix}(M1)T=fx1fxfyγfxfyγv0fyu00fy1fyv0001
则有:
M−1=[1fx−γfxfyγv0−fyu0fxfy01fy−v0fy001]M^{-1}=\begin{bmatrix} \frac{1}{f_x} & \frac{-\gamma}{f_xf_y} & \frac{\gamma v_0-f_yu_0}{f_xf_y}\\ 0 & \frac{1}{f_y} & \frac{-v_0}{f_y}\\ 0 & 0 & 1 \end{bmatrix}M1=fx100fxfyγfy10fxfyγv0fyu0fyv01
则有:
B=(M−1)TM−1=[1fx2−γfx2fyγv0−fyu0fx2fy−γfx2fyγ2fx2fy2+1fy2−γγv0−fyu0fx2fy2−v0fy2γv0−fyu0fx2fy−γγv0−fyu0fx2fy2−v0fy2(γv0−fyu0)2fx2fy2+v0fy2+1]=[B11B12B13B21B22B23B31B32B33]B=(M^{-1})^{T}M^{-1}=\begin{bmatrix} \frac{1}{f_x^{2}} & \frac{-\gamma}{f_x^{2}f_y} & \frac{\gamma v_0-f_yu_0}{f_x^{2}f_y}\\ \frac{-\gamma}{f_x^{2}f_y} & \frac{\gamma ^{2}}{f_x^{2}f_y^{2}} + \frac{1}{f_y^{2}} & -\gamma \frac{\gamma v_0-f_yu_0}{f_x^{2}f_y^{2}}-\frac{v_0}{f_y^{2}}\\ \frac{\gamma v_0-f_yu_0}{f_x^{2}f_y} & -\gamma \frac{\gamma v_0-f_yu_0}{f_x^{2}f_y^{2}}-\frac{v_0}{f_y^{2}} & \frac{(\gamma v_0-f_yu_0)^{2}}{f_x^{2}f_y^{2}}+\frac{v_0}{f_y^{2}}+1 \end{bmatrix}=\begin{bmatrix} B_{11} & B_{12} &B_{13} \\ B_{21} & B_{22} &B_{23} \\ B_{31} & B_{32} &B_{33} \end{bmatrix}B=(M1)TM1=fx21fx2fyγfx2fyγv0fyu0fx2fyγfx2fy2γ2+fy21γfx2fy2γv0fyu0fy2v0fx2fyγv0fyu0γfx2fy2γv0fyu0fy2v0fx2fy2(γv0fyu0)2+fy2v0+1=B11B21B31B12B22B32B13B23B33
可以发现BBB是对称矩阵,真正有用的元素只有6个(主对角线任意一侧的6个元素),则可以将B用一个6D的向量b定义,即:
b=[B11B12B22B13B23B33]b=\begin{bmatrix} B_{11} \\ B_{12} \\ B_{22} \\ B_{13} \\ B_{23} \\ B_{33} \end{bmatrix}b=B11B12B22B13B23B33
将B带入前面两个约束条件后转换为:
{h1TBh2=0h1TBh1=h2TBh2\left\{ \begin{aligned} h_1^{T}Bh_2&=0 \\ h_1^{T}Bh_1&=h_2^{T}Bh_2 \end{aligned} \right. {h1TBh2h1TBh1=0=h2TBh2
定义3×33 \times 33×3的单应矩阵H=[h1h2h3]H=[h_1 \space h_2 \space h_3]H=[h1 h2 h3]的第iii列列向量:
hi=[hi1,hi2,hi3]Th_i=[h_{i1}, h_{i2}, h_{i3}]^{T}hi=[hi1,hi2,hi3]T
为了简化表达,则:hiTBhj=[hi1hi2hi3][B11B12B13B21B22B23B31B32B33][hj1hj2hj3]h_i^{T}Bh_j=\begin{bmatrix} h_{i1} & h_{i2} & h_{i3} \end{bmatrix} \begin{bmatrix} B_{11} & B_{12} &B_{13} \\ B_{21} & B_{22} &B_{23} \\ B_{31} & B_{32} &B_{33} \end{bmatrix}\begin{bmatrix} h_{j1} \\ h_{j2} \\ h_{j3} \end{bmatrix}hiTBhj=[hi1hi2hi3]B11B21B31B12B22B32B13B23B33hj1hj2hj3
则有:hiTBhj=[hi1B11+hi2B21+hi3B31hi1B12+hi2B22+hi3B32hi1B13+hi2B23+hi3B33]T[hj1hj2hj3]h_i^{T}Bh_j=\begin{bmatrix} h_{i1}B_{11} + h_{i2}B_{21} + h_{i3}B_{31}\\ h_{i1}B_{12} + h_{i2}B_{22} + h_{i3}B_{32}\\ h_{i1}B_{13} + h_{i2}B_{23} + h_{i3}B_{33} \end{bmatrix}^{T}\begin{bmatrix} h_{j1} \\ h_{j2} \\ h_{j3} \end{bmatrix}hiTBhj=hi1B11+hi2B21+hi3B31hi1B12+hi2B22+hi3B32hi1B13+hi2B23+hi3B33Thj1hj2hj3
其中等式右边第一个式子是一个1×31 \times 31×3的行向量,则有:
hiTBhj=hi1hj1B11+hi2hj1B21+hi3hj1B31+hi1hj2B12+hi2hj2B22+hi3hj2B32+hi1hj3B13+hi2hj3B23+hi3hj3B33h_i^{T}Bh_j=h_{i1}h_{j1}B_{11} + h_{i2}h_{j1}B_{21} + h_{i3}h_{j1}B_{31} + h_{i1}h_{j2}B_{12} + h_{i2}h_{j2}B_{22} + h_{i3}h_{j2}B_{32} + h_{i1}h_{j3}B_{13} + h_{i2}h_{j3}B_{23} + h_{i3}h_{j3}B_{33}hiTBhj=hi1hj1B11+hi2hj1B21+hi3hj1B31+hi1hj2B12+hi2hj2B22+hi3hj2B32+hi1hj3B13+hi2hj3B23+hi3hj3B33
因为B是对称矩阵,则合并有:
[hi1hj1hi1hj2+hi2hj1hi2hj2hi1hj3+hi3hj1hi3hj2+hi2hj3hi3hj3]T[B11B12B22B13B23B33]=vijTb\begin{bmatrix} h_{i1}h_{j1} \\ h_{i1}h_{j2} + h_{i2}h_{j1} \\ h_{i2}h_{j2} \\ h_{i1}h_{j3} + h_{i3}h_{j1} \\ h_{i3}h_{j2} + h_{i2}h_{j3} \\ h_{i3}h_{j3} \end{bmatrix}^{T}\begin{bmatrix} B_{11} \\ B_{12} \\ B_{22} \\ B_{13} \\ B_{23} \\ B_{33} \end{bmatrix}=v_{ij}^{T}bhi1hj1hi1hj2+hi2hj1hi2hj2hi1hj3+hi3hj1hi3hj2+hi2hj3hi3hj3TB11B12B22B13B23B33=vijTb
由此得到:
hiTBhj=vijTbh_i^{T}Bh_j=v_{ij}^{T}bhiTBhj=vijTb
从而有:
{h1TBh2=v12Tb=0v11Tb−v22Tb=0\left\{ \begin{aligned} h_1^{T}Bh_2 = v_{12}^{T}b &=0 \\ v_{11}^{T}b-v_{22}^{T}b&=0 \end{aligned} \right. {h1TBh2=v12Tbv11Tbv22Tb=0=0
进一步推导可以将两个约束表达式转化为下面未知数为向量b的齐次方程:
[v12T(v11−v22)T]b=0\begin{bmatrix} v_{12}^T \\ (v_{11}-v_{22})^{T} \end{bmatrix}b=0[v12T(v11v22)T]b=0
如果我们拍摄了n张不同角度的标定图像,因为每张图像我们都可以得到一组(2个)上述的等式。其中,v11v_{11}v11v12v_{12}v12v22v_{22}v22可以通过前面已经计算好的单应矩阵得到,因此是已知的,而bbb中的6个元素是代求的未知数。因此,至少要保证图像数量>=3,才可以求解出bbb。需要注意的是,这里的bbb是带有比例因子的。

基于此,可以进行内参矩阵的求解,由于之前B=(M−1)TM−1B=(M^{-1})^{T}M^{-1}B=(M1)TM1的推导结论,再加入一个比例因子,则有:
B=λ(M−1)TM−1=λ[1fx2−γfx2fyγv0−fyu0fx2fy−γfx2fyγ2fx2fy2+1fy2−γγv0−fyu0fx2fy2−v0fy2γv0−fyu0fx2fy−γγv0−fyu0fx2fy2−v0fy2(γv0−fyu0)2fx2fy2+v0fy2+1]=[B11B12B13B21B22B23B31B32B33]B=\lambda (M^{-1})^{T}M^{-1}=\lambda \begin{bmatrix} \frac{1}{f_x^{2}} & \frac{-\gamma}{f_x^{2}f_y} & \frac{\gamma v_0-f_yu_0}{f_x^{2}f_y}\\ \frac{-\gamma}{f_x^{2}f_y} & \frac{\gamma ^{2}}{f_x^{2}f_y^{2}} + \frac{1}{f_y^{2}} & -\gamma \frac{\gamma v_0-f_yu_0}{f_x^{2}f_y^{2}}-\frac{v_0}{f_y^{2}}\\ \frac{\gamma v_0-f_yu_0}{f_x^{2}f_y} & -\gamma \frac{\gamma v_0-f_yu_0}{f_x^{2}f_y^{2}}-\frac{v_0}{f_y^{2}} & \frac{(\gamma v_0-f_yu_0)^{2}}{f_x^{2}f_y^{2}}+\frac{v_0}{f_y^{2}}+1 \end{bmatrix}=\begin{bmatrix} B_{11} & B_{12} &B_{13} \\ B_{21} & B_{22} &B_{23} \\ B_{31} & B_{32} &B_{33} \end{bmatrix}B=λ(M1)TM1=λfx21fx2fyγfx2fyγv0fyu0fx2fyγfx2fy2γ2+fy21γfx2fy2γv0fyu0fy2v0fx2fyγv0fyu0γfx2fy2γv0fyu0fy2v0fx2fy2(γv0fyu0)2+fy2v0+1=B11B21B31B12B22B32B13B23B33
对等式进行求解得:
在这里插入图片描述
得到内参数后,内参矩阵M也已知。单应矩阵H也已知,因此可以继续求得外参数:
在这里插入图片描述
又由标准旋转矩阵的性质可以得到r3=r1×r2r_3=r_1 \times r_2r3=r1×r2∣∣r1∣∣=∣∣r2∣∣=∣∣λM−1h2∣∣=∣∣=λM−1h1∣∣=1||r_1||=||r_2||=||\lambda M^{-1}h_2||=||=\lambda M^{-1}h_1||=1∣∣r1∣∣=∣∣r2∣∣=∣∣λM1h2∣∣=∣∣=λM1h1∣∣=1得:
s=∣∣M−1h1∣∣=∣∣M−1h2∣∣s=||M^{-1}h_1||=||M^{-1}h_2||s=∣∣M1h1∣∣=∣∣M1h2∣∣
综上所述,有:
{s=∣∣M−1h1∣∣=∣∣M−1h2∣∣r1=λM−1h1r2=λM−1h2r3=r1×r2t=λM−1h3\left\{ \begin{aligned} & s = ||M^{-1}h_1||=||M^{-1}h_2|| \\ & r_1 = \lambda M^{-1}h_1 \\ & r_2 = \lambda M^{-1}h_2 \\ & r_3 = r_1 \times r_2 \\ & t = \lambda M^{-1}h_3 \end{aligned} \right. s=∣∣M1h1∣∣=∣∣M1h2∣∣r1=λM1h1r2=λM1h2r3=r1×r2t=λM1h3
需要注意的是,上述的推导结果是基于理想情况下的解,从理论上证明了张氏标定算法的可行性。

http://www.dtcms.com/a/546782.html

相关文章:

  • 中国企业商务网站建设河南seo网站多少钱
  • 做预算兼职的网站东莞设计网站企业
  • 网站建设项目工作分解结构建设银行交学费网站
  • Python导入opencv报错“DLL load failed while importing cv2: 找不到指定的模块”排错过程记录
  • 黄金外汇网站建设网站备案在哪查
  • 大二java学习笔记:子类与继承
  • 网站毕设代做免费seo网站诊断
  • 旅游网站分析广告喷绘制作公司介绍
  • 解决 IsaacSim 5.0 与 ROS2 Python 版本冲突的完整指南
  • 万网空间存放两个网站湖州网站建设哪家公司好
  • 酒店 企业网站建设的思路jsp ajax网站开发典型实例 pdf
  • 关于命理的一些猜想
  • 西安有那些做网站的公司好商城的网站统计如何做
  • 复古风格网站建筑网站大全免费
  • 网站改版建设,有哪些内容唐山公司网站建设 中企动力唐山
  • 柏乡企业做网站h5网站制作费用
  • 专业企业网站建设报价潍坊专业技术人员继续教育
  • Quartus II下载安装教程Quartus II 18保姆级安装步骤(附安装包)
  • 查询网站开发的端口建站优化
  • 外贸公司网站怎么做网站运营推广该如何做
  • h5开源网站模板学校网站建设规划
  • 浙江网站推广运营网络的基本概念
  • 建设一个公司的网站需要多少钱公司做网站找谁公司做网站找谁
  • 凡科网站免费版百度是不是只有在自己的网站发布才会被收录
  • Array数组的底层实现深度解析
  • 网站高端网站开发流程有哪几个阶段
  • 有趣的网站 知乎怎么做网页公证
  • 网站开发必备技能手机小游戏网站大全
  • 贷款公司通过做网站来给予平台贷款微信公众号如何做微网站
  • 自己做的网站外国人能访问吗网站开发国内外现状研究