消费级无人机怎么做三维建模和正射影像
带着 Mini 4 Pro 飞了一上午,几百张照片堆在 SD 卡里,接下来想要的可能是一张能贴进 AutoCAD 的正射底图,或是一个能转着看的三维模型。但打开任何一款航线规划应用,扑面而来的「重叠度」「云台角度」「GSD」「像控点」一堆词,劝退一半人。
这篇文章只讲一件事——消费级无人机做这件事的原理是什么、能做到什么程度、关键参数为什么是那个数。读完之后,你看任何航线规划软件都能立刻看懂在干嘛,自己想手搓一个也能搓。
文章只覆盖「按下快门之前」的全部内容。后期处理(空三、稠密匹配、出图)是另一篇文章的事,不在这里展开。
主线案例机型是 DJI Mini 4 Pro——250 g 以下、单摄、24mm 等效焦距,消费级里最干净的样本。横向对比会涉及 Mini 5 Pro、Air 3/3S、Mavic 3 系列、Mavic 4 Pro。
使用边界
消费级无人机能不能做这件事?能。但能做到什么程度,要先把话说清楚。
适合用消费级方案的场景:
- 给设计方案做现状底图
- 自媒体里展示某栋老建筑、某片景区
- 课堂或讲座上演示一个三维场景
- 工地、园区、校园、村落的内部留档
- 工程前期的「先看一眼」
- 毕业设计、课题作业、个人项目
不适合的场景:
- 测绘院出图、不动产确权、报建审图
- 文物保护级精模型(亚厘米精度)
- 体量计算要承担法律责任的工程量复核
- 公路、铁路、水利等行业的设计阶段成果
后面这一类要的不只是更高精度,更需要机载 RTK、可信赖的位置元数据、有资质的测绘流程。Mini、Air、Mavic 3 这类消费级机型在硬件上就不具备这些条件——出来的数字看起来还行,合规上也站不住。这条线划清楚,后面的技术取舍才有意义:精度不够其实不是问题,够用才是问题。
国内还有一条合规线值得一提:起飞重量 250 g。Mini 系列卡在 249 g,设计意图就是规避这条线带来的实名登记、空域申请等流程。商用、营利、公共空域等场景另有规定;但日常自用、内部参考、教学演示这类小范围使用,Mini 4 Pro 这种机型的限制是最少的。
还有一条比合规更硬的边界:无人机必须支持航点飞行(Waypoint Flight,按预设路径自主飞行并触发拍照)。航线规划工具生成的就是一串航点,没有这个功能整套规划就用不上。
大疆消费级里支持航点飞行的就是后文对照表里那八款(Mini 4 Pro、Mini 5 Pro、Air 3、Air 3S、Mavic 3 / 3 Classic / 3 Pro、Mavic 4 Pro)。其余型号(Mini 2/3、Spark、Phantom 1–3、早期 Mavic Pro/Air、Mavic 2 系列等)只能手动飞 + 定时拍照——重叠度、航向、云台姿态全部不可控,效率低、风险高,建议直接换机型,或上 Mavic 3E/3T、Phantom 4 RTK 这类行业机。
摄影测量在做什么
有一个比喻很贴切:摄影测量就是让电脑玩反向找茬。
正常的找茬游戏是「这两张图有什么不同」,摄影测量是反过来——「这一堆照片里,哪些点是同一个点」。把这件事做到极致,就能反推出每张照片是从哪儿拍的、被拍的物体长什么样。
整个过程拆成三个阶段:找同名点 → 算相机位置 → 重建表面。

找同名点
电脑在不同照片里找「这是同一个点」。一棵树的某个枝丫、一栋楼的某个墙角、一块石头上的某个纹理——只要在两张以上的照片里都能被识别,就是一个同名点。
这一步对照片有三个隐含要求,后面所有航线参数都来自这三条:
- 必须有纹理——纯白墙、平静水面、反光玻璃,电脑找不到任何特征点,这些区域注定是「无法重建」的黑洞
- 同一个点要在足够多的照片里出现——至少两张才能定位,实际工程要三张以上才稳。这就是「重叠度」的由来
- 不同照片看这个点的角度要适中——太相近,深度信息出不来;太大,同一个点在两张照片里长得不像了,匹配不上
算相机位置
有了同名点之后,电脑反过来推算每张照片是从哪个位置、以什么姿态拍的。这一步叫空中三角测量(Aerotriangulation),简称空三。
可以这么理解:每个同名点在每张照片上的像素坐标已知,相机的内参(焦距、传感器尺寸、畸变)也大致已知,剩下的未知数就是相机的位置 (X, Y, Z) 和姿态(三个旋转角)。同名点足够多的时候,方程组就能解出来——每张照片对应的相机位姿被反推出来。
这一步的产物叫稀疏点云,就是那些同名点的三维坐标。看起来像那么回事,但还远不是模型。
重建表面
知道了每张照片的精确位姿,就能把照片之间所有可能的对应关系展开,生成密集的三维点(稠密点云)、连成三角网(TIN 网格)、再把照片像素贴回去(纹理映射)。这就是最终的三维模型。
正射影像(DOM)和数字表面模型(DSM)是同一套数据的两个产品:DSM 是表面的高程,DOM 是把所有照片正交投影到这个表面上的镶嵌图。
四种「电脑搞不定」的物体
理解了上面三步之后,这四类东西为什么不能建模就一目了然:
- 透明物体(玻璃、水):光穿过去,电脑看到的纹理在物体后面,几何关系全错
- 强反光物体(镜面、金属、湿地面):看到的「纹理」其实是周围环境的倒影,角度一变内容就变,匹配不上
- 无纹理表面(纯白墙、单色屋顶、新铺沥青):没有特征点可找
- 运动物体(行人、车辆、树叶):同一个点的三维位置在不同照片里不一样,违反「场景静止」假设
实际飞行中遇到这些情况,要么靠后期蒙版掩盖,要么靠航线设计绕开,要么接受局部空洞——没有第四种解法。
必须先认识的几个名词
- GSD(Ground Sample Distance)——地面采样距离。照片上一个像素对应到地面有多大,比如 GSD = 2 cm/像素
- 相对精度——模型内部点与点之间的距离精度。A、B 真实距离 10 m,模型上量出来 10.05 m,误差 5 cm
- 绝对精度——模型上某点的坐标和真实地理坐标的差距。模型经过地理参考(用 GPS 或像控点对齐到真实坐标系)后才有意义
- 像控点(GCP, Ground Control Point)——地面上摆放的、用专业仪器测过精确坐标的标记物。让电脑在空三阶段把模型对齐到真实坐标系,从而获得绝对精度
消费级无人机自带的 GPS 定位精度大约 1–2 米。不打像控点的话,做出来的模型在内部尺寸上可以很准(相对精度好),但整体在地球上的位置可能偏出去几米——自媒体展示无所谓,工程参考可能就是大问题。
关键公式
整个航线规划的核心公式只有两个,搞懂它们等于搞懂了所有航线工具背后的算法。
GSD 公式
其中:
R——GSD,地面采样距离,m/像素Ls——传感器长边的物理尺寸,mmD——相机到被摄物体的距离,垂直拍摄时就是飞行高度H,mf——真实焦距(注意不是等效焦距),mmL——照片长边的像素数
公式拆开看,意思是「传感器上一个像素对应到地面有多大」。传感器越大、距离越近、焦距越长、像素越多,GSD 越小,也就是越精细。

