Daily Build

消费级无人机怎么做三维建模和正射影像

带着 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 这类行业机。

摄影测量在做什么

有一个比喻很贴切:摄影测量就是让电脑玩反向找茬

正常的找茬游戏是「这两张图有什么不同」,摄影测量是反过来——「这一堆照片里,哪些点是同一个点」。把这件事做到极致,就能反推出每张照片是从哪儿拍的、被拍的物体长什么样。

整个过程拆成三个阶段:找同名点 → 算相机位置 → 重建表面

photogrammetry-workflow

找同名点

电脑在不同照片里找「这是同一个点」。一棵树的某个枝丫、一栋楼的某个墙角、一块石头上的某个纹理——只要在两张以上的照片里都能被识别,就是一个同名点。

这一步对照片有三个隐含要求,后面所有航线参数都来自这三条:

算相机位置

有了同名点之后,电脑反过来推算每张照片是从哪个位置、以什么姿态拍的。这一步叫空中三角测量(Aerotriangulation),简称空三

可以这么理解:每个同名点在每张照片上的像素坐标已知,相机的内参(焦距、传感器尺寸、畸变)也大致已知,剩下的未知数就是相机的位置 (X, Y, Z) 和姿态(三个旋转角)。同名点足够多的时候,方程组就能解出来——每张照片对应的相机位姿被反推出来。

这一步的产物叫稀疏点云,就是那些同名点的三维坐标。看起来像那么回事,但还远不是模型。

重建表面

知道了每张照片的精确位姿,就能把照片之间所有可能的对应关系展开,生成密集的三维点(稠密点云)、连成三角网(TIN 网格)、再把照片像素贴回去(纹理映射)。这就是最终的三维模型。

正射影像(DOM)和数字表面模型(DSM)是同一套数据的两个产品:DSM 是表面的高程,DOM 是把所有照片正交投影到这个表面上的镶嵌图。

四种「电脑搞不定」的物体

理解了上面三步之后,这四类东西为什么不能建模就一目了然:

实际飞行中遇到这些情况,要么靠后期蒙版掩盖,要么靠航线设计绕开,要么接受局部空洞——没有第四种解法。

必须先认识的几个名词

消费级无人机自带的 GPS 定位精度大约 1–2 米。不打像控点的话,做出来的模型在内部尺寸上可以很准(相对精度好),但整体在地球上的位置可能偏出去几米——自媒体展示无所谓,工程参考可能就是大问题。

关键公式

整个航线规划的核心公式只有两个,搞懂它们等于搞懂了所有航线工具背后的算法。

GSD 公式

R=Ls×Df×LR = \frac{L_s \times D}{f \times L}

其中:

公式拆开看,意思是「传感器上一个像素对应到地面有多大」。传感器越大、距离越近、焦距越长、像素越多,GSD 越小,也就是越精细。

sensor-ground-projection

真实焦距 vs 等效焦距

消费级无人机的官方参数表里写的都是等效焦距(35mm 等效),为的是让用户有直观感受——24mm 等效就是「广角」、70mm 等效就是「中焦」。但 GSD 公式里要用的是真实焦距

换算关系:

f真实=f等效×传感器对角线43.27f_\text{真实} = f_\text{等效} \times \frac{\text{传感器对角线}}{43.27}

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×RP = 3 \times R

P 是空三之后模型的相对位置精度。这个「3 倍」是 Bentley 给出的经验系数,在结构稳定、纹理良好、像控点充足的理想条件下大致成立。

换句话说,GSD 2 cm/像素的模型,实际能用的相对精度大概在 6 cm。这个「能用」意味着:你可以在模型上量两个点之间的距离,误差期望在 6 cm 上下;再细的尺寸(比如 2 cm 的细节)在模型上虽然看得见,但量出来的数字不可靠。

任何航线规划工具的「输入飞行高度 → 估算 GSD」或反过来「输入期望 GSD → 推荐高度」都是这个公式的两种用法,工具内部知道你选的机型的 LsfL,只剩 H 一个变量。明白这一点之后,「为什么是这个数」就不会让你困惑。

重叠度的逻辑

「纵向 80%、旁向 60%」是网上每篇航测文章都会出现的数字。但很少有人解释为什么是这两个数,而不是 70%/50% 或 90%/70%。

