Robotics - Sensing - pinhole model
Pinhole model 得到的不是 general projective camera,而是具有有限相机中心的、带结构的 finite
> camera model。
另外,“与真实相机大相径庭”稍微说重了。物理结构确实不同,但在几何成像关系上,很多普通相机经过
标定和畸变校正后,可以很好地近似成针孔模型。
建议把笔记改成下面这样。
———
## Pinhole Camera Model
Pinhole camera model 是一个理想化的中心投影模型。它不直接描述镜片、光圈、景深、衍射、模糊、镜
头畸变、rolling shutter 和像素采样等物理过程,而只描述:
> 一个三维空间点如何通过单一投影中心映射到二维图像。
许多普通物理相机在一定条件下,可以近似建模为:
[
\text{Pinhole projection}+\text{lens distortion}
]
所以这里最好用“近似建模”,而不是“完全等效”。
### 学习 Pinhole model 前需要区分
四套坐标:
1. World coordinate:世界坐标
2. Camera coordinate:相机坐标
3. Normalized image coordinate:归一化图像坐标
4. Pixel coordinate:像素坐标
以及这些几何对象:
- camera centre:相机中心
- image plane:像平面
- focal length:焦距
- principal axis:主轴,是一条三维直线
- principal point:主轴与像平面的交点
- homogeneous coordinates:齐次坐标
整个成像过程可以拆成:
[
\mathbf X_w
\xrightarrow{T_{cw}\in SE(3)}
\mathbf X_c
\xrightarrow{\text{perspective division}}
\mathbf x_n
\xrightarrow{K}
\mathbf x
]
即:
[
\mathbf X_c=R\mathbf X_w+\mathbf t
]
[
x_n=\frac{X_c}{Z_c},
\qquad
y_n=\frac{Y_c}{Z_c}
]
[
\mathbf x\sim K[R\mid t]\mathbf X_w
]
定义:
[
P=K[R\mid t]
]
因此:
[
\boxed{\mathbf x\sim P\mathbf X_w}
]
但这里的 (P) 首先是一个 finite pinhole/projective camera matrix,而不是任意的 general
projective camera。
两者的层级是:
[
\text{basic pinhole}
\subset
\text{finite projective camera}
\subset
\text{general projective camera}
]
- 针孔/有限相机:
[
P=[M\mid p_4],\qquad \det(M)\neq0
]
相机中心是有限点。
- 一般射影相机:
[
P\in\mathbb R^{3\times4},
\qquad \operatorname{rank}(P)=3
]
它只要求秩为 3,允许 (M) 奇异,因此还包括相机中心位于无穷远处的模型。
你引用的 HediVision 页面 (https://hedivision.github.io/Pinhole.html) 本身也有几个小问题:
- (\mathbf t) 是平移向量,不是“translation matrix”。
- (\mathbf t) 不直接等于相机位置;相机中心为:
[
\mathbf C=-R^T\mathbf t
]
- 页面说 9 个自由度,只在 (K) 只有 (f,p_x,p_y) 三个参数时成立。
- 完整 finite projective camera 通常是:
[
5\text{ 个内参}+6\text{ 个外参}=11\text{ DoF}
]
所以最后一句最好改成:
> Pinhole model 最终得到结构化的有限相机矩阵
> [
> P=K[R\mid t]
> ]
> 将其约束进一步放松,才得到任意秩为 3 的 general projective camera matrix。