真实焦距 vs 等效焦距
消费级无人机的官方参数表里写的都是等效焦距(35mm 等效),为的是让用户有直观感受——24mm 等效就是「广角」、70mm 等效就是「中焦」。但 GSD 公式里要用的是真实焦距。
换算关系:
43.27 是 35mm 全画幅传感器的对角线长度(36 × 24 mm 算出来的)。
代入 Mini 4 Pro:传感器 9.6 × 7.2 mm,对角线 12.0 mm,等效焦距 24 mm。真实焦距 ≈ 24 × 12.0 / 43.27 ≈ 6.7 mm。
后面的所有计算都用真实焦距。
用 Mini 4 Pro 走一遍
带入 Mini 4 Pro 的硬件参数(Ls = 9.6 mm,f = 6.7 mm,L = 8064 像素),不同飞行高度下的 GSD:
| 飞行高度 | GSD |
|---|---|
| 50 m | 0.89 cm/像素 |
| 80 m | 1.43 cm/像素 |
| 100 m | 1.79 cm/像素 |
| 120 m | 2.14 cm/像素 |
GSD 和飞行高度成正比——飞得越低越精细,但每张照片覆盖的地面也越小,要拍的张数(以及电池消耗)成倍增加。这就是航线规划永远要面对的取舍。
模型精度公式
P 是空三之后模型的相对位置精度。这个「3 倍」是 Bentley 给出的经验系数,在结构稳定、纹理良好、像控点充足的理想条件下大致成立。
换句话说,GSD 2 cm/像素的模型,实际能用的相对精度大概在 6 cm。这个「能用」意味着:你可以在模型上量两个点之间的距离,误差期望在 6 cm 上下;再细的尺寸(比如 2 cm 的细节)在模型上虽然看得见,但量出来的数字不可靠。
任何航线规划工具的「输入飞行高度 → 估算 GSD」或反过来「输入期望 GSD → 推荐高度」都是这个公式的两种用法,工具内部知道你选的机型的 Ls、f、L,只剩 H 一个变量。明白这一点之后,「为什么是这个数」就不会让你困惑。
重叠度的逻辑
「纵向 80%、旁向 60%」是网上每篇航测文章都会出现的数字。但很少有人解释为什么是这两个数,而不是 70%/50% 或 90%/70%。

两种重叠
- 纵向重叠(Forward overlap)——同一条航线上前后两张照片之间的重叠
- 旁向重叠(Side overlap)——相邻两条航线之间、相对位置上两张照片的重叠
80% 是怎么来的
回到「找同名点」那一步——一个地面点至少要在 3 张照片里出现,空三才稳定。只在 2 张里出现的话,几何上虽然能解,但抗噪能力差,稍有匹配误差就会出现明显畸变。
在一条直线航线上,「同一个点出现在 3 张连续照片里」相当于要求重叠度至少 2/3 ≈ 66.7%。预留余量、考虑无人机飞行误差、姿态抖动等实际因素,工程上把纵向重叠定到 80%——每张照片有 80% 的内容和前一张重合,只露出 20% 的新内容。这样即便实际飞行有偏差,也能稳稳保证 3 张以上的覆盖。
旁向重叠的逻辑更宽松一些,因为航带之间的几何关系本来就比航线内的连续帧弱。要求一个点在相邻航带的至少 2 张照片里出现,加上余量,定到 60% 是经验值。
倾斜飞行的重叠度
倾斜航线情况复杂一些。云台带角度后,照片在地面的投影是梯形而不是矩形,而且不同方向倾斜的照片之间还要互相重叠,经验上略低于纯垂直:
- 纯正射(只飞 nadir):纵向 80% / 旁向 60%
- 倾斜建模:纵向 70% / 旁向 60% 是常见档位
- 单体建筑环绕:两张相邻照片夹角 ≤ 15°(下面环绕航线那节细讲)
重叠度不是死规定
理解了上面的逻辑之后会发现:重叠度的本质是「同名点要在足够多的照片里出现」的几何下限。所以在以下情况可以适度调整:
- 测区纹理特别复杂、特征点丰富(建筑密集的城市、带细节的工地)→ 重叠度可以略低
- 测区纹理稀疏(草地、沙地、单色屋顶)→ 重叠度要拉高,80%/70% 起步
- 单架次电池吃紧 → 优先保纵向重叠,旁向重叠适度降低
也就是说,重叠度是「经验下限 + 场景调节」的参数,不是必须严格 80%/60%。
五种航线模式
打开任何一款航线规划应用——无论是 7fly.top、fly.bzao.cn、dji.blans.top 这类网页工具,还是大疆 Pilot、Litchi、DroneLink 这类客户端——主菜单几乎都是这五类:

