基于计算机仿真的全景视觉镜面设计 引言 全景视觉系统是由一个朝上放置的摄像头和一个反射镜面组成,摄像头通过反射镜面获得360度范围的图像。因其视野广泛,足球竞赛机器人通常采用全景视觉系统来获取整个球场的信息。反射镜面是影响全景视觉的图像效果和观察范围的重要因素。美国哥伦比亚大学的Simon Baker和Shree K. Nayar等人专门对全景视觉系统的几何特性进行了仔细的研究和分析,并提出了“单一视点(single viewpoint)”的问题[1]。符合单一视点的曲面,所有射向焦点的光线经过反射后都射向另外一个焦点或者平行于对称轴,而不是散射开来。 研究表明,不同镜面适用于不同的观察需求。常用的曲面镜面(如抛物面,锥面等)往往不能同时满足执行特殊任务的机器人的多个观察需求。于是有学者提出根据观察需求或者假设的成像效果反推镜面的曲面[2],以设计出满足特殊任务需求的镜面轮廓。本文的镜面设计过程是根据反推算法求得曲面轮廓,并且建立相应的模型仿真预先观察成像效果,与期望的成像进行比较,根据一定的*估和分析,优化参数,由计算机完成大量的计算过程和定量分析。这种设计方法可以高效地设计出性能好、成本低的镜面。 1镜面设计原理及成像仿真系统的开发 1.1 镜面设计原理和方法 要预知经过镜面反射之后的成像效果,就必须知道镜面曲线和经过镜面反射后的成像点(CCD上的成像单位)与现实空间点的映射关系。 图1 镜面成像原理 以小孔成像模型作为摄像头的成像模型,因为镜面是旋转对称的结构,只需研究二维的镜面剖面曲线。如图所示,根据光线反射定理和小孔成像法则,可以得到如下关系式: 上式中F(t)为曲线方程,具体的关系式推导可参考[4]。 若是未知镜面曲线方程,而给定现实点与图像点的对应关系,则需要反推镜面轮廓线。逆向求取镜面曲线的方法分为两种:解析解[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。于是变换矩阵简化为: 根据之前计算所得的像素与空间矢量(物体模型上的点必通过某一空间矢量)的关系式即可得到所设计的虚拟环境的成像效果图。之后根据成像效果图修改参数,并通过成像仿真快速达到所需要的效果,可得到最终的镜面加工参数。 2 实验与结果 所设计的用于足球机器人的镜面需满足下列要求: 1) 当机器人在场地中间位置时,需要看到球门,以便区分己方球门和对方球门,确定运动的方向。 2) 看到的远处的球要具有较准确的方向信息。 3) 看到的近处的球要具有较准确的方向和距离信息,即要求近处的观察分辨率需要达到一定的要求。 4) 尽可能少地看到机器人本身(无用信息),以便更多地获取机器人四周的环境信息。 根据以上要求,可将镜面分成两部分设计,一部分用来观察机器人1m内的范围,一部分观察1米外和球门的信息。实现过程如下: 事先根据需要考虑整个图像的观察区域分布,分配不同距离区间的分辨率,然后运行仿真程序得到镜面曲线和成像效果(见图3),并且把镜面曲线的各点坐标保存成数据文件,方便后期的数控车床加工提取数据。实际镜面成像效果图如图4所示。 图3 镜面剖面图和成像效果图 图4 加工完成的反射镜面及实际镜面成像图 3 总结 通过虚拟仿真的计算机辅助设计方法以及镜面逆推算法,可以方便而有效地设计出全景视觉系统的反射镜面,满足了预先设想的任务要求,在足球机器人应用良好。借助计算机辅助设计及仿真方法,产品设计不仅提高了效率,更提高了设计的质量,并且能把设计集中在创新上而不是一些繁琐的计算和参数细化上。
|