单相机标定
单相机标定
标定的目的:建立图片的像素世界与我们现实世界一一对应关系,简单来说就是已知图片的某点的像素坐标,就能得到现实世界的坐标。
标定的内容:内参、畸变参数以及外参。
标定的步骤:如下!
标定后如何使用:如下!
1 标定的内容
a 内参:讲解内参怎么来的,具体参数是那几个。
在讲解内参是什么,首先要知道成像原理。如下图,是小孔成像原理。这个很好理解。
根据上图的数据,我们可以很容易由三角形相似性得到在图像平面形成的图像大小,如下:
为了消除负号,以及更好的符合我们现实世界,我们通常会建立如下坐标系:
其实就是将针孔平面和图像平面对换,并用三维坐标表示,就会得到上面的坐标系。根据以上数据,我们仍然可以得到成像的大小(这里其实就是坐标了),如下:(下面的和
就是图像平面x和y的坐标)
,
(a)
要是真的能把成像芯片完完整整的安放在上图光轴和图像平面交点处,那处理起来就简单了。但是,在实际情况中,成像芯片几乎不可能安放在那个交点处;所以对可能的偏移(对光轴而言)进行建模,会引入两个新参数,和
。同时由于偏移,焦距也会发生变化。那么最终的成像结果也会发生变化,如下:
,
(b)
上面就是全部的内参了。其实就是焦距和偏移。为了方便表达以及以后的计算,大佬们对上面数据进行了整理,看起来更加高大上(注意:MQ前后位置变化,构造的矩阵也会有所变化) ,如下:
(c)
矩阵乘法都会, 将公式(c)展开得到q,除以Z或者w就会得到公式(b)了(从现实世界坐标系到像素世界坐标系是投影变换,这样的变换可以用齐次坐标表示,所以这里多了一维)。这里的M就是内参矩阵了。从这里可以看出内参矩阵中只有4个未知数,不过有的资料上会写5个,其实是一样,它们只是写成如下格式了:
看完这里想必对内参有一定的了解了。如果对后面那个内参矩阵是怎么来的,还有所疑问,可以看看下面两个链接,讲的是仿射变换和投影变换,对理解这些会有所帮助。不过最重要的是,仿射变换和平移后面会用到,可以先理解理解。
b 畸变参数:在标定的时候,为了精度肯定需要消除某些误差。其中径向畸变和切向畸变是主要的误差来源,这里讲这些误差的来源,具体包含哪些参数。
径向畸变:可以理解成在直径方向缩放的误差,误差的表现形式如下图。
径向畸变的成因:制作一个理想的凸透镜是很难的,可以参考制作世界上最圆的球体花了5年共计1500万的费用。
径向畸变的数学表达:最终成像的径向畸变跟透镜的半径有关系,离透镜的圆心越远畸变误差就越大。比如,图像中某点是经过透镜圆心成像的,那么它的径向畸变为0,远离圆心越远误差就越大(下面公式是泰勒展开式)。公式如下,
其中,公式的右边x和y是没有矫正的位置,左边是矫正后的位置,r是生产透镜公司的误差参数(这个参数不需要我们求)。
切向畸变:可以理解成在切线方向缩放的误差,误差的表现形式如下图。
切向畸变的成因:安置透镜和成像芯片不完全平行时导致的。
切向畸变的数学表达:公式如下,
其中,公式的右边x和y是没有矫正的位置,左边是矫正后的位置,r是生产透镜公司的误差参数(这个参数不需要我们求)。
从这一部分我们可以得到需要矫正的参数为径向畸变参数三个(,
,
)和切向畸变参数两个(
,
),共5个参数。不过需要注意的是,不同的项目对精度可能会有不同的要求,有的可能会引入其他的畸变参数,有的会增加或减少泰勒公式的项。在这里我们需要5个畸变参数!
c 外参:为了得到内参矩阵和畸变参数,需要做很多的实验,会引入外部参数。比如,使用棋盘格标定,为了得到更加精确的参数,更加多的数据,需要旋转和平移棋盘格。而这会引入6个参数,分别对x,y和z轴的旋转角度()以及分别对x,y和z轴平移的位移(
)。由计算机视觉中的平面单应性(其实就是投影映射),以及方便随后的计算,会写成如下矩阵形式:
W=[R t]
其中,R是旋转矩阵,t是平移矩阵。想比较详细了解这矩阵怎么来或者矩阵内容是什么,可以参考如下链接。
总结:在每个场景中,我们必须计算4个内参和6个外参,和由项目决定的畸变参数(由项目的精度决定参数的个数),这里需要5个。
2 标定的过程
整理中...
3 标定后如何使用
学习中...