overlap-illustration

两种重叠

80% 是怎么来的

回到「找同名点」那一步——一个地面点至少要在 3 张照片里出现,空三才稳定。只在 2 张里出现的话,几何上虽然能解,但抗噪能力差,稍有匹配误差就会出现明显畸变。

在一条直线航线上,「同一个点出现在 3 张连续照片里」相当于要求重叠度至少 2/3 ≈ 66.7%。预留余量、考虑无人机飞行误差、姿态抖动等实际因素,工程上把纵向重叠定到 80%——每张照片有 80% 的内容和前一张重合,只露出 20% 的新内容。这样即便实际飞行有偏差,也能稳稳保证 3 张以上的覆盖。

旁向重叠的逻辑更宽松一些,因为航带之间的几何关系本来就比航线内的连续帧弱。要求一个点在相邻航带的至少 2 张照片里出现,加上余量,定到 60% 是经验值。

倾斜飞行的重叠度

倾斜航线情况复杂一些。云台带角度后,照片在地面的投影是梯形而不是矩形,而且不同方向倾斜的照片之间还要互相重叠,经验上略低于纯垂直:

重叠度不是死规定

理解了上面的逻辑之后会发现:重叠度的本质是「同名点要在足够多的照片里出现」的几何下限。所以在以下情况可以适度调整

也就是说,重叠度是「经验下限 + 场景调节」的参数,不是必须严格 80%/60%。

五种航线模式

打开任何一款航线规划应用——无论是 7fly.top、fly.bzao.cn、dji.blans.top 这类网页工具,还是大疆 Pilot、Litchi、DroneLink 这类客户端——主菜单几乎都是这五类:

flight-mode-categories

这不是哪一家工具的设计选择,而是行业已经收敛出来的标准分类。每一种对应一种几何形状的目标,以及一套不同的几何规则。

单条航线:线状目标

最基础的形态。给定一串航点,无人机依次飞过,每个航点(或按距离间隔)触发一次拍照。云台角度可以在每个航点单独设置。

适用场景:

几何要点:航点间距由 GSD 和纵向重叠度决定。已知 GSD R、像素长边 L、纵向重叠度 p

Δ=R×L×(1p)\Delta = R \times L \times (1 - p)

代入 Mini 4 Pro、80m 飞行、80% 重叠:Δ = 0.0143 × 8064 × 0.2 ≈ 23 米。每飞 23 米触发一次快门。

线状目标如果有弯曲(比如河道转弯),单条航线会出现内侧重叠不够、外侧过度重叠——加密航点或改用航带航线。

航带航线:窄带状区域

把单条航线扩展成多条平行的航线,组成一片带状覆盖。每条航线之间按旁向重叠度间距排列。

适用场景:

航带间距由旁向重叠度决定。已知 GSD、像素短边 l、旁向重叠度 q

Δ航带=R×l×(1q)\Delta_\text{航带} = R \times l \times (1 - q)

代入 Mini 4 Pro、80m 飞行、60% 重叠:Δ = 0.0143 × 6048 × 0.4 ≈ 35 米

航带航线只有一个方向的飞行,而面状航线是双向(井字)的。后者建模质量高很多。

面状航线:正射大图

整个测区被规划成「井」字形的航线网格——一组航带沿主方向飞行,再叠加一组沿垂直方向飞行,云台始终保持垂直向下(nadir)。

nadir-coverage

这是正射影像和 DSM 生产的主流方案,也是大多数航线工具的默认模式。

适用场景:

重叠度建议:纵向 80% / 旁向 60%,标配。

致命的坑:弯曲效应

只飞纯垂直航线、只沿单一方向、地面相对平坦——这三个条件同时满足时,空三阶段计算径向畸变会陷入「歧义解」,最终模型整体呈现一个碗状或船底状的弯曲,平的地面变成弧面。

curve-effect

这不是某个软件的 bug,而是所有 SfM(Structure from Motion)算法共有的几何病态。

三种解法:

消费级机型几乎都属于「非测绘相机」,镜头畸变参数会随温度、时间、磕碰发生漂移,预标定的有效期不长。每次重要任务前重新标定一次是稳妥做法。

