若是未知镜面曲线方程,而给定现实点与图像点的对应关系,则需要反推镜面轮廓线。逆向求取镜面曲线的方法分为两种:解析解[2]和数值解[3]。本文采用求数值解的算法,因为它计算复杂度小,利于编程实现。主要实现流程如图2所示:
图2 镜面轮廓设计实现流程图
1.2 成像仿真
为了使镜面曲线设计更直观,更方便调整参数,对镜面成像效果进行仿真预览可以使设计的应用更加友好,同时利于提高效率和设计质量,避免设计和预期的效果出现过大的出入,造成时间和成本的浪费。仿真系统以Matlab为开发平台,因为Matlab具有强大的数学计算功能以及图像处理库,可以提供方便的函数调用,缩短仿真系统开发的时间。
根据上述得到的图像和实际空间矢量的映射关系来进行成像图形的仿真。首先需要获取进行镜面映像的环境,文中用于仿真的环境是足球机器人的比赛场地(包括场地上的白线,球门,门柱等)以及比赛用球。场地上的物体信息都是简单的规则性几何体,确定了全局坐标系之后,即可以得到各个物体的空间表达式,即它们的数学模型。假设以场地中央为全局坐标原点,根据右手法则,长度方向为x轴(指向黄球门),宽度方向为y轴,z轴垂直地面向上,则主要物体的数学模型如下(计算单位为mm):
球:
(其中r=110)
黄球门: 蓝球门:
设机器人在场地中的位置为(dx,dy,θ)T,dx,dy为平面坐标位置,θ是机器人朝向角。物体数学模型(x,y,θ)T与以机器人视觉系统为原点的局部坐标下的表达式(x’,y’,z’)T存在以下关系:
因为镜面为旋转对称镜面,为简化模拟成像的计算量,取θ=0。于是变换矩阵简化为:
根据之前计算所得的像素与空间矢量(物体模型上的点必通过某一空间矢量)的关系式即可得到所设计的虚拟环境的成像效果图。之后根据成像效果图修改参数,并通过成像仿真快速达到所需要的效果,可得到最终的镜面加工参数。