《计算机视觉中的多视图几何》笔记(7)

7 Computation of the Camera Matrix P P P

这章讲的是摄像机参数估计。摄像机标定,本质上就是求摄像机矩阵 P P P,当我们知道足够多的 X ↔ x X \leftrightarrow x X↔x,我们该如何计算 P P P?如果知道3D和2D点的对应,那么内参和外参可以由基本的线性方程求解问题算出。遇到超定解时的解决办法也跟前面讲的第4章射影变换的情况非常类似。值得注意的是,第4章求的是 3 × 3 3 \times 3 3×3射影变换矩阵,而本章求的是 3 × 4 3 \times 4 3×4相机矩阵。

文章目录

  • [7 Computation of the Camera Matrix P P P](#7 Computation of the Camera Matrix P P P)
    • [7.1 Basic equations](#7.1 Basic equations)
    • [7.2 Geometric error](#7.2 Geometric error)
      • [7.2.1 Geometric interpretation of algebraic error](#7.2.1 Geometric interpretation of algebraic error)
      • [7.2.2 Estimation of an affine camera](#7.2.2 Estimation of an affine camera)
    • [7.3 Restricted camera estimation](#7.3 Restricted camera estimation)
    • [7.4 Radial distortion](#7.4 Radial distortion)

7.1 Basic equations

问题描述 :我们假设有一些3D空间上的点 X i X_{i} Xi和2D图像上的点 x i x_{i} xi的对应关系已经给出。我们的目标是找到一个 3 × 4 3 \times 4 3×4的摄像机矩阵 P P P,满足对于所有 i i i都满足 x i = P X i x_{i}=PX_{i} xi=PXi。

我们可以发现,这个问题和在第4章里面说的求解2D射影变换矩阵 H H H非常像,唯一的区别是需要求解的矩阵维度变了而已。

最基本的方法就是方程 P X = x PX=x PX=x,然后变成 x × P X = 0 x \times PX = 0 x×PX=0 取该矩阵前两行,因为第三行是线性相关的。这样,我们可以写成 A p = 0 Ap=0 Ap=0,这 A A A就是一个 2 n × 12 2n \times 12 2n×12的矩阵。我们要求解摄像机矩阵,其实也就是要求解这个等式里面的 p p p。

最小解 因为 P P P是 3 × 4 = 12 3 \times 4 = 12 3×4=12个元素,那么就有11个自由度,理论上我们需要5.5对对应点就行,0.5对对应点就是知道x或者y坐标就可以了。

超定的情况 如果我们有多于6对点,那我们就求 m i n ∣ ∣ A p ∣ ∣ = 0 min||Ap||=0 min∣∣Ap∣∣=0,并且让他满足约束 ∣ ∣ p ∣ ∣ = 1 ||p||=1 ∣∣p∣∣=1, ∣ ∣ p ^ 3 ∣ ∣ ||\hat{p}^3|| ∣∣p^3∣∣=1, p ^ 3 \hat{p}^3 p^3就是p最后一行的前三个元素。

退化的情况 有两种情况可以使我们不能唯一确定 p p p:

  1. 相机和点都在一个扭曲的立方体上
  2. 相机和点都在平面上,且该平面一直线通过相机的中心

对于这样的配置,不能从点的图像中唯一地获得相机。 相反,它可以分别沿着扭曲的立方体或直线任意移动。 如果数据接近退化的情况,则获得的 P P P估计值很差。 例如,如果相机距离场景较远,例如鸟瞰图,则这种情况接近平面退化。

点的归一化 我们需要把所有点到直线的平均距离归一化到 3 \sqrt{3} 3 。

从线对应来计算 P P P 如果我们能找到一对对应线,那么我们就有方程 l T P X j = 0 l^TPX_j=0 lTPXj=0其中 j = 0 , 1 j=0,1 j=0,1, X X X在 l l l上。

7.2 Geometric error

回忆我们在第4章提到的几何损失函数,我们可以把它用在这里:
min ⁡ P ∑ i d ( x , P X ) 2 \min_P \sum_{i} d(x,PX)^2 Pmini∑d(x,PX)2


世界坐标系里的误差 我们考虑世界坐标系,也就是标定板上的误差。因为 P X PX PX不可能完全等于 x x x。反过来, x x x对应的世界坐标系里的点,也不会完全是 X X X,那么我们就假设 x x x对应的世界坐标系里的点是 X ^ \hat{X} X^,然后我们同时考虑世界坐标系的误差,和图像上的误差

∑ i = 1 n d M a h ( x i , P X i ^ ) 2 + d M a h ( X i , X i ^ ) 2 \sum_{i=1}^{n} d_{Mah}(x_{i}, P \hat{X_{i}})^2 + d_{Mah}(X_{i}, \hat{X_{i}})^2 i=1∑ndMah(xi,PXi^)2+dMah(Xi,Xi^)2

也就是说在图像上 x i x_{i} xi要靠近 P X i ^ P \hat{X_{i}} PXi^,在世界坐标系里 X i X_{i} Xi也要靠近 P X i ^ P \hat{X_{i}} PXi^。

7.2.1 Geometric interpretation of algebraic error

代数误差的几何解释:代数误差找一个点 X ′ X' X′尽可能的接近 X X X。

7.2.2 Estimation of an affine camera

上述所有方法都可以直接用在仿射摄像机上。

7.3 Restricted camera estimation

通常我们会对 P P P矩阵做出一些限制:

  1. 偏斜系数 s s s是0
  2. 像素是正方形,即 a x = a y a_{x}=a_{y} ax=ay
  3. 主点 ( x 0 , y 0 ) (x_{0},y_{0}) (x0,y0)已知
  4. K K K已知

这几点假设不是同时成立的。比如我们可以只用1和2,那么 P P P矩阵就只剩下3+6=9个系数了。

迭代方法的初始化 如果我们求几何损失函数,要用迭代的方法。那么迭代的初值从哪里来? 可以用DLT先解出一个值作为初始值。

7.4 Radial distortion

相机畸变主要是径向畸变,所谓径向就是圆的直径的方向。该畸变会使正方形变得接近于一个圆,所以叫径向畸变。

校正的思想很简单。所谓畸变,就是给像素坐标 ( x , y ) (x,y) (x,y)乘上一个函数 L ( r ) L(r) L(r),我们只需要用泰勒展开去近似这个函数就好了,剩下的工作就是确定泰勒展开的系数。这个展开的系数作为内参,把它们一起标定出来就可以了。

相关推荐
摸鱼仙人~几秒前
TensorFlow/Keras实现知识蒸馏案例
人工智能·tensorflow·keras
浊酒南街5 分钟前
TensorFlow之微分求导
人工智能·python·tensorflow
羽凌寒10 分钟前
曝光融合(Exposure Fusion)
图像处理·人工智能·计算机视觉
lucky_lyovo18 分钟前
机器学习-特征工程
人工智能·机器学习
alpszero23 分钟前
YOLO11解决方案之对象裁剪探索
人工智能·python·计算机视觉·yolo11
Matlab仿真实验室1 小时前
基于Matlab实现图像透明叠加程序
人工智能·计算机视觉·matlab
草莓熊Lotso1 小时前
【C语言字符函数和字符串函数(一)】--字符分类函数,字符转换函数,strlen,strcpy,strcat函数的使用和模拟实现
c语言·开发语言·经验分享·笔记·其他
蹦蹦跳跳真可爱5891 小时前
Python----神经网络(基于DNN的风电功率预测)
人工智能·pytorch·python·深度学习·神经网络·dnn
Jackson@ML1 小时前
一分钟了解机器学习
人工智能·机器学习
四万二千1 小时前
5月16日复盘-目标检测开端
人工智能·目标检测·计算机视觉