文章目录
- 一、回顾线代
- 1.1 线性方程组的解
- 1.2 齐次线性方程组的解
- 二、透镜摄像机的标定
- 2.1 标定过程
- 2.2 提取摄像机参数
- 2.3 参数总结
- 三、径向畸变的摄像机标定
- 3.1 建模
- 3.2 求解
- 四、变换
- 4.1 2D平面上的欧式变换
- 4.2 2D平面上的相似变换和仿射变换
- 4.3 2D平面上的透射变换
- 4.4 3D平面上的欧式变换
- 4.5 3D平面上的仿射变换
- 4.5 3D平面上的透射变换
一、回顾线代
1.1 线性方程组的解
对于线性方程组 A x = y Ax=y Ax=y,当矩阵 A A A 列满秩情况时:(1) 行数(方程数)小于未知数个数,欠定方程组,多解。(2) 行数(方程数)等于未知数个数,唯一解。(3) 行数(方程数)大于未知数个数,超定方程组,无解。
1.2 齐次线性方程组的解
对于线性方程组 A x = 0 Ax=0 Ax=0,当矩阵 A A A 列满秩情况时:(1) 行数(方程数)小于未知数个数,欠定方程组,多解。(2) 行数(方程数)等于未知数个数,只有零解。(3) 行数(方程数)大于未知数个数,超定方程组,除零解外无解。
二、透镜摄像机的标定
2.1 标定过程
1. 摄像机标定,即求解摄像机的内、外参数矩阵。摄像机的内、外参数矩阵描述了三维世界到二维像素的映射关系。
2. 首先对于摄像机标定问题,约定像素坐标平面的点用 p p p 表示(不再用 P ′ P' P′ 表示),世界坐标系的点用 P P P 表示(不再用 P w P_w Pw 表示)。
3. 当我们已知多个位置的对应关系时,那我们的目标就是根据这些点对应关系求出摄像机的内、外参数。
4. 投影矩阵 M M M 是 3 × 4 3×4 3×4 的矩阵,我们写成如下的形式,则 m 1 , m 2 , m 3 m_1,m_2,m_3 m1,m2,m3 都是 1 × 4 1×4 1×4 的矩阵。
那么像素坐标系的一个点 p i p_i pi 就可以定义为:
4. 下面公式是将任意一个像素坐标系上的点,通过等式变换得到一个齐次线性方程,而多个点对又可以构成齐次线性方程组。
摄像机投影矩阵有11个自由度(未知量)。由于每一个二维点在像素坐标系下为两个值,那么对于11个未知量来说最少需要12个方程来进行求解(由于像素坐标系下点的两个横纵坐标成对出现),那么就需要六对点来对应,但实际应用中一定是使用多于六对点来对应,通过最小二乘法消掉一部分错误的噪声点对,可以获得更好的鲁棒性效果。
大多数情况下,生成的齐次线性方程数是远大于11的,方程数大于未知参数,齐次线性方程组为一个超定方程组,所以可以用齐次线性方程组的最小二乘法求解方法来求解同样的问题。
2.2 提取摄像机参数
1. 将下面的投影矩阵展开,左一列为 3 × 3 3×3 3×3 的矩阵,右一列为 3 × 1 3×1 3×1 的向量,合起来投影矩阵为一个 3 × 4 3×4 3×4 的矩阵,由于通过齐次线性方程组的最小二乘法求解内外参数,从而导致真正的投影矩阵和求的投影矩阵之间存在一个比例系数 ρ ρ ρ 的关系,所以,括号里的为真实的投影矩阵(未知), M M M 为求解得到的投影矩阵。
2. 我们把求解得到的投影矩阵 M M M 写成 [ A , b ] [A,b] [A,b], A A A 就是前三列, b b b 是最后一列,所以 ρ A = K R ρA=KR ρA=KR。
注: A A A 和 b b b 都是已知的。
3. 旋转矩阵中每一行的模都是1,所以可以得到以下的结论。利用 ρ a 1 T ⋅ ρ a 3 T ρ{a_1}^T · ρ{a_3}^T ρa1T⋅ρa3T 和 ρ a 2 T ⋅ ρ a 3 T ρ{a_2}^T · ρ{a_3}^T ρa2T⋅ρa3T 可以求出 u 0 u_0 u0 和 v 0 v_0 v0。注:点乘。
4. 利用 ρ a 1 T × ρ a 3 T ρ{a_1}^T × ρ{a_3}^T ρa1T×ρa3T 和 ρ a 2 T × ρ a 3 T ρ{a_2}^T × ρ{a_3}^T ρa2T×ρa3T 可以求出下面图中的式子。注:叉乘。
5. 由上面的式子可以得到 α α α 和 β β β 的表达式。再将 ρ 2 ( a 1 × a 3 ) ρ^2(a_1 × a_3) ρ2(a1×a3) 和 ρ 2 ( a 2 × a 3 ) ρ^2(a_2 × a_3) ρ2(a2×a3) 进行点乘,然后带入 α α α 和 β β β 的表达式可以得到关于 θ θ θ 的表达式。
(1) 此时我们也可以令 θ = 90 ° θ=90° θ=90°, c o s θ cosθ cosθ 为0,满足零倾斜透视情况,那么分子 ( a 1 × a 3 ) ⋅ ( a 2 × a 3 ) (a_1 × a_3) · (a_2 × a_3) (a1×a3)⋅(a2×a3) 为0,满足Faugeras定理中的第二条零倾斜透视矩阵性质。
(2) 我们令 α = β α=β α=β 那么一定满足 α α α 的平方等于 β β β 的平方,即 ( a 1 × a 3 ) ⋅ ( a 1 × a 3 ) = ( a 2 × a 3 ) ⋅ ( a 2 × a 3 ) (a_1 × a_3) · (a_1 × a_3)= (a_2 × a_3) · (a_2 × a_3) (a1×a3)⋅(a1×a3)=(a2×a3)⋅(a2×a3),且令 θ = 90 ° θ=90° θ=90° 满足零倾斜透视情况,此时满足Faugeras定理中的第三条零倾斜且宽高比为1的透视矩阵性质。
6. r i r_i ri 是个方向向量,不用管前面的系数。所以利用 ρ a 2 T × ρ a 3 T ρ{a_2}^T × ρ{a_3}^T ρa2T×ρa3T 可以求出 r 1 r_1 r1, r 3 r_3 r3 可以直接得出,最后 r 2 = r 1 × r 3 r_2=r_1 × r_3 r2=r1×r3。
7. 利用公式 ρ b = K T ρb=KT ρb=KT 可以求出 T T T。
上面求解推导过程中有几个注意点:
(1) 列向量模的求法:
(2) 向量的点乘(内积)
(3) 向量的叉乘(外积)
两个向量叉乘的运算结果是一个向量而不是一个标量。并且两个向量叉乘得到的向量与这两个向量组成的坐标平面垂直。
2.3 参数总结
1. 各个参数的最终公式如下所示:
2. 我们要注意取点时不要取同一平面的点。
三、径向畸变的摄像机标定
3.1 建模
1. 径向畸变会导致图像的放大率随着距离光轴距离的增加而减小,换句话说,距离摄像机中心近的影响小,距离摄像机中心远的畸变影响大。
2. 定义一个 λ λ λ,满足和摄像机中心 d d d 之间的多项式关系,对原来像素坐标系和世界坐标系的映射关系间添加一个 S λ S_λ Sλ 矩阵。下图中 d 2 d^2 d2 表示点距离摄像机坐标系中心的距离。
3. 对于径向畸变问题不再是一个齐次线性方程组的问题,而是一个非线性的问题,由于 λ λ λ 和 u u u, v v v 之间存在了映射关系,导致 λ λ λ 不再是一个简单的参数,也无法再转换为齐次方程组的 A x = 0 Ax=0 Ax=0 的关系,只能建立成 f ( x ) = 0 f(x)=0 f(x)=0 的非线性关系。
3.2 求解
四、变换
4.1 2D平面上的欧式变换
1. 欧式变换,也称为欧几里得变换或刚性变换,是一种较为基本的变换方式。在欧式变换中,同一个向量在各个坐标系下的长度和角度都不会发生变化,它只涉及物体的旋转和平移运动,不改变物体的形状和大小。这种变换方式在视觉SLAM(同步定位与地图构建)中具有重要的应用,用于描述相机等刚体的运动定位和构图过程。
2. 欧式变换具有长度、夹角和体积不变性,即在变换过程中,物体的长度、各部分的夹角以及体积都会保持不变。
3. 等距变换包括欧式变换( σ = 1 σ=1 σ=1)和镜像变换( σ = − 1 σ=-1 σ=−1)。
4.2 2D平面上的相似变换和仿射变换
1. 相似变换就在欧式变换基础上添加了一个比例因子 s s s,使得大小会有所变化,但形状不变,保持相似性。
2. 仿射变换中形状和大小已经完全变化,但是不同形状之间平行性,面积比值,平行线段长度比值仍然不变。
4.3 2D平面上的透射变换
透射变换不保持平行性,只能保持原来是个点现在还是个点,原来是个线现在还是个线,原来在一个平面现在还在一个平面。
4.4 3D平面上的欧式变换
注:下图中的 s s s 为缩放因子,欧式变换 s = 1 s=1 s=1,相似变换 s s s 就不定了。