OpenCV应用技术

鱼眼相机成像原理

2020-04-13  本文已影响0人  AI秘籍

这篇文章讲的很好.记录一下
https://blog.csdn.net/u010128736/article/details/52864024

1.鱼眼镜头 与 普通镜头的区别

鱼眼镜头一般是由十几个不同的透镜组合而成的,在成像的过程中,入射光线经过不同程度的折射,投影到尺寸有限的成像平面上,使得鱼眼镜头与普通镜头相比起来拥有了更大的视野范围。
下图表示出了鱼眼相机的一般组成结构。最前面的两个镜头发生折射,使入射角减小,其余的镜头相当于一个成像镜头,这种多元件的构造结构使对鱼眼相机的折射关系的分析变得相当复杂。


image.png

2.鱼眼相机成像过程

研究表明鱼眼相机成像时遵循的模型可以近似为单位球面投影模型。可以将鱼眼相机的成像过程分解成两步:
第一步,三维空间点线性地投影到一个球面上,它是一个虚拟的单位球面,它的球心与相机坐标系的原点重合;
第二步,单位球面上的点投影到图像平面上,这个过程是非线性的。
下图表示出了鱼眼相机的成像过程。


image.png

我们知道,普通相机成像遵循的是针孔相机模型,在成像过程中实际场景中的直线仍被投影为图像平面上的直线。但是鱼眼相机如果按照针孔相机模型成像的话,投影图像会变得非常大,当相机视场角达到180°时,图像甚至会变为无穷大。
所以,鱼眼相机的投影模型为了将尽可能大的场景投影到有限的图像平面内,允许了相机畸变的存在。并且由于鱼眼相机的径向畸变非常严重,所以鱼眼相机主要的是考虑径向畸变,而忽略其余类型的畸变。

3.四种鱼眼模型

为了将尽可能大的场景投影到有限的图像平面内,鱼眼相机会按照一定的投影函数来设计。根据投影函数的不同,鱼眼相机的设计模型大致能被分为四种:等距投影模型、等立体角投影模型、正交投影模型和体视投影模型。下面的四种鱼眼相机的投影模型反映出了空间中的一点P是如何投影到球面上,然后到图像平面上成像的。

(1).等距投影模型


image.png
image.png

上述式子中,rd表示鱼眼图像中的点到畸变中心的距离,是鱼眼相机的焦距,是入射光线与鱼眼相机光轴之间的夹角,即入射角。

(2).等立体角投影模型


image.png
image.png

(3)正交投影模型


image.png
image.png

(4)体视投影模型


image.png

4.OpenCV中的鱼眼相机模型

OpenCV中使用的模型是由Kannala提出的一种鱼眼相机的一般近似模型。在等距投影模型的基础上提出来的。下面来详细分析其鱼眼相机模型的提出过程。我们可以将鱼眼相机模型的形式统一以等距投影模型的形式来表示,即


image.png

对实际的鱼眼镜头来说,它们不可能精确地按照投影模型来设计,所以为了方便鱼眼相机的标定,Kannala提出了一种鱼眼相机的一般多项式近似模型。通过前面的四个模型,可以发现θd是θ的奇函数,而且将这些式子按泰勒级数展开,发现θd可以用θ 的奇次多项式表示,即


image.png
为了实际计算的方便,需要确定式中θd取到的次幂数。Kannala提出取式的前五项即取到的九次方,就给出了足够的自由度来很好地近似各种投影模型。θd的一次项系数可以为1,于是OpenCV中使用的鱼眼相机模型为:
image.png

式表示的模型是根据四种鱼眼相机投影模型得出的一种通用鱼眼相机多项式模型。这种模型根据θ能够得到θdθd ,即通过无畸变图像中的点能够计算出鱼眼图像中的畸变点。这种模型在OpenCV的鱼眼相机标定方法中是适用的,因为OpenCV借助标定板对鱼眼相机进行标定。从空间点到鱼眼图像上的点的变换过程可用式子表示为:


image.png

OpenCV中对鱼眼相机的标定步骤能够分成四步:
(1)初始化内参数;
(2)初始化外参数;
(3)使用LM算法最小化定位的图像点和投影的图像点之间的投影误差;
(4)确定结果。

以上是由空间点到鱼眼图像上的点的变换.

参考:

  1. https://blog.csdn.net/u010128736/article/details/52864024
  2. https://www.jianshu.com/writer#/notebooks/44809109/notes/67029273
  3. https://blog.csdn.net/qq_15947787/article/details/51441031
上一篇下一篇

猜你喜欢

热点阅读