双目视觉是模拟人类视觉原理,使用计算机被动感知距离的方法。
从两个或者多个点观察一个物体,获取在不同视角下的图像,根据图像之间像素的匹配关系,通过三角测量原理计算出像素之间的偏移来获取物体的三维信息。
得到了物体的景深信息,就可以计算出物体与相机之间的实际距离,物体三维大小,两点之间实际距离。
以机器人导航为例,就是告诉机器人,在它的前方有障碍物、还要告诉它该障碍物在机器人的导航坐标系中的位置信息。这样机器人才能做出判断并进行规避。实现这个功能的时候,就包含了以下三部分内容。
1、提取感兴趣的点(特征检测):找到障碍物。一般来说一秒钟至少要给机器人5个以上的信号,即每秒至少采集5帧以上的图像并分别处理。
如果是用一个摄像头,只能得到障碍物的平面信息,机器人并不知道应该再走多远才能实施避障动作,所以我们需要再加一个摄像头从另外的角度去拍摄这个障碍物,得到两张从不同角度来描述该障碍物的图片,然后再加入一些预处理算法如二值化、边缘提取、特征点去噪等把两张图片中的障碍物提取、分割出来。
2、精确化数字描述(立体匹配、姿态测量):分割出障碍物的特征点以后用三维坐标来描述。如果在安装好双目相机的同时还进行了单目相机标定和双目相机标定,确认了双相机、镜头的参数矩阵,得到平移向量和旋转矩阵。那么根据双目立体匹配原理带入就可以得出该障碍物的三维坐标值了。把该三维坐标值输入机器人控制系统,机器人就可以智能的实现避障了。
在这部分中用到了“立体匹配”算法,其实该算法是和双目标定相结合,该算法根据特征点在左右图像中的坐标点进行基础矩阵的计算并将左右图像的同名坐标点一一对应。在这个过程中用到的“平移向量”和“旋转矩阵”就是下一步双目标定中给出的参数。
3、双目标定。利用已知世界坐标系(标定板)和图像坐标系(对标定板图像处理后结果)的对应关系,计算出双目相机在当前位置关系下的参数信息。标定完成后,用该双目系统去观测未知世界坐标系时就可以得到其三维信息了。事实上,在双目标定前,还需要对每个相机做单相机标定,以确定其畸变系数、相机内参矩阵等。这样做的目的是为了使左右相机获取到的图像都能校正为标准图像后再进行处理。