透视, 内参外参

小孔成像是最常见最通用的视觉形式, 也叫 “透视”.

外参: 世界坐标系与相机坐标系之间的坐标转换, 表示相机在世界的位置和朝向, 刚体运动里面也叫 6-DoF, 位置 xyz 三个自由度, 旋转三个自由度.
内参: 相机坐标系 (对于 pinhole 就是 normalized plane) 与像素坐标系之间的坐标转换, 表示相机内部的焦距等信息.

下面展示了一般相机的内参形式以及它如何将相机坐标系下的点投影到像素平面上.



外参


透镜

上面用的 “小孔成像” 是最常见最通用的视觉形式, 也叫 “透视”.
这种成像方式最简洁, 符合直觉, 物体是什么形状就映射成什么形状.
有很多良好的性质: 线共性, 坐标变换简单高效, 保留良好的几何关系.

但这种成像方式的缺点是进入小孔的光线太少, 图像太暗, 需要的曝光时间长.
所以相机系统普遍使用镜头 + 透镜的方式.

大镜头而非小孔是为了收集更多的光线, 但是使用大镜头时, 外部同一点朝不同方向打出的光线都能进入到镜头中, 视野会模糊无法成像, 所以需要设计透镜系统.
比如最简单的凸透镜, 它能达到汇聚光线的作用.
外界同一点向不同方向打出光线, 这些光线会打到镜头的不同位置, 透镜使它们聚焦于一点上.

使用镜头不仅能收集更多光线, 也能设计不同的透镜使用方式来收集光线达到广角 / 长焦 / 变焦等效果.
比如下面的鱼眼镜头设计:

Chief ray, Ray map, central camera

相机也是一种传感器, 它需要描述测量值和真实值之间的对应关系.
测量值就是像素, 真实值就是它来自空间中的哪一点.
ray / ray map 就是用来描述它们关系的数据.

Ray 用来描述图像上的每个像素来自空间中的哪条光线.
它是一般意义上 3D 空间中的射线.
不同像素的 ray 起始点, 方向可能都不同.


但是外界一个点向不同方向发出的很多光线都进入了相机镜头, 用哪条 ray?
一般约定用 chief ray 来表示.
外界每个点都有一束光射到镜头上, 其中透镜折射后经过限光孔中心的那一条光线称作 chief ray.

最终图像像素和 ray 一一对应, 称作 ray map.

central camera

如果 ray map 上的所有光线在 3D 空间中能相交于一点 (或近似交于一点), 这个相机可以称作 central camera.
这样的相机具有比较良好的性质, 在处理坐标时可以采用 pinhole 相机的一些处理方法, 更加简便.

相机是否是 central 的取决于相机本身的结构设计, 包括透镜使用, 限光孔位置等. 大多数相机都是 central 或是近似 central 的.

如果不相交, 称作 non-central camera.

ray 的表示方法

常见的有两种:

  • origin + direction. 3 + 3 = 6 维.
  • Plücker 表示法. 方向 + 直线对原点的矩. 也是 6 维.

origin 表示 ray 的起点, direction 表示 ray 的方向.
表示不唯一, origin 的确定方式需要约定; direction 一般要归一化.

如果是 central camera, origin 可以省略, 因为所有光线的起点都相同 (即所有 ray 相交的那一点).

畸变

使用这些透镜系统会导致 “畸变” 的产生, 也就是投影得到的图不再满足小孔成像的良好性质.
比如上面的鱼眼镜头, 入射角度会被扭曲.

  • 对于 central camera, 可以把畸变描述成小孔成像和真实成像之间的变换.
    可以给 central camera 虚拟出一个 “小孔” 和对应的平面, 称作 normalized plane.

    外界光线经由这个 “小孔” 先在 normalized plane 上成像, 然后经过一个畸变变换映射到 distortion plane (经过畸变的图像平面) 上去, 最后通过内参映射到真实的感光平面 (像素平面).

    常见的畸变模型把畸变的变化量写成 / 的多项式函数. 然后用在相机标定的时候拟合多项式参数.
    作为真实物理几何畸变的近似估计.

不同的相机有不同的透镜组合, 除此之外还有装配误差, 后期图像处理等等, 会产生不同的畸变类型.
将畸变的图像处理成没有畸变的形式是一个问题.

实际使用过程中如何得到相机拍摄的每张照片的畸变参数的流程:

镜头设计
  ↓ ray tracing 得到理论成像映射
真实装配
  ↓ 产生设备级偏差
拍标定板 / 工厂标定
  ↓ 拟合或修正相机模型参数
实际使用
  ↓ 根据当前模式查对应 calibration

  • 对于 non-central camera, 没办法用小孔 + normalized plane + 平面变换的方式描述畸变.

所以这时一般不把畸变描述成 normalized plane 到 distorted plane 的映射.
而是直接建模
pixel ↔ 3D ray / 3D line
之间的关系.

这时标定参数等等会更复杂.

pinhole 的 ray map 特殊情况

如果相机是 central camera 且没有畸变, 可以完全看成是 pinhole 相机.
这时 ray map 可以完全由相机的内外参确定.

但一般都会有轻微畸变, 也不一定是严格 central, 所以一般相机的 ray map 的信息含量比单纯内外参丰富很多.


对于 pinhole camera,像素在 normalized plane 上均匀采样,
但映射到单位球上的方向分布不是均匀的。

对于 central 但有畸变的 camera,像素不是在 normalized plane 上均匀采样的
pixel → ray direction 的映射不再是 pinhole 的 x=tanθ,
所以单位球上的方向分布和 pinhole 不同。

Tip

相机本质是 3D 空间点到像素的映射 / 3D 到 2D 的映射.
光线是媒介, 约定用 chief ray 组成 ray map.
好的相机设计应该尽量使 chief ray 交于一点, 满足 central 性质.

Question

相机用来捕捉这个 3D 到 2D 的映射, 结果是图像.
那么用 diffusion 生成这个图像的本质是什么?


真实光线 / real-world ray:  
真实 3D 空间里,从相机中心指向某个方向的一条射线  
  
相机光线 / camera ray:  
相机模型内部的射线坐标,通常表示为它和 normalized image plane 的交点



这个 “将像素映射回真实世界的射线” 就是 ray map.

Note

参考

https://www.bilibili.com/video/BV1g99EBqE3H?spm_id_from=333.788.videopod.episodes&vd_source=7eb7021c96f6a4b59a440fd3ed306e73&p=5
https://zeal-up.github.io/2023/06/05/cv/camera-model/
https://www.youtube.com/watch?v=7LX-19v_9ns&list=PL2zRqk16wsdr9X5rgF-d0pkzPdkHZ4KiT
https://www.tangramvision.com/blog/camera-modeling-focal-length-collinearity