倾斜航线:三维建模

要做真正的三维模型(包括建筑立面、复杂地形的侧面),光有垂直照片不够。垂直照片对水平地面采样充分,但对垂直墙面只能看到一条边——墙面的纹理和几何完全没有进入数据。

倾斜航线就是为了补上这一块。

oblique-vs-nadir

同一栋建筑、同一台无人机、同一份后处理,左边是倾斜+垂直组合,右边只飞了垂直。右图的建筑立面几乎不存在,窗户、阳台、檐口都被压成模糊的纹理面。

行业级的经典做法是五向飞行——一颗垂直主摄 + 四颗 45° 倾斜的相机同时拍,一次飞行完事。但消费级无人机只有一颗云台、一颗镜头,五向必须飞五次:1 架次垂直 + 4 架次分别朝前后左右。

multi-camera-aerial

上图是马赛某次航测任务的相机位置——每一组紧密排列的相机阵列就是五向系统某一瞬间同时触发的五颗相机。整片密密麻麻的覆盖看似夸张,正是行业级一次飞行覆盖一座城区的代价。

这对消费级是几乎走不通的方案:

所以消费级的现实选择是三向倾斜或倾斜井字,五向方案不在考虑范围内。

三向倾斜(消费级首选)

把五向简化成三个架次:

电池消耗大概是五向的一半多一点,但立面、地面、顶面都能覆盖到。这是消费级单镜头机型最常用、最稳的倾斜方案

倾斜井字(更激进的简化)

oblique-grid

把三向再压成两架次的巧法:

效果上接近三向 / 五向,但只需要两架次。代价是单张照片的覆盖几何稍弱,需要把旁向重叠拉到 70% 左右;同时完全没有纯垂直的顶面照片,所以高层屋顶的细节会比三向方案差一些。

适用场景:测区不大、目标不是高层建筑、电池只够飞两次的情况。

云台角度怎么选

倾斜角度的选择是个连续区间,30°~60° 都是有效工作范围,按场景分档:

行业测绘文档里常见的「不要超过 45°」是大尺度城区航测场景的保守建议;针对单体高大目标,60° 是合理选择。三档场景之间可以叠加飞行——比如对一片有古塔的园区,主区域走 45°、绕塔单独加一架 60° 的环绕。

环绕航线:独栋建模

针对单体目标(雕塑、单栋建筑、塔吊、古树等),无人机围绕目标做圆周飞行,云台始终对准目标中心。

overlapping-orbits

核心几何参数:

multi-level-orbits

最低一层略低于目标顶部、能拍到顶面斜下方,最高一层在目标顶端之上俯拍顶面,中间层覆盖立面——每个面都被至少一层的相机看到。

重叠环绕

针对复杂、不规则的单体场景(古建群、变电站、化工厂等),单一同心圆环不够,需要多个直径相互重叠的圆环互相交叉覆盖。圆环之间至少 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 的两条特性正好是航线规划要的:

旋转卡壳(Rotating Calipers)

那 MBR 怎么算?暴力枚举所有旋转角度太慢。旋转卡壳算法给出了 O(n) 复杂度的解法。

直观画面:先取多边形的凸包(非凸部分不影响外接矩形),用两对相互垂直的「卡尺」从外面夹住,再让这四把卡尺一起绕凸包滚一圈,每次接触点切换到下一条边——每个状态对应一个外接矩形,记录面积、取最小,就是 MBR。「旋转卡壳」就是 rotating calipers 的直译。

在 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 外接,内部有四角区域是多边形之外的。

工具会做两件事:

为什么要扩?因为多边形边界正好压着航点的话,边界附近的旁向重叠就没了——边界外侧的同名点找不到对应的相邻航带照片。扩一点,牺牲少量飞行时间,换边界附近的重叠保证。

倾斜航线的额外考虑

如果是倾斜航线,规则要复杂一层。云台 45° 倾斜后,地面投影是梯形而不是矩形:近端窄、远端宽。

oblique-projection

这意味着:

举个例子:Mini 4 Pro、飞行高度 80 m、云台 45°。

倾斜航线的精度估算永远要用斜距而非高度。

输出航点序列

