单目深度估计原理前置知识(学习ing)
1 计算机视觉基础 1.1 针孔相机模型 1.1.1相机模型
1.1.2相机模型中的四个坐标系
1.1.3四个坐标系之间的转换关系
(1)世界坐标系到相机坐标系 i 旋转矩阵
推导:旋转矩阵( )的推导及其应用 - - 博客园 ()
旋转矩阵( )是一种用于在二维或三维空间中进行旋转变换的线性变换矩阵。它可以表示为一个方阵,其中包含了描述旋转的参数。
在二维空间中,旋转矩阵可以表示为:
| cos(θ) -sin(θ) |
| sin(θ) cos(θ) |
其中,θ表示旋转角度。
在三维空间中,旋转矩阵可以表示为不同的形式,最常见的是绕x轴、y轴和z轴的旋转,分别表示为Rx(θ)、Ry(θ)和Rz(θ)。这些旋转矩阵可以通过以下方式构建:
绕x轴旋转的矩阵 Rx(θ):
| 1 0 0 |
| 0 cos(θ) -sin(θ) |
| 0 sin(θ) cos(θ) |
绕y轴旋转的矩阵 Ry(θ):
| cos(θ) 0 sin(θ) |
| 0 1 0 |
| -sin(θ) 0 cos(θ) |
绕z轴旋转的矩阵 Rz(θ):
| cos(θ) -sin(θ) 0 |
| sin(θ) cos(θ) 0 |
| 0 0 1 |
这些矩阵中,θ表示旋转角度。
要对一个向量或点进行旋转变换,可以将该向量或点表示为齐次坐标形式( ),并与旋转矩阵相乘。齐次坐标形式中,二维空间的点可以表示为(x, y, 1),三维空间的点可以表示为(x, y, z, 1)。通过矩阵乘法,可以得到旋转后的新坐标。
ii 平移矩阵
平移矩阵( )是一种用于在二维或三维空间中进行平移变换的线性变换矩阵。它可以表示为一个方阵,其中包含了描述平移的参数。
在二维空间中,平移矩阵可以表示为:
| 1 0 dx |
| 0 1 dy |
| 0 0 1 |
其中,dx和dy分别表示在x轴和y轴上的平移量。
在三维空间中,平移矩阵可以表示为:
| 1 0 0 dx |
| 0 1 0 dy |
| 0 0 1 dz |
| 0 0 0 1 |
其中,dx、dy和dz分别表示在x轴、y轴和z轴上的平移量。
要对一个向量或点进行平移变换,可以将该向量或点表示为齐次坐标形式( ),并与平移矩阵相乘。齐次坐标形式中,二维空间的点可以表示为(x, y, 1),三维空间的点可以表示为(x, y, z, 1)。通过矩阵乘法,可以得到平移后的新坐标。
iii 世界坐标系到相机坐标系
要将世界坐标系变换为相机坐标系,可以使用以下步骤:
1. 定义相机坐标系:确定相机坐标系的原点位置和坐标轴方向。通常,相机坐标系的原点位于相机的光学中心,坐标轴方向可以根据相机的朝向和约定进行定义。
2. 计算相机的变换矩阵:根据相机的旋转和平移信息,构建相机的变换矩阵C。这可以通过将旋转矩阵R和平移矩阵T进行组合得到。具体而言,可以使用一个4×4的齐次变换矩阵,将旋转矩阵R作为旋转部分,平移矩阵T作为平移部分,形成一个组合矩阵。
C = | R T |
| 0 1 |
其中,R是一个3×3的旋转矩阵,T是一个3×1的平移向量。
3. 进行坐标变换:对于一个世界坐标系中的点P,通过将其表示为齐次坐标(四维向量)形式,进行矩阵相乘来进行坐标变换。具体而言,可以将点P表示为一个4×1的齐次坐标向量,然后将其与相机变换矩阵C进行相乘。
P_c = C * P_w
其中,P_c是变换后的相机坐标系中的点,P_w是世界坐标系中的点。
通过这样的变换,可以将一个点从世界坐标系变换到相机坐标系。需要注意的是,相机坐标系的原点和坐标轴方向的定义应根据具体的应用需求和约定进行选择,并且在进行坐标变换时,需要使用齐次坐标表示点和变换矩阵。
(2)相机坐标系到图像坐标系
(3)图像坐标系到像素坐标系
1.1.4畸变
(1)径向畸变
径向畸变:径向畸变是由于镜头的物理特性而引起的,导致图像中心和边缘部分的物体形状变形。径向畸变可以分为两种类型:
- 桶形畸变( ):在桶形畸变中,图像中心的物体被压缩,导致物体呈现出凸起的形状,就像放在一个桶中一样。这种畸变通常在广角镜头中较为常见。
- 枕形畸变( ):在枕形畸变中,图像中心的物体被拉伸,导致物体呈现出凹陷的形状,就像放在一个枕头上一样。这种畸变通常在长焦镜头中较为常见。
径向畸变可以通过校正方法进行矫正,例如使用畸变模型和畸变参数对图像进行处理,以恢复物体的真实形状。
径向畸变可以用一个多项式函数来描述畸变前后的坐标变化,是因为径向畸变的特点是随着距离图像中心的距离增加而引起的形状变化。这种变化可以通过多项式函数来近似描述。
当光线通过相机镜头时,不同距离图像中心的光线路径长度可能不同,导致光线在成像平面上的位置发生畸变。径向畸变通常由镜头的物理特性引起,例如镜头元件的形状、折射率等。
为了校正径向畸变,可以使用畸变模型,其中最常用的是径向畸变模型。径向畸变模型假设畸变引起的坐标变化可以用一个多项式函数来近似描述。常见的径向畸变模型是畸变系数k1、k2、k3等的多项式函数。
一种常见的径向畸变模型是鲁棒径向畸变模型( Model),它使用下面的多项式函数来描述径向畸变的坐标变化:
= x * (1 + k1 * r^2 + k2 * r^4 + k3 * r^6 + ...)
= y * (1 + k1 * r^2 + k2 * r^4 + k3 * r^6 + ...)
其中,(x, y)是畸变前的坐标,(, )是校正后的坐标,r是点(x, y)到图像中心的距离,k1、k2、k3等是径向畸变系数。
通过使用多项式函数来近似描述径向畸变的坐标变化,可以对图像进行畸变校正,恢复物体的真实形状。然而,需要注意的是,多项式函数的阶数和畸变系数的准确性会影响畸变校正的精度。在实际应用中,通常会根据畸变程度和需求选择适当的畸变模型和参数。
(2)切向畸变
切向畸变:切向畸变是由于镜头组件之间的不完全对称性而引起的,导致图像中的物体在水平和垂直方向上出现拉伸或压缩的现象。切向畸变可以分为两种类型:
- 水平切向畸变:在水平切向畸变中,图像中的物体在水平方向上呈现出拉伸或压缩的形状。这种畸变通常是由于相机镜头安装时的不完全对称性引起的。
- 垂直切向畸变:在垂直切向畸变中,图像中的物体在垂直方向上呈现出拉伸或压缩的形状。这种畸变通常是由于相机镜头安装时的不完全对称性引起的。
切向畸变可以通过校正方法进行矫正,例如使用校正矩阵和畸变参数对图像进行处理,以消除物体的拉伸或压缩效应。
在摄影和计算机视觉领域中,径向畸变和切向畸变的校正是常见的任务,可以提高图像的几何精度和质量。
1.2对极几何
(1)本质矩阵
在极坐标几何中,本质矩阵( )用于描述两个相机之间的几何关系。本质矩阵可以通过对极几何的理论推导得到。
考虑两个相机,相机1和相机2,它们分别拍摄了一个三维点的投影。假设相机1的投影点为 P1 = [x1, y1, 1],相机2的投影点为 P2 = [x2, y2, 1]。这两个投影点满足以下关系:
P2ᵀ * E * P1 = 0
其中,E是本质矩阵,*表示矩阵乘法,ᵀ表示矩阵的转置。
推导过程如下:
首先,我们将相机1和相机2的投影点表示为齐次坐标形式:
P1 = [x1, y1, 1, 1]ᵀ
P2 = [x2, y2, 1, 1]ᵀ
根据齐次坐标的定义,我们可以写出以下等式:
P1ᵀ * P2 = 0
将投影点的齐次坐标形式代入等式中:
[x1, y1, 1, 1] * [x2, y2, 1, 1]ᵀ = 0
展开上述矩阵乘法:
x1x2 + y1y2 + 11 + 11 = 0
简化等式:
x1x2 + y1y2 + 2 = 0
由于等式中的常数项2对于后续的推导没有影响,我们可以将其移到另一边,得到:
x1x2 + y1y2 = -2
最后,我们可以用本质矩阵E来表示等式中的关系,得到:
[x2, y2, 1] * E * [x1, y1, 1]ᵀ = 0
其中,E的形式为:
E = | 0 -1 0 |
| 1 0 0 |
| 0 0 1 |
这就是本质矩阵的推导过程。本质矩阵在立体视觉中具有重要的作用,可以用于恢复相机之间的几何关系和三维点的位置。
(2)基本矩阵
在极坐标几何中,基本矩阵( )是用于描述两个相机之间的几何关系的重要概念。基本矩阵可以通过对极几何的理论推导得到。
考虑两个相机,相机1和相机2,它们分别拍摄了同一个三维点的投影。假设相机1的投影点为 P1 = [x1, y1, 1],相机2的投影点为 P2 = [x2, y2, 1]。这两个投影点满足以下关系:
P2ᵀ * F * P1 = 0
其中,F是基本矩阵,*表示矩阵乘法,ᵀ表示矩阵的转置。
推导过程如下:
1. 首先,我们将相机1和相机2的投影点表示为齐次坐标形式:
P1 = [x1, y1, 1]ᵀ
P2 = [x2, y2, 1]ᵀ
2. 根据齐次坐标的定义,我们可以写出以下等式:
P2ᵀ * P1 = 0
3. 将投影点的齐次坐标形式代入等式中:
[x2, y2, 1] * [x1, y1, 1]ᵀ = 0
4. 展开上述矩阵乘法:
x2*x1 + y2*y1 + 1*1 = 0
5. 简化等式:
x2*x1 + y2*y1 + 1 = 0
6. 由于等式中的常数项1对于后续的推导没有影响,我们可以将其移到另一边,得到:
x2*x1 + y2*y1 = -1
7. 最后,我们可以用基本矩阵F来表示等式中的关系,得到:
[x2, y2, 1] * F * [x1, y1, 1]ᵀ = 0
其中,F的形式为:
F = | f11 f12 f13 |
| f21 f22 f23 |
| f31 f32 f33 |
基本矩阵F是一个 3 × 3 的矩阵,其中的元素 fij(i、j = 1, 2, 3)表示了两个相机之间的几何关系。
这就是基本矩阵的推导过程。基本矩阵在立体视觉中具有重要的作用,可以用于恢复相机之间的几何关系、进行立体匹配和三维重构等任务。
(3)视差与深度关系
1.3图像重构原理 2 深度学习基础 2.1相关网络模型 2.2深度估计中的损失函数 2.3深度估计的评价指标