- 单条航线(等距航点)
- 航带航线(多条航线)
- 面状航线(正射大图)
- 倾斜航线(三维建模)
- 环绕航线(独栋建模)
这不是哪一家工具的设计选择,而是行业已经收敛出来的标准分类。每一种对应一种几何形状的目标,以及一套不同的几何规则。
单条航线:线状目标
最基础的形态。给定一串航点,无人机依次飞过,每个航点(或按距离间隔)触发一次拍照。云台角度可以在每个航点单独设置。
适用场景:
- 道路、河流、管线、堤坝等线状目标的连续记录
- 巡检任务,只关心特定几个点
- 补拍——主航线飞完之后发现某区域漏拍
几何要点:航点间距由 GSD 和纵向重叠度决定。已知 GSD R、像素长边 L、纵向重叠度 p:
代入 Mini 4 Pro、80m 飞行、80% 重叠:Δ = 0.0143 × 8064 × 0.2 ≈ 23 米。每飞 23 米触发一次快门。
线状目标如果有弯曲(比如河道转弯),单条航线会出现内侧重叠不够、外侧过度重叠——加密航点或改用航带航线。
航带航线:窄带状区域
把单条航线扩展成多条平行的航线,组成一片带状覆盖。每条航线之间按旁向重叠度间距排列。
适用场景:
- 长条形的测区(沿河带、公路两侧、铁路走廊)
- 单方向的覆盖(只关心从一个角度拍到的样子)
航带间距由旁向重叠度决定。已知 GSD、像素短边 l、旁向重叠度 q:
代入 Mini 4 Pro、80m 飞行、60% 重叠:Δ = 0.0143 × 6048 × 0.4 ≈ 35 米。
航带航线只有一个方向的飞行,而面状航线是双向(井字)的。后者建模质量高很多。
面状航线:正射大图
整个测区被规划成「井」字形的航线网格——一组航带沿主方向飞行,再叠加一组沿垂直方向飞行,云台始终保持垂直向下(nadir)。

这是正射影像和 DSM 生产的主流方案,也是大多数航线工具的默认模式。
适用场景:
- 大面积、相对平坦地形的正射影像生产
- 数字表面模型
- 所有需要俯视图的场景:农田、园区、工地、采石场
重叠度建议:纵向 80% / 旁向 60%,标配。
致命的坑:弯曲效应
只飞纯垂直航线、只沿单一方向、地面相对平坦——这三个条件同时满足时,空三阶段计算径向畸变会陷入「歧义解」,最终模型整体呈现一个碗状或船底状的弯曲,平的地面变成弧面。

这不是某个软件的 bug,而是所有 SfM(Structure from Motion)算法共有的几何病态。
三种解法:
- 加双向飞行(井字而非单向)——最简单,所以面状航线默认就是井字
- 加少量倾斜照片——在主航线之外,加几条 30° 倾斜的辅助航线,打破单一姿态
- 预先标定相机——在简单环境下先标定好镜头畸变参数,后面航线直接复用,不再让空三去解算畸变
消费级机型几乎都属于「非测绘相机」,镜头畸变参数会随温度、时间、磕碰发生漂移,预标定的有效期不长。每次重要任务前重新标定一次是稳妥做法。
倾斜航线:三维建模
要做真正的三维模型(包括建筑立面、复杂地形的侧面),光有垂直照片不够。垂直照片对水平地面采样充分,但对垂直墙面只能看到一条边——墙面的纹理和几何完全没有进入数据。
倾斜航线就是为了补上这一块。

同一栋建筑、同一台无人机、同一份后处理,左边是倾斜+垂直组合,右边只飞了垂直。右图的建筑立面几乎不存在,窗户、阳台、檐口都被压成模糊的纹理面。
行业级的经典做法是五向飞行——一颗垂直主摄 + 四颗 45° 倾斜的相机同时拍,一次飞行完事。但消费级无人机只有一颗云台、一颗镜头,五向必须飞五次:1 架次垂直 + 4 架次分别朝前后左右。

