2. 西北大学 文化遗产数字化国家地方联合工程研究中心, 陕西 西安 710127
2. National-Local Joint Engineering Research Center of Cultural Heritage Digitization, Northwest University, Xi′an 710127, China
随着各个行业信息化程度的提高, 使用三维模型准确记录现实世界大规模场景表面几何和纹理形态的需求日趋迫切。传统的人工测量拍照并数字化建模的方法, 由于费时费力并且准确性, 已经很少被应用在大场景三维建模中; 20世纪80年代以来, 应用基于激光或相位技术的非接触式扫描设备对场景进行扫描, 采集场景三维点云并构建三维模型的方法得到了广泛的应用, 由于其建模结果精度高、速度快, 成为了目前场景建模最主流的方法[1]。但由于三维扫描设备成本高昂, 采集范围和空间受限, 采集效率低, 在大场景三维建模中的应用推广较为困难。2000年以来, 随着机器视觉研究的发展, 基于多视图的三维重建(Multi-view 3D reconstruction, MVR)方法为场景三维重建提供了新的途径[2-3]。该方法属于基于图像的建模[4](Image based modeling, IBM)技术中的一类方法, 通过单目或多目摄像机在多角度对建模对象主体拍摄形成图像或视频序列, 重建对象三维模型。该技术对设备要求低, 采集过程简单高效, 受到了广泛的关注和应用, 也成为机器视觉领域热点研究问题。针对大场景面积大, 表面几何结构复杂等特点, 庄晓明[5-6]等人提出使用无人机或者无人飞艇搭载照相机, 人工遥控飞行器对大场景表面采集多视角图像序列, 应用基于多视图的三维重建方法对场景三维几何模型进行重建。但在该类方法中, 飞行器起飞、飞行和悬停位置, 拍摄角度, 拍摄顺序等控制均由人工完成, 稳定性较差, 对数据采集者提出了非常高的要求, 严重影响了该技术的应用。
文中提出一种基于民用无人机的自动飞行和单目相机序列图像拍摄控制方法, 并应用从相机运动信息中恢复三维场景结构(Structure from motion, SFM)方法, 在地面站计算机中基于实时回传的序列图像进行三维建模, 实现自动化、低成本、实时的大场景三维重建。
1 无人机控制和三维建模基础理论 1.1 无人机系统文中采用的无人机系统为四旋翼民用无人机系统, 基本控制如文献[5]所述, 与其不同的是, 为了提高飞行器飞行的稳定性和图像采集的质量, 文中并未自行设计和组装无人机硬件部分, 而是选择了深圳市大疆创新科技有限公司(DJI)Phantom 3 Professional(P3P)作为基础的飞行平台, 其基本外观如图 1所示, 图 1(a)为正视图, 图 1(b)为45°顶视图。
![]() |
图 1 DJI Phantom 3 Professional Fig. 1 DJI Phantom 3 Professional |
基本性能参数包括[7]:垂直悬停精度:+/-0.1 m (超声波工作范围内), +/-0.5m;水平悬停精度:+/-1.5m;最大上升和下降速度:5m/s, 3m/s; 最大水平飞行速度:16m/s; 云台俯仰角:-90°至+30°; 影像传感器:1/2.3英寸CMOS, 有效像素1 240万, 含光学畸变校正; 提供有限开放大疆MobileSDK(DJI mobile software development kit, DMSDK)接口, 可通过遥控器USB接口连接和访问。P3P优秀的飞行性能和拍摄性能为文中自动控制和序列图像拍摄提供了良好的硬件条件, 同时, 有限开放的SDK提供了大量飞行和导航参数的读取, 以及基本飞行控制功能的接口也为文中自动控制系统的实现提供了有效的控制途径。P3P整体构成如图 2所示, 文中设计的数据采集和控制模块通过遥控器USB接口接入P3P飞行系统。
![]() |
图 2 DJI Phantom 3 Professional系统构成 Fig. 2 Framework of DJI Phantom 3 Professional |
多视图三维重建方法基于特定目标的序列图像重建, 是近年来机器视觉领域的研究热点, 出现了大量相关算法, 包括基于轮廓、亮度、纹理等特征的重建算法。文中应用SFM算法实现序列图像的稀疏三维重建, 其步骤是首先从未标定特征点的图像序列中检测特征点, 然后对不同图像中的特征点进行匹配, 并利用图像序列之间的几何约束计算出摄像机的运动参数和场景的基本结构, 实现场景的稀疏三维重建。早期研究中的SFM算法[8]需要人工对摄像机进行标定, 近年来, 相关研究[9]开始以未标定的图像序列为依据, 重建摄像机参数, 自动重建场景的三维模型。如图 3所示, 图 3(a)为原始图像序列, 图 3(b)为稀疏三维重建结果, 图 3(c)为表面重建结果。
![]() |
图 3 SFM算法三维重建 Fig. 3 3D reconstruction by SFM algorithm |
SFM算法的基本步骤为:
1) 计算相机内参矩阵。根据相机参数确定采集到的图像的焦距、分辨率、长度、宽度信息, 计算相机内参矩阵Intrinsic, 作为后续算法的基础。
2) 图像特征点提取与匹配。首先使用SIFT算法[10]提取序列图像中的特征点, 并生成特征点对尺度缩放、旋转、亮度变化无关的特征向量, 然后对对应特征点进行匹配。
3) 稀疏三维重建。将两幅几何位置相邻的特征点作为“种子”, 计算出这两幅图像点的三维信息, 然后根据所有图像之间的几何约束关系, 加入和这种子图像有联系的第三幅图像的信息, 并进行三角化重建。
4) 稠密三维重建。使用基于面片的多视角立体场景(Patch-based multi-view stereo, PMVS)算法[11], 扩散稀疏三维重建中的种子点, 并进行过滤处理, 将灰度一致性和几何一致性比较弱的点剔除, 得到稠密的点云模型。
5) 网格化和纹理映射。对稠密点云模型使用优化后的Delaunay算法[12]进行三角网格化, 之后会获得一个包含点与面信息的无纹理点云模型, 将之前获取的图片信息作为纹理信息进行映射, 最终得到一个包含纹理的目标三维模型。
2 系统整体设计文中基于无人机的大场景序列图像自动获取和三维建模系统的系统结构图如图 4所示。
![]() |
图 4 基于无人机的大场景序列图像自动采集和三维建模系统结构和模块 Fig. 4 Framework and modules of auto image sequence capturing and 3D modeling system based on UAV (Unmanned Aerial Vehicle) |
P3P通过2.4GHz无线信号连接遥控器, 实时检测并回传GPS、飞行高度、各桨转速、六轴姿态传感器状态等状态数据和图像传感器采集到的H.264裸码流[13], 同时接收来自遥控器的控制指令, 修改四桨旋转速度, 控制飞行姿态。遥控器接收来自飞行器回传的各类传感器状态数据和H.264裸码流, 同时可以给飞行器发送控制指令。嵌入式平台通过USB接口连接遥控器, 通过2.4GHz WIFI信号连接地面站计算机, 首先通过DMSDK提供的接口检测各类飞行状态数据[14], 监控飞行姿态, 采集H.264裸码流, 并回传姿态和H.264数据到地面站, 接受来自地面站的导航和控制指令, 通过SDK接口发送到遥控器并作用于飞行器。地面站计算机提供软件平台规划航线, 根据回传的状态数据控制飞行器按照航线设置飞行和拍摄, 并实时对回传的H.264裸码流解码并生成图像序列, 应用SFM算法实时进行三维重建, 并将重建结果渲染和显示。
3 飞行控制系统设计文中自动飞行控制系统主要功能包括3个方面。首先, 在地面站计算机上, 以地图为依据通过人工设置方式对拍摄航线进行规划, 同时设置关键航程点上相机云台俯仰角度和朝向参数; 其次, 根据飞行器上GPS和各类状态数据, 发出指令, 控制飞行器按照航程完成起飞、飞行和降落动作, 并不断检测飞行器状态, 出现紧急情况立即执行避险动作; 最后, 采集和回传飞行器拍摄的H.264图像码流到地面站计算机, 完成图像流解码, 生成拍摄的图像序列。由于大疆未开放机载飞控接口, 同时增大飞行器起飞重量会严重影响稳定性和滞空时间, 所以文未将自动飞行控制模块安装在飞行器上。
遥控器和飞行器之间采用2.4GHz无线信号通信, 遥控器接收来自飞行器回传的各类传感器状态数据和H.264裸码流, 并向飞行器发送控制指令。一般情况下, 控制指令都是根据使用者操作遥控器产生的, 文中为了提高飞行设备控制的安全性和质量, 降低实现难度, 所有控制指令都由地面站计算机产生并发送给飞行器。
Cortex-A17嵌入式平台采用了Firefly RK3288实验开发板, 通过USB电缆连接到遥控器, 主要功能包括4部分:①状态信息校验和控制模块遥控器USB接口和DMSDK提供的C++接口读取飞行器回传的飞行状态数据, 使用独立线程对高度attu、各桨转速R1-4和倾角da每秒10次进行比较, 如果数据超出特定阈值范围, 则直接通过遥控器提升转速到90%, 修正飞行器状态, 避免坠落, 该线程在所有模块中优先级最高。②飞行控制和接口模块负责将飞行器回传的GPS定位数据和其他姿态数据实时回传给地面站计算机, 同时接收地面站计算机发出的飞行控制指令, 通过DMSDK发送给遥控器。③ H.264图像裸码流采集模块接收飞行器拍摄的H.264裸码流, 通过通信模块发回地面站计算机, 由地面站计算机负责解码。④通信模块负责将采集到的GPS、飞行速度、高度等状态信息和H.264裸码流不间断地回传到地面站计算机, 同时接收来自地面站的控制指令并提交其他模块。
地面站计算机由硬件和软件两部分构成。其中硬件提供必要的计算、通信和显示功能, 主要配置为CPU:Intel i7-5500U, 内存:8GB, GPU:AMD HD7850G, 具备支持802.11n协议的无线网络连接模块。软件模块由5个主要模块构成, 工作流程如图 5所示。①通信模块, 通过2.4GHz无线信号连接到Cortex-A17嵌入式平台, 采用TCP/IP协议连接通信模块, 实时接收回传的GPS和其他状态数据和H.264裸码流数据, 并将地面站控制软件生成的飞行控制指令发出到Cortex-A17嵌入式平台。②基于地图的航线规划模块。首先应用高德地图[15]提供的地面扫描区域卫星正射图像地图, 通过人工点击交互方式, 规划拍摄航线和拍摄点, 如图 5(a)所示; 其次通过拍摄点序号范围批量设置云台朝向和俯仰角度, 如图 5(b)所示。③基于GIS和飞行状态的飞行控制模块, 接收来自通信模块的飞行器GPS、速度、高度等状态信息并反馈到用户界面上, 与设置好的航线和拍摄点进行比较, 将飞行器下一步飞行和拍摄指令通过通信模块发送到飞行器, 如图 5(c)所示。④ H.264裸码流解码模块。实时接收回传的H.264图像裸码流, 解码为1920×1080分辨率的序列图像并存储。⑤基于SFM的场景实时三维重建模块, 在指定好的存储位置读取解码后的序列图像, 不间断实现场景三维重建, 具体步骤见文中第四部分, 结果如图 5(d)所示。
![]() |
图 5 地面站计算机处理流程 Fig. 5 Processing steps of station computer |
1) 内参矩阵
SFM算法将数据从二维图像转换为三维点云信息, 需要获取相机的内参矩阵Intrinsic,
![]() |
其中, focalpix是相机的焦距, cx, cy是光心位置坐标, P3P相机的cx=1 728, cy=2 304。
2) 外参矩阵
我们一般使用世界坐标系来表示目标物体的坐标, 使用相机坐标系来表示图像上某个点的坐标, 要将真实世界上的一个点与相片中的一个像素联系起来, 需要对两者之间进行转换。
假设三维空间一点P到光心的垂直距离为s, P映射到相机相面的点为p, 坐标为x。世界坐标系与相机坐标系的相对旋转为R, 相对位移为T。则
![]() |
(1) |
其中, [R T]是3*4的矩阵, 称为外参矩阵。
3) 本征矩阵
假设同一相机在不同的角度拍摄一个点p, p到其中一个相面的距离为s1, 坐标为x1, 到另一个相面的距离为s2, 坐标为x2。相机坐标与世界坐标的变换关系分别为[R1 T1]与[R2 T2]。那么应有:
![]() |
(2) |
![]() |
(3) |
因为内参矩阵Intrinsic可逆, 所以有:
![]() |
(4) |
![]() |
(5) |
设Intrinsic-1x1的结果为x′1, Intrinsic-1x2的结果为x′2, 且由于世界坐标系原点的选取具有随意性, 假设本次运算中的世界坐标系与式(4)~(5)中的相机坐标系重合, 那么R1为单位矩阵, T1为0矩阵, 可进一步化简:
![]() |
(6) |
![]() |
(7) |
将式(6)代入式(7),
![]() |
(8) |
为了进一步化简式(8), 做x′2与T2的叉积T2×x′2, 式(8)的左右两边都对这个叉积做内积, 则
![]() |
(9) |
对式(9)进行整理, 最终可得
![]() |
(10) |
在式(10)中, (T2×R2)就是本征矩阵E, 它与空间点的坐标和映射到相面上的位置都没有关系。如果有足够多的两幅图像点的对应关系, 带入式(10), 即可求出本证矩阵E以及分解之后的旋转矩阵R与平移矩阵T。
4) 三角化重建
假设已知相机在不同两个位置的变换矩阵R和T, 同时也计算出了两个图像中对应的匹配点, 代入式(3)并作整理,
![]() |
(11) |
用x2对式(11)两边做叉积, 整理之后可得
![]() |
(12) |
将已知点代入, 可以求出方程中唯一的未知量X, 即点p在空间中的空间坐标。
4.2 提取相机内参矩阵根据P3P相机参数可得相机的感光耦合组件(Charge coupled device, CCD)的宽度信息。将以上获取信息代入式(13),
![]() |
(13) |
其中, focalpix是以像素表示焦距信息, focalmm是以mm为单位表示的焦距信息, 即相机参数中的焦距信息。wpix, hpix是以像素表示的图像的长宽信息。ccdwidthmm是相机感光组件的宽度信息, 以mm为单位。
4.3 特征点的提取和匹配使用SIFT提取图像特征点, SIFT算法会对每个特征点生成一个特征描述符, 使用Ratio Test方法, 即使用KNN算法寻找与该特征最匹配的2个特征, 若第一个特征的匹配距离与第二个特征的匹配距离之比小于某一阈值t, 就接受该匹配, 否则视为误匹配。文中选择的阈值t=0.6。根据匹配结果计算出拍摄图像的各个位置之间的关系, 其目的是通过几何约束关系去除完全无关的两幅图像之间的计算, 减少重建时的运算量。
将每对匹配点代入式(10), 可以对N对匹配成功的特征点代入方程, 最终求出本征矩阵E。
4.4 稀疏三维重建增量式三维重建是以迭代式的方法不断进行重建。初始计算是将两幅几何位置相邻的特征点作为“种子”, 计算出这两幅图像点的三维信息, 然后根据所有图像之间的几何约束关系加入和这种子图像有联系的第3幅图像, 再进行三角化重建, 作为新的种子, 迭代重复上述过程, 计算结果如图 6所示。
![]() |
图 6 三维重建结果 Fig. 6 Result of 3D reconstruction |
增量式重建每进行一次, 必然会引入误匹配的点, 每个迭代过程中误匹配的点都加入到了集合seed中, 作为下一次迭代的“种子”, 这样进行到最后会产生很大的误差。因此需要对产生的点云进行优化以缩减累计误差。
文中最大的误差就是反向投影误差, 需要优化相机的内参(焦距、光心等)和外参(旋转和平移)。设图像i的内参为Intrinsici, 外参是Ri和Ti, 点云中有一个点P, 该点在图像i中对应的坐标为p, 那么反向投影误差为
![]() |
其中,
算法输入:已经确定匹配的特征点和序列图像的几何关系; 输出:三维点云数据; 算法步骤如下:
Step 1 读取几何约束关系, 算出图G(G中节点node代表相片, 边e代表连线两端的节点有几何关系);
Step 2 在G中找出e相连的两个node, 将这两个node作为seed, 使用三角化重建法重建出三维点云。在G中删去该e, 在集合seed中加入这两个node;
Step 3 在G中找出集合seed延伸出去的边e, 找出所有e中max(匹配点/特征点总数)的e所连接的node;
Step 4 三角化方法计算该node的三维信息。并将该node加入集合seed中。优化产生的点云, 减小反向投影误差。
Step 5 从G中删除e, 如果还存在边e, 重复执行Step3。
4.5 稠密三维重建首先生成面片, 稀疏点云中每个点都有对应的相片与相机光心, 计算这些点到光心的距离并升序排列, 依次尝试生成面片, 直到成功为止。
按照距离大小生成的面片可能会有很大的误差, 因此设定面片的法向量与对应相机的光心的夹角要大于α, 即需要满足
![]() |
(14) |
其中, c(q)是面片q的中心点, n(q)是指向光心的单位向量, Ii是Im图像序列中对应图像, α是两者之间的夹角, oi是相机光心。
经过式(14)的筛选, 会得到一组面片Q, 现在要根据这些面片生成更多的面片, 面片生成算法流程如下, 结果如图 7所示。
![]() |
图 7 稠密重建后的点云模型 Fig. 7 Point cloud model after dense reconstruction |
算法输入:一组根据要求生成的面片Q; 输出:在Q的基础上扩展的面片集合Q′。
Step 1 从Q中删去q;
Step 2 对于每张包含q的图像中的每个点i, 生成一个新的面片q′, 将q′加入V(q);
Step 3 将V(q)代入式(14), 若满足筛选条件, 则将新面片q′加入集合Q′, 否则删除q′;
Step 4 若Q中还存在其他q, 重复执行Step1, 否则算法结束。
4.6 网格化和纹理映射将稠密重建后的离散点作为初始点集, 为了将点集连接成一定大小的三角面片, 并且分配相对合理, 使用优化后的Delaunay算法[12], 网格化结果如图 8所示, 纹理映射后结果如图 9所示。
![]() |
图 8 三角网格化后的三维模型 Fig. 8 3D model after Delaunay triangulation |
![]() |
图 9 包含纹理的三维模型 Fig. 9 3D model after texture mapping |
完成硬件环境的构建, 嵌入式平台中的算法使用C++实现, 地面站计算机算法模块用C#进行实现, 针对西安市长安区两所高校内的体育场和办公楼分别进行了自动序列图像采集和三维重建。图 10是体育场采集和三维重建, 图 11是办公楼采集和三维重建。图 10和11中(a)图为重建对象实景照片, (b)图为自动飞行控制系统控制飞机采集序列图像, (c)图为回传的序列图像集合, (d)图为三维重建结果。实验表明, 该文的系统和方法能够安全高效地实现基于无人机的大场景序列图像自动拍摄和三维重建。
![]() |
图 10 体育场序列图像采集和三维重建过程 Fig. 10 Sequence images capturing and 3D reconstruction of a stadium |
![]() |
图 11 办公楼序列图像采集和三维重建过程 Fig. 11 Sequence images capturing and 3D reconstruction of an office building |
针对基于无人机进行场景图像拍摄和三维重建存在的稳定性差、危险性高、专业性强等问题, 文中提出了一种基于无人机的大场景序列图像自动航拍控制和三维重建方法, 首先设计了基于Cortex-A17和DMSDK的无人机自动控制模块, 在地面站上通过人工点选的方式设计航线和拍摄位置, 地面站依据航线设置自动控制无人机飞行和拍摄, 并接收序列图像, 基于SFM方法实现实时自动重建大场景三维模型。实验结果表明, 文中方法能够稳定和高效地实现基于无人机的序列图像采集和三维重建, 相对于传统人工方法, 大幅度降低了大场景三维重建实现的成本和难度, 为大场景三维重建需求提供了有效的解决途径。如何进一步提高无人机航线规划的自动化和三维重建的精度是今后研究的重点。
[1] |
CHENG X J, ZHANG H F, XIE R. Study on 3D laser scanning modeling method for Large-Scale history building[C]//International Conference on Computer Application and System Modeling. IEEE, 2010.
|
[2] |
GRACIA L, SAEZ-BARONA S, CARRION D, et al. A System for Real-Time Multi-View 3D Reconstruction[C]//The Workshop on Database & Expert Systems Applications. IEEE Computer Society, 2010: 235-239.
|
[3] |
SCHÖNING J, HEIDEMANN G. Evaluation of Multi-view 3D Reconstruction Software[M]//Computer Analysis of Images and Patterns.Berlin: Springer International Publishing, 2015: 450-461.
|
[4] |
DEBEVEC P, MCMILLAN L. Image-based modeling, rendering, and lighting[J]. Computer Graphics & Applications, 2002, 22(2): 24-25. |
[5] |
庄晓明, 李涛, 付龙. 基于四旋翼无人机的单目建模系统[J]. 计算机技术与发展, 2016, 26(7): 104-108. |
[6] |
解斐斐.基于无人飞艇低空航测系统建筑物纹理获取与处理技术[D].武汉: 武汉大学, 2014.
|
[7] |
DJI, Phantom 3 Professional specification[EB/OL].(2015-05-26)[2016-09-10].http://wiki.dji.com/cn/index.php/Phantom_3_Professional.
|
[8] |
LONGUETHIGGINS H C. A computer algorithm for reconstructing a scene from two projections[J]. Nature, 1981, 293: 133-135. DOI:10.1038/293133a0 |
[9] |
SNAVELY N, SEITZ S M, SZELISKI R. Modeling the world from internet photo collections[J]. International Journal of Computer Vision, 2008, 80(2): 189-210. DOI:10.1007/s11263-007-0107-3 |
[10] |
蔺海峰, 马宇峰, 宋涛. 基于SIFT特征目标跟踪算法研究[J]. 自动化学报, 2010, 36(8): 1204-1208. |
[11] |
缪君, 储珺, 张桂梅, 等. 基于稀疏点云的多平面场景稠密重建[J]. 自动化学报, 2015, 41(4): 813-822. |
[12] |
HELLER M. Triangulation algorithms for adaptive terrain modeling[C]//International Symposium on Spatial Data Handling. 1990.
|
[13] |
RICHARDSON I E G. H.264 and MPEG-4 Video Compression:Video Coding for Next-generation Multimedia[M]. Hoboken: John Wiley & Sons, 2004.
|
[14] |
DJI, DJI Mobile SDK Documentation[EB/OL].(2015-05-26)[2016-09-10].http://developer.dji.com/mobile-sdk/documentation/introduction/index.html.
|
[15] |
高德地图[EB/OL].(2015-06-20)[2016-09-10].http://ditu.amap.com/.
|