所有计算完成后,工具输出的航线本质是一串结构化数据——每个航点的坐标、高度、速度、机头朝向,以及在该航点要执行的动作(调整云台、悬停、触发快门)。

大疆的航线文件格式是 KMZ——本质是一个 ZIP 压缩包,解压后包含两个 XML 文件:

打开 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 给大疆飞控,一个周末能跑通基础版本。开源的成熟产品少,不是因为难,是因为商业生态把这块做成了壁垒。

进阶:粗建模与仿地航线

到目前为止讲的都是定高航线——整个航线全程,无人机相对起飞点的高度是固定的。这套航线在地形相对平坦的场景下完全够用。

但只要测区有显著高差(山地、丘陵、有大坡度的园区、台地、采石场、峡谷边缘),定高航线立刻露出三个问题:

这三个问题的统一解法叫仿地航线——飞行高度始终相对地面恒定(比如全程相对地面 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 在边缘、阴影区、植被区的高程常常虚高或虚低几米——直接拿来当精航线的高度参考,精航线可能比预期更贴近障碍物,反而比定高航线更危险。严肃做必须先对粗模做高程置信度过滤,而这一步消费级几乎没有现成方案。

两次飞行 = 两组成本。原本一个上午能完的任务变成两个上午,第二次到场时光照、阴影、植被、车辆已经不一致——这又带回一致性问题,影响最终模型质量。

给消费级用户的实际建议

按测区高差和飞行高度的比值简单分档:

「先粗建模再精航线」这套流程,建议留给真正值得二次飞行的项目——单次飞行发现质量不达标、又不能换更专业机器、且这个项目重要到值得多花一倍时间。多数消费级用户的多数任务,停在「定高 + 三向倾斜」这一档就够了。

消费级机型对照

下面是八款大疆消费级机型的核心建模参数(只列与建模直接相关的字段):

机型 传感器 物理尺寸 (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 的 GSD 反而更细。原因是 Mini 4 Pro 的 4800 万像素摊开了 8064 像素的长边,而 Mavic 3 哈苏只有 5280 像素长边——同样的传感器视角,像素更密。

但这不意味着 Mini 4 Pro 的建模质量更好。GSD 只决定了理论可分辨的空间细节,而建模质量还受这些因素影响:

GSD 决定「能看清多小的东西」,画质决定「看到的东西可不可靠」。做正射图、看大场景,Mini 4 Pro 的高像素是优势;做精模型、考验细节稳定性,Mavic 3 系列更稳

多摄机型只能用一颗镜头建模

Mavic 3 Pro、Mavic 4 Pro、Air 3、Air 3S 这类多摄机型,有一个新手常踩的坑——整个建模任务只能用其中一颗镜头,不能混。

原因在空三阶段:不同焦段的镜头有不同的内参(焦距、畸变),空三算法把它们当作同一组照片来解会产生灾难性结果。即便手动告知是不同相机组,建模软件能不能正确处理也是另一回事——业内的稳妥做法是只用一颗镜头从头飞到尾

具体选哪颗?基本原则:

Mini 4 Pro 在这点上反而是优势——单摄,不用纠结。

消费级无 RTK,像控点不可省

所有消费级大疆机型都没有机载 RTK。无人机自带 GPS 定位精度大约 1–2 米,EXIF 里写入照片的位置信息精度也是这个量级。

这件事对建模意味着什么?

对自媒体、内部参考、设计参考这些用途,1–2 米的绝对偏差完全无所谓——反正你看的是相对关系。

但如果你需要模型上量出来的尺寸是真实值(算屋顶面积、估算挖方量、规划设备安装位置)——这时候必须打像控点,让模型对齐到真实世界。

像控点的布设原则(简略):

gcp-targets

两类典型像控点——左边是自制黑白棋盘格,右边是 Propeller AeroPoints 这类带 GPS 的智能像控点。在建模软件里作用一样,区别只是「测坐标」那一步谁来做。

对消费级用户的现实建议:

不需要绝对精度的场景(给设计师做参考、给自媒体出图、给课堂做演示),完全可以不打像控。直接飞、直接出图,模型内部尺寸照样可信。

需要绝对精度但又不愿意上专业 RTK 设备,可以采用地图截取法:在高精度卫星底图上找几个清晰可辨的固定特征点(水泥井盖、十字路口标线、广场地砖角点),用底图坐标作为像控坐标,布设 5–8 个。精度只有米级,但比完全不打强很多。

几个最常见的坑

前面已经展开过的(弯曲效应、多摄混拍焦距)这里只列名,详细见对应章节。下面是几条前文没专门讲、但实际飞行经常翻车的:

玻璃幕墙、水面、深色单色屋顶

无法重建的物理表面,不是参数能解决的问题。处理方式:

单架次跨电池切换的边界

消费级机型 30–40 分钟续航,大测区必然要换电池。换电池前后:

阳光与阴影

理想的拍摄时间是阴天均匀光正午前后(阴影短)。早上和傍晚的低角度阳光会在地面留下长长的硬阴影,这些阴影在不同照片里位置不同——空三阶段被识别为「移动物体」而引入误差,导致模型表面起伏。

风速

大疆消费级机型抗风等级标称 5–6 级,但建模任务的姿态稳定性要求比航拍高。风速 3 级以上就会让倾斜航线的角度精度下降,环绕航线的轨迹漂移加剧。选无风窗口,优先级高于其他天气因素。

像控点的空间分布

像控点要在空间上分散——平面上至少四角 + 中心,高程上最好有高低差。只在测区一角打像控、或所有像控点高程一样,会导致模型在远端越来越歪、或整体倾斜。

一个判断框架

写了这么多原理和参数,最后给一个简单的自问清单——回答完之后你就知道用什么机型、飞什么航线、要不要打像控:

这个模型给谁看?精度要求是什么?

测区是什么形状?

要不要立面信息?

测区多大?能在一块电池内拍完吗?

回答完这四个问题,所有技术参数(机型、飞行高度、航线类型、重叠度、像控)基本就确定了。

顺便聊一下高斯泼溅

最近两年很火的3D 高斯泼溅(3D Gaussian Splatting, 3DGS),从同一批航拍照片出发能渲染出非常炸裂的视觉效果——光照真实、细节丰富,漂浮的树叶头发都能保留。很多消费级用户看到这个会以为「摄影测量被淘汰了」。三件事要说清楚:

它是另一条技术路线。摄影测量的产物是有几何意义的网格模型——可以量尺寸、转 CAD、做 GIS 分析、提取等高线。3DGS 的产物是用于实时渲染的「高斯椭球场」,每个椭球带颜色、不透明度、各向异性参数,渲染时按视角动态合成。它不是一个「物体」,是一组「视觉数据」。

两者优势场景不同。3DGS 对低质量、稀疏、不规则的输入比 SfM 摄影测量容忍度高得多,对透明、反光、毛发等复杂表面的还原也更好。但它几何上不可信——不能在 3DGS 上量距离、验证墙面是否垂直、转 CAD 出图。

对消费级用户:要做视觉展示(VR 漫游、自媒体素材、产品演示),3DGS 值得尝试,开源工具链(nerfstudio、Splatfacto)已经成熟;要做带「测」字的需求(测量、设计参考、工程量、坐标定位),还是回到摄影测量。

3DGS 适合「看」,摄影测量适合「用」——不互相替代,按用途选。


消费级无人机做三维建模和正射,本质上是用打折的硬件去做一个原本设计给万元级测绘机的工作。它做不到「更便宜地实现专业级结果」,但能在被明确定义的场景下,以足够好的质量服务于足够多的用途。

理解每个参数的几何意义、理解算法在做什么、理解硬件在哪些维度上让步,剩下的事就是把无人机飞起来——参数都是参考,实拍都是真理。

photogrammetry-workflow

参考资料

本文的原理与方法部分参考了 Bentley Systems 公开发布的两份官方文档:

这两份文档面向的是行业级测绘场景与 Bentley 的 ContextCapture(后改名为 iTwin Capture Modeler)工作流。本文做的事情是把其中的几何原理与航线方法,翻译到消费级大疆机型的实际能力边界内。

特此致谢。


本文采用 CC BY-NC-SA 4.0 协议发布,可自由转载、修改,但需保留作者署名、不可用于商业用途、衍生作品需以相同协议发布。