三维计算机视觉相机标定笔记
2022-8-26
| 2024-2-23
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password

1. 摄像机几何

1.1. 针孔模型&透镜

1.1.1. 针孔相机

  • 早期相机: 小孔成像(添加屏障→减少模糊)
    • notion image
    • 需要研究的是虚拟像平面
      • 虚拟像平面到针孔的距离等于焦距
      • 虚拟像平面的成像大小等于像平面的成像大小, 方向与原物体相同, 研究方便
    • 缩小光圈可以使成像更清晰, 但是通过的光更少(成像更暗)
      • notion image
    • 为了使成像更亮, 可以增加一个透镜
      • notion image
  • 小孔成像系统建立数学模型
    • notion image
  • 摄像机坐标系下, 三维点到平面的关系

    1.1.2. 透镜

    • 这里的f是透镜到焦点的距离
      • notion image
    • 近轴折射模型
      • notion image
      • 根据折射定律:
        • 为透镜球面半在, 为透镜折射系数
      • 近轴折射模型依旧满足小孔成像的数学模型
      • 透镜缺点
        • 失焦
          • notion image
        • 畸变
          • notion image

    1.2. 摄像机几何

    1.2.1. 将像平面转换像素平面的过程

    • 真实情况下, 成像获得的是离散的像素, 而不是连续的像平面图形
      • → 需要修改小孔成像模型
        1. 偏置: 需要偏移坐标点的位置(像平面中的原点转换到像素图坐标上时位置是)
          1. notion image
        1. 单位转换: 将单位 转换为像素, 转换常数 (方向) 和 (方向) 以相机成像元器件参数为准.
            • 单位:
            • 非方形像素: :
    • 合并一下相机成像元器件的参数
      • 存在一个问题: (三维空间坐标系的点坐标)(像素平面坐标系的点坐标)的变换不是线性变换, 因为的改变会使也改变(如果将理解为直线的斜率的话)

      1.2.2. 将像平面转换像素平面的过程变为线性变换(齐次坐标系)

      • 欧式坐标变为齐次坐标: 将原本是n维的坐标向量用n+1维表示(一一对应)
        • notion image
      • 齐次坐标还原欧式坐标: 将最后一维的值除以前面的每一维的值
        • 不一一对应, 下面这两个齐次坐标还原后相同
          • notion image
        • 欧式转齐次公式
          • notion image
            notion image

        1.2.3. 解决相机偏斜问题

        • 相机工艺问题造成偏斜, 角夹角
          • notion image
        • 带偏斜补正的转换公式
          • K有5个自由度(5个可变参数)
          • notion image

        1.2.4. 规范化相机

        • 规范化相机在现实世界不存在, 三维点坐标等于齐次坐标的前3维
          • 的欧式坐标为

          1.2.5. 世界坐标系与投影矩阵

          • 世界坐标系用于方便的描述三维物体的空间信息
            • notion image
              : 旋转矩阵 (3, 3); : 平移矩阵 (3, 1)
              : 转换参数 (4, 4)
              最终获得: 世界坐标系坐标 (4, 1)
          • 整理公式获得完整的相机模型
            • notion image
              : 像素平面, : 摄像机坐标下点的坐标, : 世界坐标系下点的位置.
          • 投影矩阵有11个自由度(内参5个, 外参 ( 3个), ( 3个))
          • 计算像素平面坐标
            • 定理 (Faugeras, 1993)
              • 的矩阵, 表示为矩阵 的行
                  1. M是透视投影矩阵的充分必要条件
                    1. (A是满秩矩阵)
                    2. 关于秩
                      • 秩的概念: 在线性代数中,一个矩阵A的列秩是A的线性独立的纵列的极大数目。类似地,行秩是A的线性无关的横行的极大数目。
                      • 计算秩的例子:
                        • 根据这个定理,我们得到利用初等变换求矩阵的秩的方法: 用初等行变换把矩阵变成行阶梯形矩阵, 行阶梯形矩阵中非零行的行数就是该矩阵的秩.
                        • eg: 求矩阵 的秩.
                          • notion image
                            所以
                      • 满秩和失秩矩阵的秩最大为: mn中的较小者, 表示为 . 有尽可能大的秩的矩阵被称为有满秩; 否则矩阵是秩不足(或称为“欠秩”)的.
                  1. M是零倾斜透视投影矩阵的充分必要条件
                    1. ()
                    2. 关于矩阵乘法
                      • 叉乘的概念: , 则垂直于向量的平面
                      • 点乘的概念: 如果, 则垂直于
                  1. M是零倾斜且宽高比为1透视投影矩阵的充分必要条件

            1.2.6. 投影变换

            notion image

            1.3. 其他摄像机模型

            各种相机的作用
            notion image

            1.3.1. 弱透视投影相机

            • 的场景点全都认为在同一个平面(用于处理距离较远的点)
              • notion image
              • 放大率
              • 上: 原本的透视关系; 下: 弱透视投影相机的透视关系
                • 透视(世界坐标系下点是齐次坐标, 要转换为非齐次)
                  • : 1x4矩阵; : 4x1矩阵
                  • 投影矩阵
                    • : 3x3; : 3x3; : 3x1→: 3x4
                • 弱透视
                  • 都是(1, 4), 所以使用弱透视投影模型可以少4个参数, 于是可以加快计算

                1.3.2. 正交投影相机

                • 相机中心到像平面无限远的时候
                  • notion image

                1.4. 线性方程组的最小二乘解

                1.4.1. 线性方程组的最小二乘解

                • 线性方程组的解
                  • notion image
                • 当方程组无解 的时候, 需要找最小二乘解
                  • 线性方程组的最小二乘解
                    • notion image

                1.4.2. 齐次线性方程组求最小二乘解

                • 齐次线性方程组特点: y=0
                  • notion image
                  • 求解方法:
                      1. 矩阵 进行奇异值分解
                      1. 矩阵的最后一列 (最小奇异值对应的右奇异向量)

                1.4.3. 非线性方程组求最小二乘解

                notion image

                2. 相机标定

                2.1. 透镜相机标定问题

                2.1.1. 概念

                • 相机标定: 求解相机内外参数矩阵
                • 用途: 通过这些参数描述三维世界到二维像素的映射关系
                • 公式:
                  • notion image

                2.1.2. 求解相机内外参矩阵

                相机的内外参构成了投影矩阵. 而投影矩阵有11个未知量组成.
                • 1.3.1透视公式推导得出像素点公式
                  • 由于一个点可以获得两个方程, 所以做内参外参标定的时候有11个未知量, 需要至少6个点.
                • 当获取了超过6个点的像素坐标信息之后, 就可以应用超定齐次线性方程组(p>q → 方程组的数量大于线性方程的未知参数的数量)最小二乘解
                • 所有方程组合可得:
                  • 简化得
                    详细拆分, 由于最终矩阵相乘之后是一个实数, 实数转置等于本身, 所以可以加转置符号.
                    另外, 中的是三维坐标, 是二维坐标, 都是已知的, 所以 是线性变换.
                  • 这里有12列是因为: 的尺寸是1x4.
                  • 这里有12行是因为: 的尺寸是4x1.
                • 的最小二乘解, 最终要获得的11个未知参数都在矩阵 里面
                  • 表示限制条件
                  • 求解方法:
                      1. 矩阵 进行奇异值分解
                      1. 矩阵的最后一列 (最小奇异值对应的右奇异向量)
                  • 于是
                    • 结论: 矩阵最小奇异值的右奇异向量, 且
                    • 由于 的尺寸: 12x1, 变换成矩阵 (3x4), 就获得了相机的内外参矩阵.
                • 另外, 还需要求一个矩阵系数
                  • 先看矩阵投影公式
                    • 内参矩阵
                      • 外参矩阵
                        • 其中, 单位向量, 表示旋转角度, 其中两两点乘为0, 两两叉乘得到第三个向量. 因为这3个向量互相垂直.
                      • 合并获得的公式
                        • 为一个比例系数, 表示 与真实相机之间的关系.

                      2.1.3. 获得相机内参

                      • 可以将先分解
                        • 的前3个元素(旋转矩阵), 的最后一列(平移矩阵)
                      • 去掉
                        • 看第3行, , 两边都取模. 由于旋转向量模为1. 由于 是系数, 脱离模之后无法知道正负, 所以
                          • 由于旋转向量的原理, 各旋转向量互相垂直, 所以 ; ; . 由公式 的第1行点乘第3行可得
                            • 同理
                              • 由于这里的 都是已知的(因为 已知), 所以由公式 可以获得相机的内参 .

                              2.1.4. 获得相机内参

                              • 对于公式 使用叉乘
                              • 各旋转向量互相垂直, 所以 ; ;
                              • 两边取模, 旋转向量都模都为1
                                的模怎么求?
                                • 由向量模的公式
                                • 可以获得 的模
                                  • 公式 相互点乘可得
                                    • 公式 相互点乘可得

                                      2.1.5. 获得相机内参

                                      • 由公式 可得
                                        • 如果 , 那么
                                          • 由向量性质: 向量模的平方等于向量的平方.
                                            • 可得:

                                      2.1.6. 获得相机外参

                                      • 可以由公式 的第2行相除获得
                                        • 可以由公式 的第3行和 获得

                                            2.1.7. 获得相机外参

                                            • 还是先分解 矩阵
                                              • 这次去掉旋转矩阵
                                                • 两边同乘
                                                  • 由于 可以直接从 中获得; 是内参矩阵已知; 也已知. 平移矩阵就算出来了.

                                                  2.1.8. 总结

                                                  notion image

                                                  2.2. 径向畸变相机标定

                                                  径向畸变: 图像像素点以畸变中心为中心点, 沿着径向产生的位置偏差, 从而导致图像中所成的像发生形变.
                                                  notion image

                                                  2.2.1. 畸变相机模型

                                                  • 是畸变模型
                                                  • 是畸变因子
                                                  • 正号表示桶形畸变; 负号表示枕型畸变.
                                                  • 图像放大率随光轴距离的增加而减小
                                                    • notion image
                                                      建模径向特性

                                                  2.2.2. 求解失真系数

                                                  • 获得方程组, 但这不是线性方程组. 因为 包含了 , 随着坐标变化在变化.
                                                    • 增加采样点
                                                      • 最小二乘解
                                                        • 牛顿法列文伯格-马夸尔特法 (L-M方法)
                                                          • 从初始解开始迭代,若初始解与实际相距较远,可能会很慢
                                                          • 估计解可能是初始解的函数 (由于局部最小值)
                                                          • 牛顿法需要计算一阶导矩阵J (雅可比矩阵) ,二阶导矩阵 H (海塞矩阵)
                                                          • L-M算法不用计算H

                                                        2.2.3. 求解线性部分

                                                        • 由公式 可得
                                                          • 简化可得
                                                          • 就可以使用多个点通过奇异值分解(SVD)求得
                                                            • 之后再计算公式 就少了两个未知参数, 使用牛顿法列文伯格-马夸尔特法收敛会更快.
                                                             
                                                             
                                                          • 公开课
                                                          • 三维重建
                                                          • Optical Motion Capture
                                                          • 硬解码开发过程中遇到的一些c++和python混合编程问题PyTorch深度学习入门
                                                            • Giscus
                                                            目录