计算机视觉(相机标定)-1.1-针孔摄像机&透镜
学习前言
目前才接触机器视觉这个方向,想做一个车道线检测出来,不过看网上的代码和教程,发现大部分都需要用到相机这方面的视觉知识,所以学习一下。有什么不对的地方还请各位大帅B!大漂亮!多纠正哈哈哈
一、针孔摄像机
1、基本想法
如果我们想象一棵树,记录成图片,而我们手上只有一卷胶卷,那我们该怎么办呢?
最简单的方法就是我们将胶卷直接正对着这课树,让这一棵树所反射的光直接映射在胶卷上。这就是最初的摄像机。
但是这样的方法得出来的图像是非常模糊的,因为胶片上的点会接受到物体多个点上反射的光,这样我们是很难从胶片上得到清晰的图片,所以我们的针孔成像就这么被发现了ლ(´ڡ`ლ)。
我们在物体和胶片的中间放上一个带有针孔的隔板,这样能让物体的点与胶片上图片的点实现一一对应的关系,来减少胶片成像的模糊度,看到跟加清晰的图像。…(⊙_⊙;)…
这就是我们针孔摄像机的基本想法和原理。(๑•ᴗ•๑)
2、实现原理
根据我我们之前的原理我们就可以设计出一个简单的针孔摄像机了。(初中知识)
胶卷成像部分->像平面
虚拟像平面就是与像平面对称的位置
f(焦距)== 针孔与像平面之间的距离
o就是指针孔(我们相机里面的光圈说的就是这个)
这里我们注意一下,针孔摄像机成像是将一个三维的物体映射成了一个二维图像。ヽ(°◇° )ノ
3、针孔摄像机模型(重点)
我们根据下图来描述一下针孔摄像机模型。
针孔摄像机是将现实中的三维物体映射为一个二维图像,所以我们先在针孔(O点)建立一个三维的摄像机坐标系,在像平面处建立一个二维的像平面坐标系。
而针孔摄像机所做的事情就是将空间点P映射到像平面点P’。
下一步我们就是要弄清楚他们的映射关系,我们取上图坐标模型的O-J-K面。如下图:
如果
f
、
y
、
z
f、y、z
f、y、z已知,那么我们可以根据相似三角形法得出
y
′
y'
y′,那我们就能得到空间点
P
P
P与像平面点
P
′
P'
P′坐标的对应关系。
同理,我们就能得到像平面坐标系
x
′
,
y
′
x',y'
x′,y′与摄像机坐标系
x
,
y
,
z
x,y,z
x,y,z的对应关系。(3D到2D)
二、透镜
1.为什么需要透镜
如果没有使用到透镜,我们的针孔摄像机会出现一个问题。
对于光圈(针孔)的大小也会影响到我们成像的质量。随着光圈的大小的变化,对我们的成像的影响如下图一样:
我们可以看到光圈从2mm缩小到0.35mm,图像的清晰度也越来越清晰。这是因为光圈越大的话,胶片上的一个点就会对应着显示物体中的多个点的坐标。
现在我们知道将光圈调小,我们就能得到更加清晰的图像,但是随着光圈的调小,通过光圈映射到的光就越少,那么胶片就会变得更暗。
那我们的解决办法就是透镜!
这两张图我就不多介绍了,相信大家都看得懂吧~~ ー( ̄~ ̄)ξ
2.加入透镜后的模型
首先我们需要知道
f
f
f为透镜的焦距,而
f
f
f是根据透镜的折射定律来确定的,为了方便区分,我们把透镜中心(即光圈)到胶片的距离定义为
Z
′
Z'
Z′。很多在设计好这个系统后
Z
′
Z'
Z′就已经固定不变了。所以我们后面基本上就统一用
Z
′
Z'
Z′来进行分析了。
而我们观察图中蓝色和橘黄色的透镜折射线我们可以看出之前我们推出的摄像机坐标到像平面的对应公式一样能用。
3.加入透镜后的问题
1)失焦
在针孔相机模型中引入透镜,让我们的成像更加明亮了,但是加入透镜后的针孔摄像机还存在着一个问题:失焦!
因为
Z
′
Z'
Z′是固定的,那么可以清晰成像(聚焦)的距离也是固定的了。一旦我们的物体超过或者没达到这个距离,那我们就会失焦,即物体上的一个点被映射到了胶片上的多个点,这样我们就看不到清晰的像了。 这里我们就会引入一个概念——景深。外部的物体放置在摄像机的某一个范围内就能形成清晰的像,而物体在这个范围的左右,就会形成模糊的像。
这也就成就了我们现在的微距相片~ (❁´︶`❁)
2)图形畸变
径向畸变:图像像素点以畸变中心为中心点,沿着径向产生的位置偏差,从而导致图像中所成的像发生形变。
畸变图像分为两种:;枕行畸变、桶行畸变。
具体原理我就不介绍了,如果感兴趣的同学可以看看这篇博客:图像畸变.