双目视觉导航传感器标定

三、双目视觉导航传感器标定

双目视觉标定是利用已知世界坐标系(棋盘格标定板)和像素坐标系(对标定板图像处理后结果)的对应关系,获取相机的内参(焦距、图像中心)、外参(旋转矩阵和平移矩阵)和畸变参数。标定完成后,通过双目视觉系统获取的像点坐标信息,就可以求出对应的物点在世界坐标系的三维位置坐标。在双目标定前,还需要单独对每个相机做标定,以确定其畸变系数、相机内参矩阵等。这样做的目的是使左右相机获取到的图像都能校正为标准图像,便于后续的视差图计算。

相机标定方法分为两种:第一种是需要参照物的传统标定方法;第二种是不需参照物的相机自标定法。传统标定方法一般以棋盘格作为参照物,其中每个棋盘格的大小、尺寸及棋盘格的数量都是已知的。标定过程是将棋盘格的顶点与图像上的对应点建立对应关系,利用棋盘格的已知信息来求得相机模型的内外参数和畸变系数。这种标定方法通常有张正友标定法和Tasi两步标定法等,容易受到标定物的制作精度的影响,但精度仍比相机自标定方法高。

相机自标定法是不需要参照物的,通常有基于Kruppa方程的标定法、分层逐步自标定法、基于绝对二次曲面的自标定法等。是根据多视图约束几何方程,在不同位置采集多幅同场景的图像,通过相机的约束信息及对应点的几何信息来完成相机参数的计算。其最大优点就是不需要制作标定参考物,比较灵活;但由于缺少标定物,鲁棒性和精度都有所欠缺。

目前,比较常用的方法为张正友标定方法,可使用OpenCV和MATLAB对双目相机进行标定。标定前,要准备好棋盘格图片(图6-29),一般,为了获取更高的标定精度,采用工业级的(60格子×60格子)玻璃面板效果会更好。

这里以在MATLAB上标定为例讲解双目视觉标定方法。

首先,使用双目相机采集10~20组远近不同姿态的完整标定板图片,并将左相机拍摄的图片保存在“Left”文件夹下,右相机拍摄的图片保存在“Right”文件下,并新建一个名为“Result”的文件夹。

其次,打开MATLAB软件,在“APP”菜单栏里找到图像处理和计算机视觉工具箱(图6-30),然后单击进入标定界面(图6-31)。

图6-29 棋盘格标定板

图6-30 立体视觉标定工具箱

图6-31 标定界面

单击“Add Images”按钮,导入图像到MATLAB标定工具箱(图6-32),并根据实际情况设定黑白方格边长。这个时候,MATLAB就自动检测角点(图6-33),并去除不完整的图片。

图6-32 导入图片

图6-33 加载好的图片

然后进行标定前的基本设置,在图6-33中,勾选“Radial Distortion”栏的 “3 Coefficients”,为径向畸变校正选择3个畸变参数;勾选“Compute”栏的“Skew”,这一项的意思是认为图像坐标系x轴和y轴是垂直的;如果存在切向畸变,则勾选“Compute”栏的“Tangential Distortion”。

单击“Calibrate”图标,开始进行双目视觉标定,得到标定结果(图6-34)。

图6-34 标定结果

每对图像都有标定误差,由图6-34的“Reprojection Errors”窗口可看出,第16组图像误差过大,可进行删除,然后重新校正。

最后,单击“Export Camera Parameters”就可输出相机的畸变参数、内参和外参(图6-35、图6-36)。

图6-35 获取的相机畸变参数和内参

图6-36 获取的相机外参