基于改进型旋转矩阵的求取世界坐标方法
2022-09-01陈龙灿杨佳义党晓圆方健紅
陈龙灿,杨佳义,党晓圆,陆 地,方健紅
(重庆移通学院,重庆 401520)
在工业视觉检测中通过相机的标定能够获得相机的内部参数以及如果发生图像畸变的参数,在这个过程中还可以获得相机的每1 张图片对应的外参矩阵,和外参矩阵不同的是内参是相机的固有内在属性,每个相机都有1 个固定值,外参表示的是世界坐标系与相机坐标系间的相对位置关系。因为在标定的时候,拍摄的每1张图都是不同的,因此每张图都对应有1 个外参。本文利用Matlab 软件来进行相机的标定,并识别和计算图片角点像素坐标值,然后通过分析像素坐标系与图像坐标系之间的关系,最终得出像素坐标系与世界坐标系的矩阵方程之间的转换关系,经过矩阵计算出图片角点的像素坐标所对应的世界坐标,再计算出经过该设计得到的长度与标定板上棋盘格真实长度的误差,最后设计制作对应的GUI 界面,可以将结果更加清晰直观地展现出来。这为后期的视觉检测和测量奠定了一定的基础,使后期操作更为方便,为后期的工业机械视觉检测及视觉图像处理奠定一定的基础。
1 像素坐标系到世界坐标系的映射
已知现场采集到的图像中心像素坐标假定为(u0,v0),相机中图片的物理尺寸用dx×dy表示,则相机像素坐标系(u,v)与相机所得的图像坐标系(x,y)之间的关系经过矩阵变换后经过相机坐标与世界坐标变换得到
式中:R=RxRyRz;T=[tx ty tz]。由上述的二维坐标、相机坐标、世界坐标的几个矩阵表达式,可以进一步推导出从像素坐标到世界坐标系的关系
通过摄像机得到的每1 张图像都会有1 个外参矩阵组成,外参矩阵对应图像中的角点坐标可以通过将标定板上的点坐标(x,y,0,1)连续左乘外参矩阵和内参矩阵得到。在计算过程中需要设定参考坐标系,在此次研究中设定标定板左上方角点为参考坐标系,Z轴垂直标定板平面,因此z为0,1 表示齐次坐标。
在相机的标定过程中,按照原本的原理分析与对应的矩阵运算,计算当前摄像机的内外参数、从像素坐标到世界坐标过程中的旋转矩阵和平移矩阵表达式分析,可以得出世界坐标系。
利用Matlab 代码获取图像的内参和外参,使用旋转矩阵后再次进行平移,得到平移矩阵和外参矩阵。使用rightMatrix =inv (R)*inv(M)*imagePoint;leftMatrix=inv(R)*t,s=(zConst+leftMatrix(3))/rightMatrix(3)等完成深度计算。
转换世界坐标使用的两种方法:第一种world Point1=inv(R)*(s*inv(M)*imagePoint-t);simplify(world-Point1),第二种cameraPoint=inv(M)*imagePoint*s;image->camera。
2 Matlab 的GUI 界面设计及误差分析
整个系统设计,大致流程如图1 所示。
图1 系统设计流程图
2.1 Matlab 的相机标定及输出结果
相机标定的目的是根据之前的矩阵关系式计算得出每1 个摄像机的内部参数和外部参数,得出之后主要作用是当每1 次获得新的图片后,如果图片发生畸变,则可以在标定的情况下获得最小的畸变图像,进而可以进行后期的图像处理或参数获取。
相机标定的输入:主要包含在假设Z=0 时的标定图像内角点图像坐标值,此时只需要知道x、y2 轴的值即可,同时还需要对应的世界坐标系下的坐标轴值。
相机标定的输出:目标在于输出摄像机的内外系数。这个也是进行标定的基本要求和基本参数的获取,因此一般Matlab 标定相机的完整流程如图2 所示。
图2 相机标定流程
在本设计中首先对相机产生的14 张图片进行逐一标定。将图片导入到软件工具箱中读取,读取图片时要将默认路径改至图片所在文件夹,并且要统一命名前缀。然后进行到下一步对每张图片标角点,如图3 所示。
图3 14 张验证图片
按照要求对每1 张图片标注脚点之后,利用Matlab 自动保存相关数据。进行下一步的标定工作,点击工具箱菜单栏里的calibration,工具箱就会对标脚点所录入的数据进行标定,马上就获取到结果,显示标定结果如图4 所示。
图4 文件夹下的所有照片标定结果
2.2 误差计算及结果输出
其中读取原图设计中,设置按钮后写入程序,其中axes(handles.axes1)中表示指定了图片读取后显示在axes1 中。接下来,将棋盘上的点转换成对应的世界坐标系后标注在该棋盘的图像上最后的计算X,Y,Z坐标换算后显示在GUI 的最右侧,程序段xlabel('x(mm)'),ylabel('y(mm)'),zlabel('z(mm)')实现功能,具体如图5 所示。
图5 世界坐标系的计算和标注
接下来需要分析坐标换算的坐标误差关系,计算图像像素坐标与世界坐标映射之间的误差关系,RMSE=(sum((distC-5).^2)/length(distC))^0.5 为误差计算的最终计算式,计算后的结果在axes6 坐标系中显示。
由图6 可知经程序运行后得出的结果,从结果显示可以看出经多张图对比及演示后得出,最终误差基本恒定在2 mm 以内,达到目前工业中的大部分工艺需求。
图6 均方差RMSE
3 结束语
在像素坐标到世界坐标的分析过程中,误差分析也实现了在2 mm 以内,达到了大部分工业的要求,如图7 所示。这为后续的机械视觉检测及视觉分析打下了一定的基础,能够在现有的分析基础上继续改进和设计出更适合工业现场分析的视觉分析质检系统等。
图7 系统整体图