发明内容
为了克服已有双摄像头手持扫描技术的系统硬件配置要求较高、移动拼接时的顺畅性较差、精度较低的不足,本发明提供了一种降低对系统硬件配置的要求、移动拼接时的顺畅性良好、精度较高、成本较低的基于标记点轨迹跟踪的手持激光三维扫描方法及设备。
本发明解决其技术问题所采用的技术方案是:
一种基于单摄像头标记点轨迹跟踪的手持激光三维扫描方法,所述扫描方法包括以下步骤:
1)在单个工作摄像头拍摄的图像中识别提取标记点的二维位置信息,根据之前设定数量帧中标记点的运动轨迹预判得到当前帧中的目标位置,再在目标位置周围搜索得出其对应标记点,建立当前帧中的标记点与原标记点库的初步匹配关系;
2)利用当前帧中的标记点与原标记点库的初步匹配关系计算出仪器当前相对坐标系Oc到世界坐标Ow的RT转换矩阵,根据该转换矩阵将标记点库中的对应标记点及其周边邻近标记点重投影到当前帧的二维图像平面坐标系Ot中,对之前的初步匹配关系进行校验,如果整体误差大于系统设定的阀值,则剔除当前标记点集合中与标记点库对应的匹配度最差的标记点,重新迭代计算RT转换矩阵后再进行投影评估;
3)在获得仪器当前位置的RT转换矩阵后,在当前帧图像中提取激光投影轮廓并根据已标定好的摄像头与激光器所发射激光面的位置关系,将获得激光投影轮廓点在仪器坐标系Oc下的相对三维坐标通过RT转换矩阵转换为世界坐标系Ow下的三维坐标。
进一步,所述扫描方法还包括如下步骤:
4)如果当前帧的标记点重投影校验失败,则需要启动另一台相互位置已经过标定的辅助摄像头获得共同视野内的标记点在两个摄像头图像中的二维坐标,根据对极线约束原理得出这些标记点在仪器当前坐标系Oc下的坐标值,再与世界坐标系Ow下的标记点库中的标记点集合进行一一匹配重新得出当前仪器坐标系Oc相对于世界坐标系Ow的RT转换矩阵;
在得到仪器的位置信息后关闭辅助摄像头,继续只用原单个工作摄像头通过标记点轨迹跟踪方法获得后续帧的三维轮廓信息。
再进一步,所述之前设定数量帧为前两帧或者前三帧图像,利用一次或二次函数分别对前两帧或者前三帧图像中每个标记点的运行轨迹进行拟合,结合该标记点在之前连续多帧图像中的位移速度,计算出每个标记点在当前帧中的预判断目标位置,以该位置作为中心搜索当前帧中周围是否有相应的标记点与之相对应,从而建立当前帧标记点与标记点库的匹配关系。
更进一步,所述步骤1)中,将每一帧图像中的标记点二维信息记录在一种允许空节点的非满四叉树中。
所述步骤1)中,所述标记点库为预先贴在被测物体表面的标记点在三维世界坐标系Ow下的坐标值组成的标记点库,将标记点库中的标记点三维信息记录在一种允许空节点的非满八叉树中。
所述步骤1)中,在开始扫描的原始位置利用已标定好相互位置的辅助摄像头和单个工作摄像头获得同步的两帧起始图像,在两幅图像中得到各自识别出的标记点的二维坐标后再根据对极线约束原理重构出辅助摄像头和单个工作摄像头共同视野范围内的标记点在仪器当前坐标系Oc下的三维坐标位置及拓扑结构。
再者,根据这些相对三维坐标系Oc下的标记点拓扑结构与世界坐标系Ow下标记点库中的标记点进行匹配,获得第一帧起始图像中的标记点在世界坐标系Ow中的坐标,并关闭所述辅助摄像头。
一种基于单摄像头标记点轨迹跟踪的手持激光三维扫描设备,所述设备包括单个工作摄像头、辅助摄像头、激光发生器、支座、控制电路板、高亮补光发生器以及用于根据获得视频图像后进行标记点轨迹跟踪的轨迹跟踪扫描处理系统,所述单个工作摄像头、辅助摄像头的光轴与激光发生器发射出激光面的交点位于摄像头的最佳景深平面位置,所述单个工作摄像头和辅助摄像头的景深范围为扫描仪的测量深度范围,所述激光发生器的景深范围涵盖扫描仪的测量深度范围,所述单个工作摄像头、辅助摄像头和激光发生器均安装在所述支座上,所述单个工作摄像头、辅助摄像头和激光发生器均与所述控制电路板连接,所述控制电路板与所述高亮补光发生器连接,所述高亮补光发生器放置在单个工作摄像头、辅助摄像头的镜头外圈,所述控制电路板与所述轨迹跟踪扫描处理系统连接。
优选的,所述控制电路板包括主控芯片、信号隔离电路、激光驱动电路、高亮补光驱动电路和数据交换电路,主控芯片与数据交换电路连接,所述数据交换电路的输出端与所述轨迹跟踪扫描处理系统连接,所述数据交换电路的输入端与单个工作摄像头、辅助摄像头连接,所述主控芯片与单个工作摄像头、辅助摄像头之间经过信号隔离电路进行连接;所述主控芯片通过信号隔离电路与激光驱动电路连接,所述激光驱动电路与激光发生器连接,所述主控芯片通过信号隔离电路与高亮补光驱动电路连接,所述高亮补光驱动电路与高亮补光发生器连接。
进一步,所述述控制电路板还包括同步触发控制模块,用于在一个图像采集周期的开始触发激光器和单个工作摄像头或者触发单个工作摄像头和辅助摄像头。激光器和单个工作摄像头的同时触发使得在单个工作摄像头开始曝光的同时激光器开始投射激光图案,经过设定的激光开启时间后关闭激光,再经过设定的摄像头曝光时间后结束摄像头曝光完成该帧的图像采集;单个工作摄像头和辅助摄像头的同时触发使得系统可以同一时刻获得不同角度的图像,用于对其相同视野的标记点进行立体视觉匹配。
本发明的技术构思为:如图2中a部分所示,由于本发明在扫描时只使用一个摄像头与激光器组合13进行图像采集,因此的测量范围11比需要两个或以上摄像头进行三维扫描的系统14的测量范围12更大,相应的同一帧得到的图像中被测物体表面的有效标记点个数也更多,这将有助于提高前后帧标记点拼接的成功概率和拼接精度。尤其在扫描物体转角处时,如图2中b部分所示,由于物体转角处存在视角遮挡,双摄像头测量范围19内部的标记点18个数少于单摄像头扫描时测量范围17内的标记点16的数目,而如果一次图像采集获得标记点数目少于3个时将无法与标记点库中的标记点拓扑结构进行匹配,也就无法获得当前仪器位置和形态的RT转换矩阵。此时用户需要调整仪器位置和角度将视野,重新对准之前扫描拼接成功的被测物体表面区域得到仪器的RT转换矩阵后,使用不同视角重新扫描;或者暂停扫描,重新在无法扫描的区域增加新的标记点后再进行重新扫描。这种情况将会很大程度上降低双摄像头方式扫描过程的连贯性和出点速度,同时双摄像头较小的共同视野导致数量较少的标记点,会不同程度的降低拼接精度。本发明所采用的单摄像头标记点跟踪方法可显著避免此种情况的发生,使扫描过程更为流畅,扫描拼接精度也因为有更多参与拼接的标记点而得到有效的提高。
本发明所述方法在扫描时利用单个工作摄像头进行图像获取,因此在原始视频数据传输环节相比双摄像头或多摄像头方式减少占用一半以上的传输带宽,这在高分辨率摄像头(如500万像素30帧/秒摄像头需要的传输带宽为1200Mbps)用于高精度三维扫描上显得尤为重要。在图形图像识别环节本发明所述方法也只需对一幅图像的标记点进行跟踪识别,而且标记点轨迹跟踪算法的时间复杂度要远小于将相对三维坐标系中的标记点拓扑结构与世界坐标系下的标记点库中的标记点拓扑结构进行两两匹配的双目扫描拼接算法。如图3所示,标记点双目拼接匹配算法是将每个标记点与周边一定距离范围内的相邻标记点的有向线段L1~Ln(距离和角度)在两个坐标系下进行对比,得出相对坐标系下的每个标记点在世界坐标系下标记点库中相关度最大的关联标记点。由于比较过程中涉及到求距离和角度,假设当前获得的标记点有n个,每个标记点周围有m个邻近点,标记点库中有N个标记点,则匹配一个标记点需要进行n×m×N次的循环,每次循环需对两点间的距离角度等进行计算和比较,大约需要200个指令周期。以摄像头的采样频率为30帧/秒、每一帧获得30个标记点以及每个标记点搜索周围15个邻近点作为拓扑结构信息为例,则每秒需要占用CPU的指令周期为:200×30×30×15×N。如图4中CPU占用率曲线31所示,手持双摄像头激光三维扫描中仅双目拼接匹配算法在标记点库容量(标记点个数)为500的情况下已经占用CPU中一个1.8G核接近75%的计算能力。而本发明所提出的标记点轨迹跟踪算法在扫描过程中除非跟踪失败,均只需启用单个工作摄像头结合之前帧对标记点轨迹进行预测,再利用非满四叉树数据结构对标记点进行快速跟踪匹配,得到当前图像帧中的标记点与库中标记点的对应匹配关系。也以摄像头的采样频率为30帧/秒、每一帧获得30个标记点为例,跟踪标记点包含搜索保存当前标记点的非满四叉树K-邻域算法,假设搜索标记点预测目标位置周围两层的非满四叉树节点,则最多需要进行24次从树根到叶子的遍历,每帧30个标记点的所构建的四叉树从根到叶子的树高在7层左右,搜索一次最多需要大约350个CPU指令周期;此外还包含搜索保存库标记点的非满八叉树K-邻域算法,在标记点库中的搜索当前获得的标记点的K-邻域周围标记点并重投影到仪器当前帧图像平面进行校验,随着标记点库容量(标记点个数)的增加,非满八叉树的树高缓慢增大,树高为数节点的函数:h=H(N),如N=400时h=11,每个标记点搜索非满八叉树周边两层除自身外共124个节点,每次搜索占用H(N)*10个指令周期,加上搜索得到的标记点进行重投影比较约占50个指令周期,因此本发明中在扫描时的标记点跟踪匹配算法每秒占用CPU的指令周期大约为:350×30×30+124×(H(N)×10+50)×30×30,如图4中曲线32所示。
本发明的有益效果主要表现在:本发明所提出的单摄像头标记点跟踪匹配算法相比传统的双摄像头标记点拼接匹配算法占用更少的CPU时间,特别是库中标记点较多的情况下更为显著,所以本发明所述的扫描系统可以采用更低端的CPU(如嵌入式CPU)以及像素更高、刷新频率更快的摄像头,获得更快的扫描速度和结果呈现,使得手持激光三维扫描技术可以在更多领域得到应用。
具体实施方式
下面结合附图对本发明作进一步描述。
参照图1~图12,一种基于单摄像头标记点轨迹跟踪的手持激光三维扫描方法,所述扫描方法包括以下步骤:
1)在单个工作摄像头拍摄的图像中识别提取标记点的二维位置信息,根据之前设定数量帧中标记点的运动轨迹预判得到当前帧中的目标位置,再在目标位置周围搜索得出其对应标记点,建立当前帧中的标记点与原标记点库的初步匹配关系;
2)利用当前帧中的标记点与原标记点库的初步匹配关系计算出仪器当前相对坐标系Oc到世界坐标Ow的RT转换矩阵,根据该转换矩阵将标记点库中的对应标记点及其周边邻近标记点重投影到当前帧的二维图像平面坐标系Ot中,对之前的初步匹配关系进行校验,如果整体误差大于系统设定的阀值,则剔除当前标记点集合中与标记点库对应的匹配度最差的标记点,重新迭代计算RT转换矩阵后再进行投影评估;
3)在获得仪器当前位置的RT转换矩阵后,在当前帧图像中提取激光投影轮廓并根据已标定好的摄像头与激光器所发射激光面的位置关系,将获得激光投影轮廓点在仪器坐标系Oc下的相对三维坐标通过RT转换矩阵转换为世界坐标系Ow下的三维坐标。
进一步,所述扫描方法还包括如下步骤:
4)如果当前帧的标记点重投影校验失败,则需要启动另一台相互位置已经过标定的辅助摄像头获得共同视野内的标记点在两个摄像头图像中的二维坐标,根据对极线约束原理得出这些标记点在仪器当前坐标系Oc下的坐标值,再与世界坐标系Ow下的标记点库中的标记点集合进行一一匹配重新得出当前仪器坐标系Oc相对于世界坐标系Ow的RT转换矩阵;
在得到仪器的位置信息后关闭辅助摄像头,继续只用原单个工作摄像头通过标记点轨迹跟踪方法获得后续帧的三维轮廓信息。
如图1所示,本发明所采用的摄像头01的光轴沿线与激光发生器03发射出激光面的交点距离为H,交点应位于摄像头的最佳景深平面位置。所述的摄像头光轴沿线与激光器发射出激光面的交点取决于摄像头与激光器的距离L以及夹角a。所述的摄像头光轴沿线与线状激光发生器发射的激光面成夹角,该夹角在0°到90°之间,夹角越小摄像头的测量盲区就越小,但深度测量精度会降低;该夹角越大深度测量精度就越高但摄像头的测量盲区会增大。所述的摄像头01为全帧曝光CCD或者CMOS摄像头,并配备与扫描视野和扫描精度相匹配的定焦镜头,镜头的景深范围即为仪器的测量深度范围。所述的激光发生器03为半导体线状激光器,其景深范围应涵盖仪器的测量范围。所述的高亮补光发生器05为沿摄像头镜头外圈等角度均匀排布数颗高亮LED灯珠的铝基板,在扫描时照亮被扫描物体表面预先贴好的标记点。
本发明所述的控制电路板控制摄像头和激光器按照如图5所示序触发。在一个周期的开始时同时触发摄像头和激光器,使摄像头开始曝光的同时激光器开始发射激光,经过t1时间后关闭激光再经过t2时间后结束摄像头曝光完成该帧的图像采集。激光的点亮持续时间t1为系统根据被测物体表面材质对激光的反光程度自动匹配,过长或过短会导致摄像头感光元件相应区域过曝光或曝光不足。系统对所拍摄的图像中的激光线上的轮廓点像素的亮度进行综合评估,如果超出一定的阀值则控制电路板相应延长或减短激光的开启时间。由于摄像头非曝光时间不拍摄图像,因此t1≤t2,以减少激光的总体点亮时间,降低激光发射的总能量,减少对操作者眼睛的影响。摄像头的曝光时间t2决定于所述高亮补光发生器的照射亮度以及被测物体表面标记点的反光效率,其最长曝光时间一般控制在1/60秒内,否则会导致手持扫描时图像出现运动模糊。t3为摄像头的拍摄触发周期,该周期越小则扫描速度越快,但需要摄像头的刷新频率的以及后端数据处理能力的支持,摄像头拍摄和传输一帧图像的时间加上扫描处理计算所消耗的时间须小于t3。
如图6所示,所述的控制电路板02通过控制线和数据线与工作摄像头01与辅助摄像头07连接,在扫描初始或者标记点跟踪失败时同时对两个摄像头进行同步触发,在正常扫描过程中仅对工作摄像头进行触发控制。摄像头的数据通过以太网线或USB线与控制电路板连接,控制电路板将图像视频数据汇集上传。所述的激光发生器由控制电路板提供电源并控制其与摄像头曝光周期同步进行启停,用于提供物体表面的轮廓特征。所述的高亮补光发生器05由控制电路板提供电源并控制其启停,其发射的高亮补光照亮物体表面的标记点,用于扫描过程的定位和拼接。所述的轨迹跟踪扫描处理系统06(可以采用运算处理计算机)与控制电路板通过无线或有线方式连接,接收其上传的实时视频数据并下传控制指令。
如图12所示,所述控制电路板02包括主控芯片60、信号隔离电路61、激光驱动电路62、高亮补光驱动电路63和数据交换电路64,其中主控芯片可采用32位的MCU(如ST公司的STM32系列芯片),也可采用16位的MCU(如TI公司的MSP430系列芯片),甚至采用主频较高的8位MCU(如STC公司的STC12系列芯片)。主控芯片60与数据交换电路64通过串行总线进行连接,由于控制信息的数据量不大,控制频率也不高,因此可以采用中低速的通讯接口如UART或者SPI等实现。数据交换电路64可采用类似以太网交换机或者USB HUB原理实现(比如可以用Realtek公司的RTL8367N芯片进行千兆以太网数据交换),同时实现将串行总线上的通讯协议转换后与运算处理计算机进行控制数据交互和将摄像头的视频数据汇集上传到运算处理计算机进行图像处理。主控芯片60与工作摄像头和辅助摄像头通过信号隔离电路61进行连接,输出脉冲触发信号控制摄像头的同步曝光;主控芯片60通过信号隔离电路61与激光驱动电路62连接,实现电平转换并提供大电流驱动激光发生器;主控芯片60通过信号隔离电路61与高亮补光驱动电路63连接,实现电平的转换并提供大电流驱动高亮补光发生器。由于触发摄像头和激光器的频率在0.1KHz以下,因此信号隔离电路61可以采用截止频率高于该频率的隔离芯片,如EL817或者6N137等光耦芯片。激光驱动电路62、高亮补光驱动电路63可以采用功率MOS管实现对大电流的控制,如IRF3205元件。
主控芯片60包括同步触发控制模块,用于在一个图像采集周期的开始触发激光器和单个工作摄像头或者触发单个工作摄像头和辅助摄像头。激光器和单个工作摄像头的同时触发使得在单个工作摄像头开始曝光的同时激光器开始投射激光图案,经过设定的激光开启时间后关闭激光,再经过设定的摄像头曝光时间后结束摄像头曝光完成该帧的图像采集;单个工作摄像头和辅助摄像头的同时触发使得系统可以同一时刻获得不同角度的图像,用于对其相同视野的标记点进行立体视觉匹配。激光器的开启持续时间为系统根据被测物体表面材质对激光的反光程度自动进行匹配。摄像头的曝光时间由所述高亮补光发生器的照射亮度以及被测物体表面标记点的反光效率所决定。
如图7所示,本发明所述的标记点轨迹跟踪匹配方法的执行流程如下:
第一步,首先本算法实现三维扫描前需要建立预先贴在被测物体表面的标记点在三维世界坐标系Ow下的坐标值组成的标记点库:利用摄影测量方法得到被测物体表面所有标记点的三维世界坐标,建立标记点库;或者利用辅助摄像头与工作摄像头配合进行标记点预扫描,利用双目视觉原理建立标记点库。所获得的标记点库存入内存的非满八叉树中,用于后续执行标记点匹配算法时进行快速搜索。非满八叉树是对传统八叉树结构的一种变种,对于三维空间中没有信息的节点不申请空间而是作为NULL指针存入其父节点中。这种方式可以减少信息所占的存储空间同时因为不用遍历节点的空分支而提高搜索效率,特别是对于离散的空间数据——如本发明所涉及的三维标记点拓扑结构。
第二步,在开始扫描的原始位置利用已标定好相互位置的辅助摄像头和工作摄像头获得同步的两帧起始图像,在两幅图像中识别出标记点的相对二维坐标,并相互匹配得到相对三维坐标值后映射回世界坐标系Ow。标记点的识别是利用图像中像素边缘梯度亚像素提取法提取标记点的边缘,并用椭圆拟合方法得出标记点中心的图像位置。得到两幅图像中各自识别出的标记点的二维坐标后再根据对极线约束原理重构出两个摄像头共同视野范围内的标记点在仪器当前坐标系Oc下的三维坐标位置及拓扑结构。根据这些相对三维坐标系Oc下的标记点拓扑结构与世界坐标系Ow下标记点库中的标记点进行匹配,获得第一帧起始图像中的标记点在世界坐标系Ow中的坐标。
第三步,在获得第一帧中的标记点集合与标记点库的匹配对应关系后,将一个摄像头作为工作摄像头(用于后续扫描),并可关闭辅助摄像头。将工作摄像头获得的第一帧数据中的标记点在图像中的二维坐标保存在一棵非满四叉树的数据结构中,用于后续帧的轨迹搜索。如图8所示,传统定义的四叉树为满树,即将二维空间等步长分割为众多正方形,每个正方形对应一个树节点,四个相邻的节点作为其共同父节点的子节点,以此来保存该区域内的图像信息。由于系统须处理的标记点二维拓扑具有很大的离散性,因此如果使用传统不允许空节点存在的四叉树将导致存储空间和搜索时间上的无谓消耗,所以本发明将空的节点21作为NULL指针保存于其父节点中,在搜索时将跳过对空节点分支的遍历,这可以大大减少搜索相邻标记点的计算量。如搜索位于i=2,j=2节点20的周围K-邻域(如周围一层),只须搜索其四叉树的i=1~3且j=1~3除自身外的8个节点,而除了节22外,其余节点均为空节点而不用须搜索,其K-邻域搜索时间复杂度只与搜索的范围和树的层数有关而与节点总数无关。
第四步,在工作摄像头获得的第2帧图像中识别出标记点,并与第1帧中的标记点建立对应关系。由于摄像头的触发频率在几十赫兹,而手持仪器的移动轨迹为平滑的模拟曲线,因此连续两帧图像中同一标记点在各自图像中的轨迹位置存在连贯性,所以在建立前后帧对应关系时可以在前一帧每个标记点的四叉树节点的K-邻域搜索其在后一帧中的位置,这样可以减少搜索的计算量以及错误匹配的概率。在得到第2帧标记点与第1帧标记点的对应关系后,将第2帧标记点在其二维图像的位置信息存入非满四叉树中,并将每个标记点在第1帧中的位置信息也保存到该标记点的节点中,以用于后续对标记点移动轨迹的判断。
第五步,在得到前两帧图像中的每个相关标记点的图像二维相对坐标后,便可以利用两点确定的向量并沿该向量位移的方法预先判断每个标记点在随后帧图像中出现的位置:当得到工作摄像头的第m帧图像并将识别出的标记点存入非满四叉树结构后,根据m-1帧中每个标记点所计算出的轨迹预判断目标位置在当前m帧的非满四叉树中进行K-邻域搜索,得到的标记点与第m-1帧的标记点直接建立匹配关系。标记点轨迹预判方法如图9所示,将之前两帧中某个标记点(40为某标记点在第m-2帧出现的位置,41为其在第m-1帧出现的位置)的连线沿其先后次序的一次轨迹方向移动d距离得到该标记点的一次轨迹预判断目标位置,利用该目标位置便可以快速在当前第m帧的非满四叉树的K-邻域中搜索到该标记点42。d该标记点在m-1和m-2两帧图像中的距离。在处理完当前第m帧的标记点后,将第m-1帧每个标记点的位置信息存入当前第m帧中对应标记点的非满四叉树节点中,并删除第m-2帧的非满四叉树结构。
第六步,在某些包含变扫描移动速度或变扫描移动轨迹作较多的扫描实例中可以采用如下方法提高标记点移动轨迹预判断的命中率:利用二次轨迹方法对前三帧中相同标记点的位置轨迹进行二次曲线拟合,然后将该标记点在最近一帧的坐标处沿曲线的切线方向延长一定距离得到二次轨迹目标位置,这样可以在增加一定计算量的代价下增大轨迹预判断的命中率:将某标记点的第m-3帧的位置43和第m-2帧的位置44保存在第m-1帧该节点的四叉树节点中,并在收到第m帧后,根据m-1帧中每个标记点节点所保存的该标记点前两帧的位置信息再加上本帧(第m-1帧)的位置信息,根据三个二维坐标可以拟合出一条Y=aX2+bX+c的二次方程曲线,再求出过第m-1帧该标记点坐标(Xm-1,Ym-1)的切线方程:Y′=2aX+b,如果预判断的目标位置46的坐标为(Xm,Ym),目标位置离(Xm-1,Ym-1)的距离为D,则计算得到的目标位置为:
式中的±号取决于目标点(Xm,Ym)在第m-1帧中点(Xm-1,Ym-1)的正向还是负向。由于手持仪器移动的速度变化的连贯性可以做出微小时间间隔中加速度趋近于常量的假设,因此点43到点44的距离d1与点44到点45的距离d2和点45到预判断目标点46的距离满足:D=|2×d2-d1|。所计算出的二次轨迹预判断目标位置在当前m帧的非满四叉树中进行K-邻域搜索,得到的标记点与第m-1帧的标记点直接建立匹配关系。考虑到人手持仪器移动时动作的不可预知性,没有必要用更高次的方程拟合标记点来预判位移轨迹。相比一次轨迹预判断算法而言,二次轨迹预判断算法将在一些场合会比较明显的提高预判断的命中率,但同时也增加一定的计算量。
第七步,根据当前帧中所有跟踪成功的标记点对应的世界坐标系Ow下标记点库中的相匹配标记点计算出仪器当前坐标系Oc与世界坐标系Ow的RT转换矩阵。如图10所示,理论光心60的摄像头拍摄的当前帧二维图像61上的标记点m1~mi,i为标记点个数(i≥3),对应被测物体表面62上的真实标记点M1~Mi,设mi点的坐标为(xi,yi),Mi点坐标为(Xi,Yi,Zi),相机焦距为f,以m1、m2、m3和对应的M1、M2、M3为例,其对应的直线方程参数分别为(a1,b1,c1)、(a2,b2,c2)和(a3,b3,c3)根据角锥体法利用共线条件方程计算图像的外方位元素:可以求出摄像头的三维世界坐标(Xs,Ys,Zs)以及其欧拉角(ω,φ,κ),由此可以得到摄像头当前相对坐标系Oc对于世界坐标系Ow的RT转换矩阵。
第八步,在得到仪器当前的RT转换矩阵后,在标记点库中搜索当前帧相关标记点进行重投影。搜索方法为搜索每个当前帧标记点在存放标记点库的非满八叉树的K-邻域内的邻近标记点,添加到待投影的标记点集合中。再将待投影标记点集合通过RT转换矩阵重投影回当前工作摄像头所拍摄图像的二维坐标系Ot中,去除超出二维图像边界的重投影标记点,再将剩余的标记点与当前帧的标记点相对比,以校验该帧标记点的跟踪匹配结果,如图11所示,52是重投影回图像二维坐标系Ot中的标记点,53是本帧识别获得的标记点,两者圆心在图像上的距离为kn,判断所有匹配标记点对的相互之间的距离均值是否小于系统设定的标记点拼接精度的阀值如果小于阀值则认为该次校验通过,否则剔除当前标记点集合中与标记点库中对应标记点匹配度最差的标记点后重新计算当前仪器坐标系Oc相对世界坐标系Ow的RT转换矩阵,再次投影后进行重新评估。如此多次迭代不断剔除匹配度最差的标记点后重复评估,直到小于Dth通过重投影校验或者标记点对少于一定的数目(如4个)而无法获得精确的RT转换矩阵为止。后者则判为该帧标记点匹配失败,处理方法将在下面提到。
第九步,随着摄像头在被扫描物体上方移动,不断的有标记点移出视野也有新标记点进入视野,会出现重投影时无法匹配的标记点,如图11所示,当标记点51移出当前视野,则其移动轨迹的目标位置在当前帧的图像之外,此时仅须不向当前帧非满四叉树中插入该标记点即可;如果有新的标记点50移入当前视野,则会在重投影标记点库的相关标记点到当前工作摄像头二维图像坐标系Ot时在其图像范围内出现,则将其存入当前帧非满四叉树中。
第十步,如果在当前帧中某个标记点的目标位置周围没有找到相应的标记点,则退回到前面一帧中该标记点的周围进行搜索,如果依旧没有找到,则该点确定跟踪丢失。标记点跟踪丢失有两种可能,该标记点移出视野范围或者标记点因角度光线等问题导致识别不出。如果某帧的标记点跟踪匹配失败,即重投影校验失败,则需要启动辅助摄像头按照第一步同时获得共同视野内的标记点在两个摄像头图像中的二维坐标后,根据对极线约束原理得出这些标记点在仪器当前坐标系Oc下的坐标值,再与世界坐标系Ow下的标记点库中的标记点集合进行一一匹配从而重新得出当前仪器位置相对于世界坐标系Ow的RT矩阵。在得到仪器的位置信息后便可以关闭辅助摄像头,而只用工作摄像头来继续扫描。
第十一步,在获得仪器当前的RT转换矩阵后,利用工作摄像头拍摄的当前帧图像中提取激光轮廓线并根据已标定好的该摄像头与线状激光所发射激光面的位置关系,最后将获得激光轮廓扫描点在仪器坐标系Oc下的三维坐标通过仪器当前的RT矩阵转换为世界坐标系Ow下的三维坐标。