上图是马赛某次航测任务的相机位置——每一组紧密排列的相机阵列就是五向系统某一瞬间同时触发的五颗相机。整片密密麻麻的覆盖看似夸张,正是行业级一次飞行覆盖一座城区的代价。
这对消费级是几乎走不通的方案:
- 续航不够——单架次 30–40 分钟,五次起码要 5 块电池,中间还有充电、换电池、起飞复位等空闲
- 多次起飞误差累加——每次起飞 GPS 重新解算、风向变化、阳光位置变化,五个架次拼起来很难严丝合缝
- 测区不能太大——按消费级一次飞行覆盖的范围估算,五向能完整跑下来的项目通常已经突破单日飞行计划的边界
所以消费级的现实选择是三向倾斜或倾斜井字,五向方案不在考虑范围内。
三向倾斜(消费级首选)
把五向简化成三个架次:
- 第 1 架次:云台垂直,飞井字采集顶面
- 第 2 架次:云台前下方 30–60°,沿主方向飞航带
- 第 3 架次:云台后下方 30–60°(或换垂直方向)再飞一遍
电池消耗大概是五向的一半多一点,但立面、地面、顶面都能覆盖到。这是消费级单镜头机型最常用、最稳的倾斜方案。
倾斜井字(更激进的简化)

把三向再压成两架次的巧法:
- 第 1 架次:云台向前下方 30°,沿主方向飞 zigzag(蛇形)——同时拍到「向前看」和「向后看」(回程时)
- 第 2 架次:换个垂直方向,再飞一遍
效果上接近三向 / 五向,但只需要两架次。代价是单张照片的覆盖几何稍弱,需要把旁向重叠拉到 70% 左右;同时完全没有纯垂直的顶面照片,所以高层屋顶的细节会比三向方案差一些。
适用场景:测区不大、目标不是高层建筑、电池只够飞两次的情况。
云台角度怎么选
倾斜角度的选择是个连续区间,30°~60° 都是有效工作范围,按场景分档:
- 30° 左右——远近距离差距小,GSD 最均匀;但能看到的立面高度有限。城市高楼 + 窄街用这一档,避免被高楼遮挡街面、远端拍到天空
- 45° 左右——大多数城区、园区、工地建模的经典值。立面和顶面的覆盖、精度均匀性、背景干扰之间最平衡
- 60° 左右——立面细节最丰富,相机视线接近水平,能拍到纵向延伸的全貌;适合高塔、烟囱、悬崖、古建塔楼这类强立面元素。代价是远端 GSD 恶化更快、容易拍到天空、对图传和姿态稳定性的要求更高
行业测绘文档里常见的「不要超过 45°」是大尺度城区航测场景的保守建议;针对单体高大目标,60° 是合理选择。三档场景之间可以叠加飞行——比如对一片有古塔的园区,主区域走 45°、绕塔单独加一架 60° 的环绕。
环绕航线:独栋建模
针对单体目标(雕塑、单栋建筑、塔吊、古树等),无人机围绕目标做圆周飞行,云台始终对准目标中心。

核心几何参数:
- 半径:由目标尺寸和期望 GSD 共同决定。目标越高大,半径要越大;期望 GSD 越细,半径要越小
- 航点夹角:相邻两张照片对目标圆心的夹角 ≤ 15°,意味着一圈至少 24 张
- 多层高度:单一高度不够,顶面和底面都拍不全。常见做法是 3–5 层不同高度的同心圆环

最低一层略低于目标顶部、能拍到顶面斜下方,最高一层在目标顶端之上俯拍顶面,中间层覆盖立面——每个面都被至少一层的相机看到。
重叠环绕
针对复杂、不规则的单体场景(古建群、变电站、化工厂等),单一同心圆环不够,需要多个直径相互重叠的圆环互相交叉覆盖。圆环之间至少 50% 的直径重叠。
这种模式对小测区的复杂目标几乎是「降维打击」——比格网式的倾斜航线效果更好,因为每个角度、每个高度都被反复采样。
典型坑:
- 圆心位置选错——目标重心不在几何中心(比如有附楼的主楼),要按视觉重心而非几何中心定圆心
- 风大时半径会被吹偏,高度也会漂——尽量选无风窗口
- 单一高度造成顶面拍不到——必须分层
五种航线快速对照
| 航线类型 | 适用目标 | 云台角度 | 重叠度参考 |
|---|---|---|---|
| 单条航线 | 线状(路、河) | 视任务定 | 纵向 80% |
| 航带航线 | 窄带区域 | 通常垂直 | 纵向 80% / 旁向 60% |
| 面状航线 | 大面积平面 → DOM/DSM | 垂直 | 纵向 80% / 旁向 60% |
| 倾斜航线 | 城区、园区 → 三维 | 30–60°(消费级走三向或倾斜井字,避开五向) | 纵向 70–80% / 旁向 60–70% |
| 环绕航线 | 单体目标 | 对准目标(常 30–60°) | 相邻照片夹角 ≤ 15° |
航线规划工具内部在算什么
输入:用户在地图上画一个不规则多边形,选机型,设飞行高度。
输出:一串航点(经纬度 + 高度 + 云台角度 + 拍摄触发标志)。
中间发生了什么。
找测区的「主方向」
为什么需要主方向?因为飞行航带应该沿测区最长的方向走——无人机每次转弯都要减速、停顿、加速,转弯次数越少,效率越高、电量越省、成图质量越稳。一个东西长 500 米、南北长 200 米的矩形测区,显然应该东西向飞,只需少量长航带,而不是南北向飞、来回转很多弯。
「最长方向」怎么找?
最小外接矩形(MBR)
最小外接矩形(Minimum Bounding Rectangle,简称 MBR)是「能完全包住这个多边形的、面积最小的矩形」。注意是面积最小,不是周长最小,也不是「轴对齐」(轴对齐的叫 AABB,面积通常更大)。
MBR 的两条特性正好是航线规划要的:
- MBR 的长边方向 = 测区的主方向 = 航带应该飞的方向
- MBR 的短边长度 = 需要规划多少条航带
旋转卡壳(Rotating Calipers)
那 MBR 怎么算?暴力枚举所有旋转角度太慢。旋转卡壳算法给出了 O(n) 复杂度的解法。
直观画面:先取多边形的凸包(非凸部分不影响外接矩形),用两对相互垂直的「卡尺」从外面夹住,再让这四把卡尺一起绕凸包滚一圈,每次接触点切换到下一条边——每个状态对应一个外接矩形,记录面积、取最小,就是 MBR。「旋转卡壳」就是 rotating calipers 的直译。
在 MBR 里铺航带
得到 MBR 之后:
- 主方向已知 → 航带方向已知
- MBR 短边长度 / 航带间距 = 需要的航带数
- MBR 长边长度 / 航点间距 = 每条航带的航点数
航带间距和航点间距怎么定?前面已经讲过——从 GSD 公式算出每张照片在地面的覆盖范围,再按重叠度切分。
举个例子。Mini 4 Pro、80 米飞行、纵向 80%、旁向 60%:单张照片地面覆盖约 115 m × 86 m,由此算出航点间距 23 m、航带间距 34 m。对一个 500 m × 300 m 的测区,大约需要 9 条航带、每条 22 个航点,合计约 200 张照片。
多边形裁剪与边界扩展
MBR 内规划完整的航点矩阵之后,用户的实际测区多边形通常比 MBR 小——MBR 外接,内部有四角区域是多边形之外的。
工具会做两件事:
- 裁剪:落在多边形之外的航点直接删掉,不浪费快门和电量
- 边界扩展(Buffer):把多边形向外扩 0.5–1 个航带间距,再去裁剪
为什么要扩?因为多边形边界正好压着航点的话,边界附近的旁向重叠就没了——边界外侧的同名点找不到对应的相邻航带照片。扩一点,牺牲少量飞行时间,换边界附近的重叠保证。
倾斜航线的额外考虑
如果是倾斜航线,规则要复杂一层。云台 45° 倾斜后,地面投影是梯形而不是矩形:近端窄、远端宽。

