据UCS(union of concerned scientists)数据库统计,截止2016年1月,已发射卫星中约36%的卫星为同步地球轨道卫星。同步地球轨道始终与地球保持相对静止,是一种珍贵的轨道资源,而其中仅有32%的卫星处于受控状态[1]。在轨服务通过补充燃料、轨道调整、ORU更换能够实现对失控卫星的维修,挽回经济损失,同时避免潜在的碰撞危险。
视觉位姿测量是空间机器人执行在轨服务的一个重要环节。失重条件下,空间机器人及目标卫星均处于自由运动状态,视觉伺服控制技术是保证机械臂系统成功捕获目标的关键技术[2]。双目立体视觉是指通过双目图像计算空间点在两幅图像中的视差,进而计算该点的三维坐标值。它无需合作靶标或对接传感器即可完成非合作目标的在轨服务任务,在机器人导航、三维测量及虚拟现实等领域具有较强的应用价值[3]。
计算机视觉系统的各项阈值一般很难适应外界条件的变化,比如光照、距离等条件。环境变化可能对结果产生不利的影响,这大大增加了空间环境下视觉伺服系统的设计与研发难度。利用计算机对实验环境进行仿真模拟,一方面能够降低系统的前期设计投入,另一方面还能加深对系统的整体认知。同时,可排除实际环境下因镜头畸变、安装工艺、电磁噪声等无关因素的干扰,得到理想状态下的相机成像结果。
OpenGL是一种三维图形标准库,也是一个高性能的图形开发软件包。它集成了曲面造型、图形变换、光照、材质等复杂的计算机图形学算法,能够生成虚拟场景下三维物体的仿真图像[4-7]。张祖勋等分析了OpenGL成像机制,并给出真实场景与模拟场景的成像对比[8]。苏国中等实现了静态单幅影像、立体像对的模拟以及运动目标轨迹和姿态模拟[9]。乔甜设计了两种成像实验方案, 对成像实验的结果进行精度分析,同时推导了基于相机基本运动的测量模型[10]。Yao等分析了基于OpenGL的汇聚双目投影模型及平行双目投影模型[11]。闫龙等讨论了虚拟成像过程中畸变的模拟[2]。张瀚等搭建了基于OpenGL的视觉伺服半物理仿真平台[12]。付国强等分析了双目视觉仿真系统的目标模拟器的实现方法,并针对三角帆板支架研究了捕获系统的视觉测量技术[13]。
本文搭建了基于OpenGL的模拟双目建模平台,能够直接得到相机的内外参数矩阵及位姿参数等信息,重点研究了成像过程中的坐标变换,可用于双目视觉伺服算法的校核。
1 相机成像原理 1.1 坐标系定义图 1描述了相机成像过程中常用的坐标系,物体坐标依次由模型系转换至世界系、摄像机系,并依据小孔成像原理转换至裁切系,经标准化后输出至屏幕系显示。
![]() |
图 1 相机成像示意图 Fig.1 The camera imaging mechanism |
图 1中Ob为模型系,坐标轴定义与模型相关,右手系;Ow为世界系,惯性坐标系,右手系;Oc为摄像机系,原点位于投影中心,x正半轴水平向右,y轴垂直向上,右手系;Os为裁切系,原点位于相机投影中心,x、y轴与Oc系同向,左手系;On为标准化系,由Oclip标准化所得,左手系;Ov为屏幕系,原点在图像窗口的左上角,x正半轴水平向右,y轴垂直向下,右手系。
假设空间点P在模型系及屏幕系下的坐标分别为pb与pv,两者之间的投影变换矩阵的定义为P=cMbbMv,其中,cMb称为内参数矩阵,bMv称为外参数矩阵,下面将分别对其进行推导。
1.2 外参数矩阵空间点由模型系变换至摄像机系的变换矩阵称为外参数矩阵,由模型矩阵及视图矩阵构成。模型矩阵将空间点从模型系变换至世界系,之后通过视图矩阵将其由世界系进一步变换至摄像机系。坐标变换表示为
$\left[ {\begin{array}{*{20}{c}} {{x_c}}\\ {{y_c}}\\ {{z_c}}\\ 1 \end{array}} \right] = {}^c{\mathit{\boldsymbol{M}}_w}{}^w{\mathit{\boldsymbol{M}}_b}\left[ {\begin{array}{*{20}{c}} {{x_b}}\\ {{y_b}}\\ {{z_b}}\\ 1 \end{array}} \right] = \left[ {\begin{array}{*{20}{c}} {{}^c{\mathit{\boldsymbol{R}}_b}}&{{}^c{\mathit{\boldsymbol{T}}_b}}\\ 0&1 \end{array}} \right]\left[ {\begin{array}{*{20}{c}} {{x_b}}\\ {{y_b}}\\ {{z_b}}\\ 1 \end{array}} \right]$ | (1) |
式中:cRb为3×3的单位矩阵,分别表示Ob系x、y、z轴方向的单位向量在Oc系下的投影;cTb表示Ob系原点在Oc系下的投影。
1.3 内参数矩阵内参数矩阵是指将空间点由摄像机系变换至屏幕系的变换矩阵,由裁切矩阵,透视矩阵及视口矩阵构成。裁切矩阵根据小孔成像原理将空间视锥体变换至一个等价的正方体;透视矩阵通过透视变换将该正方体标准化;视口矩阵进一步将空间点由标准正方体中映射至屏幕输出显示:
$\left[ {\begin{array}{*{20}{c}} {{x_v}}\\ {{y_v}}\\ {{z_v}} \end{array}} \right] = {}^v{\mathit{\boldsymbol{M}}_s}\left[ {\begin{array}{*{20}{c}} {{x_n}}\\ {{y_n}}\\ {{z_n}}\\ 1 \end{array}} \right] = {}^v{\mathit{\boldsymbol{M}}_s}{}^s{\mathit{\boldsymbol{M}}_p}{}^p{\mathit{\boldsymbol{M}}_c}\left[ {\begin{array}{*{20}{c}} {{x_c}}\\ {{y_c}}\\ {{z_c}}\\ 1 \end{array}} \right]$ | (2) |
首先介绍由标准化系映射至窗口坐标输出的视口矩阵:
${}^v{\mathit{\boldsymbol{M}}_s} = \left[ {\begin{array}{*{20}{c}} {\frac{W}{2}}&0&0&{\frac{W}{2} + X}\\ 0&{ - \frac{H}{2}}&0&{\frac{H}{2} + Y}\\ 0&0&{\frac{{{Z_{\max }} - {Z_{\min }}}}{2}}&{\frac{{{Z_{\max }} + {Z_{\min }}}}{2}} \end{array}} \right]$ | (3) |
式中:H、W分别代表图像的长宽,Zmax、Zmin分别代表设定的最大与最小深度值,X、Y分别代表绘图区域的左上角坐标。
由裁切矩阵及透视矩阵组成的齐次投影矩阵,其定义:
${}^s{\mathit{\boldsymbol{M}}_c} = {}^s{\mathit{\boldsymbol{M}}_p}{}^p{\mathit{\boldsymbol{M}}_c}$ | (4) |
肉眼或相机所能看到的最大视场空间称为视椎体。如图 2所示,齐次投影矩阵根据小孔成像原理将空间视椎体变换为一个标准化正方体,其中n、f分别代表近平面与远平面至投影中心的距离。
![]() |
图 2 齐次投影矩阵坐标变换 Fig.2 Transformation between frustum and cube |
由投影定理及远近平面的投影关系可求得透视投影矩阵:
${}^p{\mathit{\boldsymbol{M}}_c} = \left[ {\begin{array}{*{20}{c}} {\frac{{2n}}{{r - l}}}&0&{\frac{{r + l}}{{r - l}}}&0\\ 0&{\frac{{2n}}{{t - b}}}&{\frac{{t + b}}{{t - b}}}&0\\ 0&0&{\frac{{ - f - n}}{{f - n}}}&{\frac{{ - 2fn}}{{f - n}}}\\ 0&0&{ - 1}&0 \end{array}} \right]$ | (5) |
进一步,pn可通过透视矩阵sMp转换为ps:
${}^s{\mathit{\boldsymbol{M}}_p} = {\rm{diag}}\left( { - 1/{z_c}, - 1/{z_c}, - 1/{z_c}, - 1/{z_c}} \right)$ | (6) |
模拟双目建模的程序流程图如图 3所示,主要包含绘图、坐标转换及鼠标回调三大模块。
![]() |
图 3 模拟双目建模平台流程 Fig.3 The flow chart of simulated binocular camera system |
绘图模块在已知三维物体模型及其坐标的前提下,绘制输出该物体的模拟双目图像,其流程图如图 4所示。
![]() |
图 4 绘图子程序 Fig.4 The subroutine of plot function |
如图 5所示,坐标转换模块为该模拟双目建模平台的核心模块,通过读取双目相机的成像与位姿参数,结合三维模型的当前位姿信息,计算得到相机成像的内外参数矩阵。
![]() |
图 5 坐标转换子程序 Fig.5 The subroutine of coordinate transformation |
鼠标回调模块流程图如图 6所示,其主要功能为实现鼠标与全局相机之间的交互。全局相机的移动不影响双目相机的成像输出,只是通过移动全局相机使得双目成像模型观察起来更加方便。
![]() |
图 6 鼠标回调子程序 Fig.6 The subroutine of mouse interaction |
模拟双目建模平台通过对三维物体在不同方向上进行投影来生成其不同位姿下的仿真图像,其成像原理与真实相机成像在本质上具有一致性。
模拟双目建模平台的程序界面如图 7所示。通过设定双目相机的参数来求解相应的投影矩阵,进而模拟双目成像并输出显示。鼠标交互实现了对空间视锥体的细节观察。此外,程序还实现了相机运动的仿真,对于视觉伺服有着重要的应用意义。
![]() |
图 7 模拟双目建模程序界面 Fig.7 The GUI of simulated binocular camera system |
以上建立了基于OpenGL的模拟双目建模平台,实现了对三维物体的模拟双目成像。下面将通过棋盘标定算法来验证该建模平台的准确性,将棋盘模型导入模拟双目建模平台,设定相机参数,并不断调整棋盘与相机之间的相对位姿得到姿态各异的棋盘图像。
为了得到较好的棋盘检测结果,棋盘平面与相机平面的夹角应小于45°,同时应尽可能多的拍摄不同方位的棋盘图像,需要注意的是平行拍摄并不增加有效信息。
对生成的模拟图像进行棋盘标定求解相机参数,将得到的参数与模拟双目平台设定的参数进行对比,进而验证模型的准确性。
相机标定程序得流程图如图 8所示,首先对输入的双目棋盘图进行角点检测,获取每幅图像中的所有角点的图像坐标。对角点坐标进行重投影,获取其重投影误差,排除不符合拍摄要求及检测失败的图像。最后,对双目相机进行立体重建,得到双目相机间的相对位姿转移矩阵。双目相机的立体重建结果如图 9所示,右侧为双目相机的空间位置,左侧为不同位置下的棋盘平面。
![]() |
图 8 棋盘标定算法流程 Fig.8 The flow chart of camera calibration |
![]() |
图 9 双目相机的三维重建 Fig.9 The stereo reconstruction of the binocular cameras |
重投影误差是指投影的点(理论值)与图像上的测量点的误差,是评定相机标定结果的重要指标。标定板投影变换后得到的理论像素点与经过畸变矫正后的检测点之间的欧氏距离即表示重投影误差。如图 10所示,模拟棋盘图像的最大重投影误差不超过1像素。
![]() |
图 10 双目相机的重投影误差 Fig.10 The reprojection error of the binocular cameras |
棋盘标定后能够得到左右相机的焦距、主点等相机参数,同时也可获得双目相机间的相对位姿变换矩阵。将标定结果与模拟双目建模平台的设定数值对比以验证算法的正确性。
模拟双目建模平台下设定的虚拟双目相机参数为
$\left\{ \begin{array}{l} {\mathit{\boldsymbol{M}}_{pl}} = {\mathit{\boldsymbol{M}}_{pr}} = \left[ {\begin{array}{*{20}{c}} {478.345}&0&{276.5}\\ 0&{478.345}&{276.5}\\ 0&0&{1.0} \end{array}} \right]\\ \mathit{\boldsymbol{R}} = \left[ {\begin{array}{*{20}{c}} 1&0&0\\ 0&1&0\\ 0&0&1 \end{array}} \right]\\ \mathit{\boldsymbol{T}} = \left[ {\begin{array}{*{20}{c}} { - 300}\\ 0\\ 0 \end{array}} \right] \end{array} \right.$ | (7) |
棋盘标定算法给出的标定结果如下:
$\left\{ \begin{array}{l} {{\mathit{\boldsymbol{M'}}}_{pl}} = \left[ {\begin{array}{*{20}{c}} {482.25}&0&{284.25}\\ 0&{486.56}&{277.30}\\ 0&0&{1.0} \end{array}} \right]\\ {{\mathit{\boldsymbol{M'}}}_{pr}} = \left[ {\begin{array}{*{20}{c}} {483.80}&0&{277.49}\\ 0&{488.70}&{277.01}\\ 0&0&{1.0} \end{array}} \right]\\ \mathit{\boldsymbol{R' = }}\left[ {\begin{array}{*{20}{c}} {1.00}&0&{ - 0.02}\\ 0&1&0\\ {0.02}&0&1 \end{array}} \right]\\ T' = \left[ {\begin{array}{*{20}{c}} { - 302.85}\\ {0.46}\\ {7.77} \end{array}} \right] \end{array} \right.$ | (8) |
利用向量夹角法评判模拟双目建模平台的相对精度为S=99.97%,模拟双目建模平台的可靠性得到了验证。
需要注意的是,OpenGL并未提供相机畸变参数的设置,模拟双目建模平台得到的图像为理想情况下无畸变图像[14-16]。
至此,完成了模拟双目建模平台的搭建与验证,该平台能够生成不同环境下的双目图像对,进而模拟太空环境下自旋非合作目标的运动。
4 模拟双目建模平台的应用本文给出基于稀疏点(卫星基座边缘角点)匹配的立体重建算法,程序界面如图 11所示,通过读入左右图像序列,选取卫星基座轮廓的边缘点作为角点特征,进而得到相应视差,利用双目相机标定参数得到反投影矩阵,进一步计算得到四个角点在左相机系下的空间坐标,最终得到关于卫星基座的位姿参数。
![]() |
图 11 立体重建示意图 Fig.11 The stereo reconstruction of the simulated satellite |
模拟双目建模平台中,卫星基座的位姿参数为
$\left\{ \begin{array}{l} \mathit{\boldsymbol{T = }}{\left[ {\begin{array}{*{20}{c}} {207}&{ - 9}&{1602} \end{array}} \right]^{\rm{T}}}\\ \mathit{\boldsymbol{R = }}{\left[ {\begin{array}{*{20}{c}} {0.172}&{0.05}&{0.98} \end{array}} \right]^{\rm{T}}} \end{array} \right.$ |
模拟卫星基座双目图像计算得到的位姿数据如图 10右上方所示,为观察方便,图中的角度数据为其对应余角的角度制表示。
$\left\{ \begin{array}{l} \mathit{\boldsymbol{T' = }}{\left[ {\begin{array}{*{20}{c}} {210.4}&{ - 108.5}&{1556.6} \end{array}} \right]^{\rm{T}}}\\ \mathit{\boldsymbol{R' = }}{\left[ {\begin{array}{*{20}{c}} {0.172}&{0.05}&{0.98} \end{array}} \right]^{\rm{T}}} \end{array} \right.$ |
同样利用向量夹角法评判立体重建算法的相对精度为S=99.86%,进一步证明了模拟建模平台的正确性,同时,在此基础上能够继续开发各种视觉伺服控制算法,调试简单,易于编程。
5 结论1) 本文搭建了基于OpenGL的模拟双目建模平台并通过棋盘标定验证了该平台的准确性,相对精度为S=99.97%。
2) 相比于OpenGL在三维仿真中的应用,本文侧重研究图像成像过程中的坐标变换,主要针对于双目视觉伺服算法精度的校核。
3) 该平台能够生成虚拟环境下的仿真图像,既能提高实验研究的效率,降低系统的设计投入,还可以排除实际环境中的干扰因素。
相比于真实相机成像,本文并未实现相机畸变的模拟,后续研究中可进一步对图像进行重映射来完善对真实图像的仿真。
[1] |
XU Wenfu, LIANG Bin, LI Bing, et al. A universal on-orbit servicing system used in the geostationary orbit[J]. Advances in space research, 2011, 48(1): 95-119. DOI:10.1016/j.asr.2011.02.012 (![]() |
[2] |
闫龙, 华臻, 陈成军, 等. 摄影测量系统仿真及验证技术研究[J]. 系统仿真学报, 2013, 25(6): 1231-1240. YAN Long, HUA Zhen, CHEN Chengjun, et al. Research on simulation and verification technologies of photogrammetry system[J]. Journal of system simulation, 2013, 25(6): 1231-1240. ( ![]() |
[3] |
刘阳. 面向非合作目标的空间机器人双目视觉伺服研究[D]. 哈尔滨: 哈尔滨工业大学, 2015. LIU Yang. Binocular vision system of space robot for non-cooperative target [D]. Harbin:Harbin Institute of Technology, 2015. http://cdmd.cnki.com.cn/Article/CDMD-10213-1015982387.htm ( ![]() |
[4] |
卞泳锋, 张兴周, 韩亮. 基于OpenGL的空战三维可视化仿真系统[J]. 应用科技, 2007, 34(11): 46-50. BIAN Yongfeng, ZHANG Xingzhou, HAN Liang. 3D visualized simulation system for air fight based on OpenGL[J]. Applied science and technology, 2007, 34(11): 46-50. DOI:10.3969/j.issn.1009-671X.2007.11.013 ( ![]() |
[5] |
宁猛, 张林波, 荣天琪. 野外地形电磁环境仿真可视化研究[J]. 应用科技, 2014, 41(3): 15-19. NING Meng, ZHANG Linbo, RONG Tianqi. Research on visualization of electromagnetic environment simulation for wild terrain[J]. Applied science and technology, 2014, 41(3): 15-19. ( ![]() |
[6] |
卢志忠, 陈健, 上官伟. 基于空间的卫星云图三维可视化仿真技术研究[J]. 应用科技, 2008, 35(3): 65-69. LU Zhizhong, CHEN Jian, SHANG Guanwei. 3-D visualization simulation technology of spatial-based satellite cloud image[J]. Applied science and technology, 2008, 35(3): 65-69. ( ![]() |
[7] |
SONG Zhiming, KANG Fengju, TANG Kai, et al. Seabed scene simulation and its realization in extending Vega[J]. Journal of marine science and appliaction, 2003, 2(2): 40-45. DOI:10.1007/BF02918662 (![]() |
[8] |
张祖勋, 苏国中, 郑顺义, 等. OpenGL成像机理及其与摄影测量方位元素的相关分析[J]. 武汉大学学报, 2004, 29(7): 570-574. ZHANG Zuxun, SU Guozhong, ZHENG Shunyi, et al. Relating OpenGL imaging process with exterior and interior parameters of photogrammetry[J]. Geomatics and Information Science of Wuhan University, 2004, 29(7): 570-574. ( ![]() |
[9] |
苏国中, 郑顺义, 张剑清, 等. OpenGL模拟摄影测量方法研究[J]. 中国图象图形学报, 2006, 11(4): 540-544. SU Guozhong, ZHENG Shunyi, ZHANG Jianqing, et al. How to relate the OpenGL imaging process with exterior and interior parameters of photogrammetry[J]. Journal of image and graphics, 2006, 11(4): 540-544. DOI:10.11834/jig.20060489 ( ![]() |
[10] |
乔甜. 基于摄像机运动的测量模型及仿真建模研究[D]. 青岛: 青岛大学, 2007: 5-42. QIAO Tian. Research on the motion of camera measurement model [D]. Qingdao:Qingdao University, 2007:5-42. http://d.wanfangdata.com.cn/Thesis/Y1096810 ( ![]() |
[11] |
YAO Xiaoyong, WU Pingdong. Study on methods for synthesizing binocular stereoscopic images[C]//International Conference on Electrical and Control Engineering. 2011:6127-6130.
(![]() |
[12] |
张瀚, 徐科军, 赵明, 等. 机器人视觉伺服控制半物理仿真系统的研制[J]. 系统仿真学报, 2008, 20(1): 68-69. ZHANG Han, XU Kejun, ZHAO Ming, et al. Development of semi-physical simulation system for vision servo control of robot[J]. Journal of system simulation, 2008, 20(1): 68-69. ( ![]() |
[13] |
付国强, 黄攀峰, 陈凯, 等. 基于双目视觉的伺服控制半物理仿真系统设计[J]. 计算机测量与控制, 2009, 17(12): 2494-2496. FU Guoqiang, HUANG Panfeng, CHEN Kai, et al. Design of semi-physical simulation system for binocular vision servo control[J]. Computer measurement & control, 2009, 17(12): 2494-2496. ( ![]() |
[14] |
赵汝明. 虚拟场景成像技术的研究[D]. 青岛: 青岛大学, 2006: 23-27. ZHAO Ruming. Research on virtual scene imaging [D]. Qingdao:Qingdao University, 2006:23-27. ( ![]() |
[15] |
LU Yang. Efficient simulation of lens distortion in OpenGL[J]. Computer science & software engineering, 2008, 4(1): 15-26. (![]() |
[16] |
赵羲, 马东洋, 刘毅锟, 等. 基于GPU的小行星实时成像模拟[J]. 系统仿真学报, 2009, 21(1): 111-112. ZHAO Xi, MA Dongyang, LIU Yikun, et al. Real-time imaging simulation of asteroid based GPU[J]. Journal of system simulation, 2009, 21(1): 111-112. ( ![]() |