1. 成像原理
在学习<视觉slam14讲>中的相机模型时,总觉得和自己在初中学的光学成像有点出入,只知道计算机视觉中普遍使用的是小孔成像模型,但是至于实际相机明明用的透镜成像,之前一直没搞明白这两者之间的区别和联系.
直到最近的项目涉及变焦和对焦的相机时才重新整理了两者的关系.
1.1 小孔成像
我们在初中物理中就做过实验,蜡烛的光线通过一个小孔后即可在另一侧形成一个翻转的像,这就是小孔成像原理.
既然用一个小孔就可以完成成像,为什么现在相机的镜头做得如此复杂?
引用博客[4]中的gif可以很直观的发现小孔成像存在的问题
由上图可知,小孔的孔径越大,单点光源通过孔的线束越发散,随着孔径的增大,成像的效果就越差,物像越模糊.所以从理论上说孔径越小,透过光心的线束越少,但随之而来的是光线不足导致的画面亮度不足.因此小孔成像无法解决这两者的矛盾.博客[3]由答主用单反实际验证了小孔成像的效果.
小孔成像的特点:没有焦距的概念,成像平面放在任何位置都能成像(在物体的另一侧),成像平面的距离只会影响物像的大小,不会影响成像质量
1.2 透镜成像
我们知道凸透镜可以对光线起到聚合的作用,既然小孔成像在大孔径下存在发散的现象,那么是否可以在孔后添加一个凸透镜以使光线聚焦?
由上图可见,在孔的后方添加凸透镜的确可以解决光线发散的问题.而凸透镜的成像原理我们由初中物理可知
上图中:
- f:焦距(透镜的固有属性)
- u:物距(被摄物与透镜中心O的距离)
- v:像距(聚焦点与透镜中心O的距离)
聚焦遵循以下关系:
1
f
=
1
u
+
1
v
\frac{1}{f} = \frac{1}{u} + \frac{1}{v}
f1=u1+v1
从上式我们可以知道,若成像平面与透镜中心距离不变(v不变),使用相同透镜时,不同物距的被摄物不能被聚焦到成像平面上,这就产生了模糊(失焦),也就是摄影学上所说的"景深"产生的原因.
透镜成像的特点:
- 有焦距的概念:焦距是透镜的固有属性,反映透镜的折射率,实际上我们日常见到的相机镜头,一般是由多组透镜组成,这是因为如果要达到很高的折射率,需要很厚的透镜,所以一般做成多级;
- 有景深的概念:需要通过对焦使得指定的被摄物能够清晰成像;
另外补充一点:随着透镜的尺寸缩小,其成像效果也趋于小孔成像,所以这也解释了为什么摄影学当中的为什么光圈越小,景深越小,光圈越大,景深越大.
2. 针孔模型
针孔模型是计算机视觉几何的基本数学模型(相机模型),它建立了空间物体到像素平面的成像关系.
P u v = [ α f 0 c x 0 β f c y 0 0 1 ] 1 Z P c \boldsymbol{P}_{uv}= \begin{bmatrix} \alpha f & 0 & cx \\ 0 & \beta f & cy \\ 0 & 0 & 1 \end{bmatrix} \frac{1}{Z} \boldsymbol{P}_{c} Puv= αf000βf0cxcy1 Z1Pc
2.1 缩放系数
上式中
α
\alpha
α 和
β
\beta
β 在<视觉SLAM14讲>的解析是像素坐标在u/v轴上的缩放系数,其实更加直观的理解是(以u为例):
u
=
α
f
X
Z
=
1
d
x
f
X
Z
u = \alpha f\frac{X}{Z} = \frac{1}{dx} f \frac{X}{Z}
u=αfZX=dx1fZX
在成像平面上,1个感光元件对应的实际长度
d
x
dx
dx,而1个感光元件对应最终图片上的1个像素点,所以它的几何意义是实现了成像平面上的空间位置到像素坐标系下的转换,因此量纲为
p
i
x
e
l
/
m
pixel/m
pixel/m.
2.2 焦距
在刚开始接触针孔模型时有一些疑虑:
- Q1:从针孔模型的示意图上看它不就是个小孔成像的模型吗?现实中摄像机都是使用透镜成像,为什么还能使用针孔模型?
- Q2:上面说过小孔成像是没有 焦距 的概念,为什么它的内参中又有焦距?
A1:
事实上,针孔模型是一个通用相机的数学模型,回看上面的透镜成像原理,透镜成像中的光路仍然满足过光心直线通过的关系,与小孔成像的一致的,不同的只是还需要考虑成像平面的位置是否使焦点聚焦.我们在研究计算视觉的前提必然是被摄物清晰,因此加入被摄物都能成功聚焦的假设以后,真实相机也等效成这种针孔模型.
A2:
虽然透镜成像在假设成功聚焦的前提下能够等效成针孔模型,但是其针孔模型的焦距f其实对应着透镜成像中的像距v(可参考博客[1]])
3. 变焦和对焦
经过以上的理论分析,再回到实际应用中.
3.1 变焦
所谓变焦,就是通过移动镜头模组的透镜位置改变其焦距f(再次强调这个不是内参的焦距!),改变焦距最直接影响就是画面呈现缩放的变化
- 焦距越小,可视范围越大,看得越近,对应广角镜头;
- 焦距越大,可视范围越小,看得越远,对应长焦镜头.
3.2 对焦
上面提到,透镜成像不可避免产生的景深,因此在变焦后一般还需要根据被摄物进行对焦的处理,当然现在的数码相机和手机大部分都是自动对焦,所以很容易忽略这一过程.
对焦改变的是像距v,所以以针孔模型分析光心和成像平面的距离同样是发生了改变.
3.3 小结
以透镜模型分析:
- 变焦改变焦距f,间接也改变像距v
- 对焦改变像距v
即相机发生变焦或对焦任意操作,其等效的数学模型(针孔模型)中的内参都会发生变化.博客[2]就有人验证了对焦后相片的FOV发生变化.
那么如何对变焦相机进行标定?文献[5]中提到有:
1)事先进行变焦的离线标定,然后将相机内参、畸变系数等进行插值或拟合,将标定参数表示成变焦相机缩放和对焦的多项式组合的形式,这种方法测量精度较高,但标定过程比较耗时;2)利用变焦前后图像对应点存在的单应关系,探究标定参数与成像点的内在联系,然后建立全局优化模型,求解出标定参数最优解,这种方法精度低,容易受图像噪声影响,参数求解复杂
参考文献
- [1] 针孔摄像机&透镜
- [2] 对焦会影响相机内参数吗?
- [3] 单反实测小孔成像效果
- [4] 凸透镜成像和小孔成像的原理分别是什么?
- [5] 面向机器人位姿测量的大视场变焦测量方法_姜涛