这意味着:
- 同一张照片里,近端 GSD 小、远端 GSD 大——精度不均匀
- 计算航带间距时,要按「近端覆盖宽度」算,不是「远端宽度」——否则会出现旁向重叠不够
- 实际等效的「最小到达距离」不再是飞行高度 H,而是
H / cos(α),其中 α 是云台倾斜角
举个例子:Mini 4 Pro、飞行高度 80 m、云台 45°。
- 等效斜距 D = 80 / cos(45°) ≈ 113 m
- 中心点 GSD ≈ 113/80 × 1.43 ≈ 2.0 cm/像素
- 近端 GSD 比这个还小,远端比这个大
倾斜航线的精度估算永远要用斜距而非高度。
输出航点序列
所有计算完成后,工具输出的航线本质是一串结构化数据——每个航点的坐标、高度、速度、机头朝向,以及在该航点要执行的动作(调整云台、悬停、触发快门)。
大疆的航线文件格式是 KMZ——本质是一个 ZIP 压缩包,解压后包含两个 XML 文件:
- template.kml——任务级别的全局配置:失联动作、起飞安全高度、机型枚举值、过渡速度等
- waylines.wpml——具体的航点列表,每个航点是一个
<Placemark>节点
打开 waylines.wpml,单个航点的实际结构大致是这样:
<Placemark>
<Point>
<coordinates>115.5469160887141,38.8901358837714</coordinates>
</Point>
<wpml:index>0</wpml:index>
<wpml:executeHeight>50</wpml:executeHeight>
<wpml:waypointSpeed>8</wpml:waypointSpeed>
<wpml:waypointHeadingParam>
<wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode>
...
</wpml:waypointHeadingParam>
<!-- 到达航点后执行的动作组 -->
<wpml:actionGroup>
<wpml:action>
<wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc>
<!-- 云台俯仰 -45° -->
</wpml:action>
<wpml:action>
<wpml:actionActuatorFunc>hover</wpml:actionActuatorFunc>
<!-- 悬停 1 秒 -->
</wpml:action>
<wpml:action>
<wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
<!-- 拍照 -->
</wpml:action>
</wpml:actionGroup>
</Placemark>
熟悉的「调云台 → 悬停 → 拍照」三连动作就在这里。整条航线就是这种 Placemark 节点重复几十、几百次拼出来的。
不同工具的具体格式略有不同(KML、CSV、专有 JSON、大疆的 KMZ 等),但本质都是这一串数据。无人机执飞时,飞控按顺序到达每个航点、调整云台、触发快门,如此而已。
拆开看,其实没那么神秘
航线规划应用从用户视角看是个黑盒:画个框、按个按钮、出航线。但拆开看,每一步要么是几何算法,要么是简单算术。自己手搓一个能用的航线规划工具,工程上完全可行——前端画多边形、Turf.js 算 MBR、几行算术算航点、生成 KMZ 给大疆飞控,一个周末能跑通基础版本。开源的成熟产品少,不是因为难,是因为商业生态把这块做成了壁垒。
进阶:粗建模与仿地航线
到目前为止讲的都是定高航线——整个航线全程,无人机相对起飞点的高度是固定的。这套航线在地形相对平坦的场景下完全够用。
但只要测区有显著高差(山地、丘陵、有大坡度的园区、台地、采石场、峡谷边缘),定高航线立刻露出三个问题:
- GSD 不一致——同一架次内,地势低的区域离相机更远,GSD 偏大;地势高的区域离相机更近,GSD 偏小。模型精度在测区内不均匀
- 重叠度失控——按平均高度算的航点间距,在低处重叠可能不到 50%(空三崩),在高处可能高达 90%(浪费快门和算力)
- 撞山风险——按起飞点定的飞行高度,飞到山头时离地面可能只剩几米
这三个问题的统一解法叫仿地航线——飞行高度始终相对地面恒定(比如全程相对地面 80 m),而不是相对起飞点。
仿地的两条数据来源
要让飞行高度跟着地形走,规划工具必须知道每个航点位置的地面高程。这个高程数据从哪儿来?两条路。
基于公开 DEM
用 SRTM 30m、ASTER GDEM、国内的资源三号 DEM 等公开高程数据。优点是数据现成,下载几个 tif 文件就能用,不用先飞一次。缺点是精度有限——SRTM 30m 的高程误差能到几米到十几米,地形细节缺失(小山包、深沟、悬崖边缘都可能被平滑掉)。
适合作为粗略仿地参考,但作为山区飞行的唯一高度依据不安全——必须留 30 m+ 的安全余量。
基于自己飞出来的粗模 DSM
先飞一次低分辨率的航线,导出照片到 ContextCapture / 大疆智图等软件跑出一个粗略的数字表面模型(DSM),再把这个 DSM 喂给航线工具,规划第二次的精航线。粗模的高程精度比 SRTM 高一个数量级,仿地航线就能贴得很准。
这条路的副产品还能做更多事——除了仿地,还能在粗模上做避障航线规划(自动绕开高楼、铁塔、电线)和 POI 加密(在感兴趣区域增加航点)。整套流程被一些行业里的人称为「两步法建模」。
消费级用户的可行性边界
「先粗建模再精航线」这套流程在消费级机型上原理上可行——粗建模本身不需要任何特殊硬件,精航线只要能生成 KMZ 导入 DJI Fly 就能执行。但实操上有几件事要提前知道:
工具链不友好。粗模 → 导出 DSM → 第三方航线工具 → 生成 KMZ → 导入 DJI Fly,任何一环出问题(格式不兼容、坐标系错位、Z 值单位错乱)都得整链排查。而粗模 DSM 在边缘、阴影区、植被区的高程常常虚高或虚低几米——直接拿来当精航线的高度参考,精航线可能比预期更贴近障碍物,反而比定高航线更危险。严肃做必须先对粗模做高程置信度过滤,而这一步消费级几乎没有现成方案。
两次飞行 = 两组成本。原本一个上午能完的任务变成两个上午,第二次到场时光照、阴影、植被、车辆已经不一致——这又带回一致性问题,影响最终模型质量。
给消费级用户的实际建议
按测区高差和飞行高度的比值简单分档:
- 小高差(高差 < 飞行高度的 20%)——直接用定高航线,不需要仿地。比如测区高差 15 m、飞行高度 80 m,定高就够
- 中高差(高差 20%–60%)——可以用 SRTM 30m 等公开 DEM 做粗仿地,飞行高度要预留 30 m 以上安全余量,宁可 GSD 稍粗也别贴近地面
- 大高差(高差 > 飞行高度的 60%,常见于山区、峡谷、采石场)——消费级方案的能力边界。强行做的话风险大于收益,要么换行业级带地形追踪能力的机器,要么把测区分块、每块用不同的定高,人工分段处理
「先粗建模再精航线」这套流程,建议留给真正值得二次飞行的项目——单次飞行发现质量不达标、又不能换更专业机器、且这个项目重要到值得多花一倍时间。多数消费级用户的多数任务,停在「定高 + 三向倾斜」这一档就够了。
消费级机型对照
下面是八款大疆消费级机型的核心建模参数(只列与建模直接相关的字段):
| 机型 | 传感器 | 物理尺寸 (mm) | 像素 | 等效焦距 | 真实焦距 | 100m GSD | 起飞重量 | 续航 |
|---|---|---|---|---|---|---|---|---|
| Mini 4 Pro | 1/1.3" | 9.6 × 7.2 | 8064 × 6048 | 24mm | 6.7mm | 1.79 cm | 249 g | 34 min |
| Mini 5 Pro | 1" | 13.2 × 8.8 | 8192 × 6144 | 24mm | 8.8mm | 1.83 cm | 249.9 g | 36 min |
| Air 3(广角) | 1/1.3" | 9.6 × 7.2 | 8064 × 6048 | 24mm | 6.7mm | 1.79 cm | 720 g | 46 min |
| Air 3S(广角) | 1" | 13.2 × 8.8 | 8192 × 6144 | 24mm | 8.8mm | 1.83 cm | 724 g | 45 min |
| Mavic 3(哈苏) | 4/3 | 17.3 × 13.0 | 5280 × 3956 | 24mm | 12.0mm | 2.73 cm | 895 g | 46 min |
| Mavic 3 Classic | 4/3 | 17.3 × 13.0 | 5280 × 3956 | 24mm | 12.0mm | 2.73 cm | 895 g | 46 min |
| Mavic 3 Pro(哈苏) | 4/3 | 17.3 × 13.0 | 5280 × 3956 | 24mm | 12.0mm | 2.73 cm | 958 g | 43 min |
| Mavic 4 Pro(哈苏) | 4/3 | 17.3 × 13.0 | 11648 × 8736 | 28mm | 14.0mm | 1.06 cm | 1063 g | 51 min |
多摄机型只列「建模主用」的镜头(Mavic 3 Pro、Air 3 等的 70mm/166mm 镜头建模时不混用,理由见下方第二条)。表里的 GSD 是 100m 高度的理论值,只为横向比较。实际任务的 GSD 在航线工具里会按你设的飞行高度自动算出。
看完表之后,有三件事值得说说。
像素数 ≠ 画质,但 = GSD
注意 Mini 4 Pro 和 Mavic 3 系列的对比:
- Mini 4 Pro:100 m 高度,GSD = 1.79 cm
- Mavic 3 Pro 哈苏:100 m 高度,GSD = 2.73 cm
Mini 4 Pro 的 GSD 反而更细。原因是 Mini 4 Pro 的 4800 万像素摊开了 8064 像素的长边,而 Mavic 3 哈苏只有 5280 像素长边——同样的传感器视角,像素更密。
但这不意味着 Mini 4 Pro 的建模质量更好。GSD 只决定了理论可分辨的空间细节,而建模质量还受这些因素影响:
- 传感器单像素面积:Mavic 3 哈苏的 4/3 画幅每个像素面积是 Mini 4 Pro 的 4 倍以上,弱光下信噪比、动态范围、色彩深度全面碾压
- 镜头光学素质:消费级 24mm 等效广角镜头的边缘锐度、畸变、色散差异巨大
- 可变光圈:Mavic 3 系列能从 f/2.8 收到 f/11,建模时收到 f/5.6 让全画面锐度均匀;Mini 4 Pro 是 f/1.7 定光圈,边缘画质天然弱一档
GSD 决定「能看清多小的东西」,画质决定「看到的东西可不可靠」。做正射图、看大场景,Mini 4 Pro 的高像素是优势;做精模型、考验细节稳定性,Mavic 3 系列更稳。
多摄机型只能用一颗镜头建模
Mavic 3 Pro、Mavic 4 Pro、Air 3、Air 3S 这类多摄机型,有一个新手常踩的坑——整个建模任务只能用其中一颗镜头,不能混。
原因在空三阶段:不同焦段的镜头有不同的内参(焦距、畸变),空三算法把它们当作同一组照片来解会产生灾难性结果。即便手动告知是不同相机组,建模软件能不能正确处理也是另一回事——业内的稳妥做法是只用一颗镜头从头飞到尾。
具体选哪颗?基本原则:
- 三摄机型(Mavic 3 Pro / Mavic 4 Pro):只用哈苏 24mm/28mm 主摄。中长焦 70mm 视角太窄,要拉高才能覆盖,但拉高了畸变又上来;长焦 166mm/168mm 几乎只适合超远距离单点观察,完全不适合面状建模
- 双摄机型(Air 3 / Air 3S):只用 24mm 广角。70mm 中长焦同理,视角太窄
Mini 4 Pro 在这点上反而是优势——单摄,不用纠结。
消费级无 RTK,像控点不可省
所有消费级大疆机型都没有机载 RTK。无人机自带 GPS 定位精度大约 1–2 米,EXIF 里写入照片的位置信息精度也是这个量级。
这件事对建模意味着什么?
- 相对精度:不影响。空三完全靠照片之间的同名点关系还原相机位置,GPS 只是初始猜测,误差 1–2 米对算法收敛影响不大
- 绝对精度:误差直接传递给最终模型。不打像控点的话,模型在地球坐标系里整体可能偏 1–2 米、还可能有小角度旋转和尺度偏差
对自媒体、内部参考、设计参考这些用途,1–2 米的绝对偏差完全无所谓——反正你看的是相对关系。
但如果你需要模型上量出来的尺寸是真实值(算屋顶面积、估算挖方量、规划设备安装位置)——这时候必须打像控点,让模型对齐到真实世界。
像控点的布设原则(简略):
- 数量:Bentley 给的经验是「每 20000 像素一个像控点」。Mini 4 Pro 80m 飞行 GSD 1.43 cm,意味着每隔
0.0143 × 20000 = 286 米一个像控点。再加上测区四个角必须各有一个 - 形式:黑白棋盘格、十字标、专用航测靶标(如 Aeropoints、Propeller AeroPoints 这类自带 GPS 的智能像控点)。自制方案最常见的是 1 米见方的喷绘塑料布,黑白对角分布
- 测量:像控点的真实坐标必须用比无人机 GPS 精度高的方式测得。专业方案是 RTK 流动站(厘米级);轻量方案是手持差分 GPS(亚米级);极端轻量场景下用高精地图截取(米级,只比无 GCP 略好)

