鱼眼相机模型

鱼眼镜头模型详情请参考:

1.https://blog.csdn.net/u010128736/article/details/52864024

2.https://blog.csdn.net/weixin_42054950/article/details/80859212

一、鱼眼镜头模型

鱼眼镜头模型可以近似为单位球面投影模型。(鱼眼镜头主要的是考虑径向畸变,而忽略其余类型的畸变)

鱼眼相机模型_第1张图片

其成像过程分解成两步:

1.三维空间点线性地投影到一个球面上,它是一个虚拟的单位球面,它的球心与相机坐标系的原点重合;

2.单位球面上的点投影到图像平面上,这个过程是非线性的。

 

二、投影函数

鱼眼镜头会按照一定的投影函数来设计其大致能被分为四种:

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

1.等距投影模型:​间距相同的 入射光线 其投影点的间距 也对应 相同;

鱼眼相机模型_第2张图片

2.等立体角投影模型:相等立体角的入射面会产生相等面积的像;畸变程度介于等距模型与正交模型之间;

鱼眼相机模型_第3张图片鱼眼相机模型_第4张图片

 

3.正交投影模型:畸变很大,180°周边及以后的情况无法描述,适用于广角摄影镜头;

鱼眼相机模型_第5张图片

4.体视投影模型:畸变最小;

鱼眼相机模型_第6张图片鱼眼相机模型_第7张图片

5. 透视模型:即小孔成像

鱼眼相机模型_第8张图片

 

三、OpenCV中的鱼眼相机模型

OpenCV中使用的鱼眼相机模型基于等距投影模型提出的。

我们可以将鱼眼相机模型的形式统一以等距投影模型的形式来表示,即

                  

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

            ​ 

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

            

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

             鱼眼相机模型_第9张图片​ 

             

                 

                

          

             ​( 将点投影在了Z=1的平面上了,即f=1)

            

上面式子中,X表示空间点,Xc表示相机坐标系下对应的空间点,R和t分别是两个坐标系之间的旋转矩阵和平移向量,(u,v)T 表示投影到鱼眼图像上的对应点。OpenCV中对鱼眼相机的标定步骤能够分成四步:(1)初始化内参数;(2)初始化外参数;(3)使用LM算法最小化定位的图像点和投影的图像点之间的投影误差;(4)确定结果。

 

 

 

 

 

 

 

你可能感兴趣的:(OpenCV)