两类典型像控点——左边是自制黑白棋盘格,右边是 Propeller AeroPoints 这类带 GPS 的智能像控点。在建模软件里作用一样,区别只是「测坐标」那一步谁来做。
对消费级用户的现实建议:
不需要绝对精度的场景(给设计师做参考、给自媒体出图、给课堂做演示),完全可以不打像控。直接飞、直接出图,模型内部尺寸照样可信。
需要绝对精度但又不愿意上专业 RTK 设备,可以采用地图截取法:在高精度卫星底图上找几个清晰可辨的固定特征点(水泥井盖、十字路口标线、广场地砖角点),用底图坐标作为像控坐标,布设 5–8 个。精度只有米级,但比完全不打强很多。
几个最常见的坑
前面已经展开过的(弯曲效应、多摄混拍焦距)这里只列名,详细见对应章节。下面是几条前文没专门讲、但实际飞行经常翻车的:
玻璃幕墙、水面、深色单色屋顶
无法重建的物理表面,不是参数能解决的问题。处理方式:
- 接受空洞:小面积幕墙留空,后期视觉上影响不大
- 后期蒙版:在重建软件里用蒙版把这些区域排除出空三
- 回避:水面、湿地、玻璃多的场景,如果可能,换个时间或天气拍(水面有波纹时反而比镜面好)
单架次跨电池切换的边界
消费级机型 30–40 分钟续航,大测区必然要换电池。换电池前后:
- 不要从中断处接着飞——风、阳光、太阳位置都变了,接缝处可能整段对不齐
- 每个架次有冗余——让换电池前后的两段航线在空间上有 30%+ 的重叠
- GPS 漂移——换电池可能导致原点重新解算,航线工具应该用同一个起飞点参考
阳光与阴影
理想的拍摄时间是阴天均匀光或正午前后(阴影短)。早上和傍晚的低角度阳光会在地面留下长长的硬阴影,这些阴影在不同照片里位置不同——空三阶段被识别为「移动物体」而引入误差,导致模型表面起伏。
风速
大疆消费级机型抗风等级标称 5–6 级,但建模任务的姿态稳定性要求比航拍高。风速 3 级以上就会让倾斜航线的角度精度下降,环绕航线的轨迹漂移加剧。选无风窗口,优先级高于其他天气因素。
像控点的空间分布
像控点要在空间上分散——平面上至少四角 + 中心,高程上最好有高低差。只在测区一角打像控、或所有像控点高程一样,会导致模型在远端越来越歪、或整体倾斜。
一个判断框架
写了这么多原理和参数,最后给一个简单的自问清单——回答完之后你就知道用什么机型、飞什么航线、要不要打像控:
这个模型给谁看?精度要求是什么?
- 给自己 / 设计师 / 客户 / 自媒体——只看相对关系 → 不必打像控
- 模型上要量出真实尺寸(米级够用)→ 用地图截取法布 5–8 个像控点
- 厘米级绝对精度 → 必须 RTK 测的像控点,且数量充足、空间分散
- 工程量复核 / 报建 / 验收 → 不要用消费级方案,这是合规问题不是技术问题
测区是什么形状?
- 单体目标(一栋楼、一座塔)→ 重叠环绕航线
- 窄长条(一段路、一段河)→ 航带航线
- 大面积平面(园区、村落、农田)→ 面状航线(纯正射)或 三向倾斜 / 倾斜井字(带立面)
- 城市片区 / 多栋建筑混合 → 三向倾斜 + 重点建筑环绕的混合方案
要不要立面信息?
- 不要(只看顶面 / 出 DOM)→ 纯垂直,面状航线
- 要 → 必须有倾斜照片,三向倾斜 / 倾斜井字
测区多大?能在一块电池内拍完吗?
- 能 → 一切好说
- 不能 → 测区分块,块间共享重叠区域,强烈建议布像控点保证拼接精度
回答完这四个问题,所有技术参数(机型、飞行高度、航线类型、重叠度、像控)基本就确定了。
顺便聊一下高斯泼溅
最近两年很火的3D 高斯泼溅(3D Gaussian Splatting, 3DGS),从同一批航拍照片出发能渲染出非常炸裂的视觉效果——光照真实、细节丰富,漂浮的树叶头发都能保留。很多消费级用户看到这个会以为「摄影测量被淘汰了」。三件事要说清楚:
它是另一条技术路线。摄影测量的产物是有几何意义的网格模型——可以量尺寸、转 CAD、做 GIS 分析、提取等高线。3DGS 的产物是用于实时渲染的「高斯椭球场」,每个椭球带颜色、不透明度、各向异性参数,渲染时按视角动态合成。它不是一个「物体」,是一组「视觉数据」。
两者优势场景不同。3DGS 对低质量、稀疏、不规则的输入比 SfM 摄影测量容忍度高得多,对透明、反光、毛发等复杂表面的还原也更好。但它几何上不可信——不能在 3DGS 上量距离、验证墙面是否垂直、转 CAD 出图。
对消费级用户:要做视觉展示(VR 漫游、自媒体素材、产品演示),3DGS 值得尝试,开源工具链(nerfstudio、Splatfacto)已经成熟;要做带「测」字的需求(测量、设计参考、工程量、坐标定位),还是回到摄影测量。
3DGS 适合「看」,摄影测量适合「用」——不互相替代,按用途选。
消费级无人机做三维建模和正射,本质上是用打折的硬件去做一个原本设计给万元级测绘机的工作。它做不到「更便宜地实现专业级结果」,但能在被明确定义的场景下,以足够好的质量服务于足够多的用途。
理解每个参数的几何意义、理解算法在做什么、理解硬件在哪些维度上让步,剩下的事就是把无人机飞起来——参数都是参考,实拍都是真理。

参考资料
本文的原理与方法部分参考了 Bentley Systems 公开发布的两份官方文档:
- ContextCapture | Guide for photo acquisition, Bentley Systems, 2017 年 3 月
- Reality Modeling Drone Capture Guide, Bentley Reality Modeling Academy, 2018 年
这两份文档面向的是行业级测绘场景与 Bentley 的 ContextCapture(后改名为 iTwin Capture Modeler)工作流。本文做的事情是把其中的几何原理与航线方法,翻译到消费级大疆机型的实际能力边界内。
特此致谢。
本文采用 CC BY-NC-SA 4.0 协议发布,可自由转载、修改,但需保留作者署名、不可用于商业用途、衍生作品需以相同协议发布。