刚接触航测或者三维建模的朋友,十有八九都会撞上一个叫“partially covered”的报错——明明航线设计得好好的,重叠度也按标准设置了,最后建模软件却弹出一片黄橙橙的警告,提示某几架影像的覆盖范围不足。第一次遇到这个问题时,我以为是相机参数没填对,折腾了大半天才发现问题出在飞行姿态和地形预判上。
说白了,partially covered就是指传感器捕获的影像范围没有完全覆盖测区或者目标地物,导致后续空三解算、密集匹配时缺少足够的共轭点。这个问题不解决,轻则成果边缘出现拉花和破洞,重则空三直接失败,整个架次白飞。这篇文章我会从成因判定、航线设计修正、空三设置调整三个维度,把我在实际项目里攒下的排查思路和解决手段完整拆开讲,帮你在下次内业处理时少走几个来回。
1. 先从现象说起:什么时候会出现partially covered
1.1 软件报错里最常见的两种表现
我最初遇到这个问题,是在某次城镇三维建模项目中。数据采集用的是某品牌的四旋翼,镜头是1英寸传感器的免像控相机,相对航高120米,重叠度航向80%、旁向70%。外业回来之后导入建模软件,空三跑到一半,日志窗口里开始刷出一串黄色提示,大意是第52、53、87、126号影像存在partially covered的情况。我当时没太当回事,结果建模完成后,检查模型发现测区北侧一整片建筑的侧面纹理是糊的,墙面上还有明显的断层。
从表现上看,partially covered大致分成两类:一类是单张影像的边缘区域缺少有效特征点,软件判定这些区域“未被有效覆盖”;另一类是影像与影像之间的重叠区域过窄,尤其在航向重叠度骤降的拐弯处,空三匹配时找不到足够的同名点。前者多发生在广角镜头下边缘画质骤降的场景,后者多发生在航线外扩不足或者地形起伏超过预判的情况下。
1.2 为什么软件会把这类影像“特殊对待”
空三解算的本质是寻找多张影像之间的同名点,然后通过光束法平差确定每张影像的位置和姿态。如果一张影像真正参与匹配的特征点太少,或者匹配到的点都集中在画面中央而边缘完全无法定位,软件就会认为这张影像的覆盖信息不可靠。为了不让边缘不可靠的点污染整体平差结果,算法会在初始匹配阶段给这些影像打上覆盖不足的标记,并在后续的联合平差中降低甚至剔除它们的权重。
这意味着什么?如果你忽略这个警告强行建模,软件不会报错停止,但成果精度会明显下降,最典型的就是模型拉花、纹理漂移、地面拼接缝错位。严重的还会导致区块之间出现肉眼可见的高程断裂。这也是为什么圈内人常说,partially covered不是“会不会影响成果”的问题,而是“影响多少”的问题。
2. 成因很关键:为什么明明按规范飞了还会覆盖不足
2.1 航高与相机画幅的匹配陷阱
很多飞手习惯按“相对航高120米、传感器尺寸固定”的模板套航线,忽略了同一个相机在不同曝光参数下的实际地面覆盖范围是有差异的。尤其当你调整了云台俯仰角,哪怕只低头了5度,影像中心的投影位置就改变了,边缘区域相对测区的覆盖范围也会出现偏差。
这里要补充一个我踩过的坑:某次我为了避开一片水域的反光,把云台从正射角度略微前倾了大概8度,结果就是这一条航线的所有影像都被判定为partially covered。原因很简单,倾斜之后画面一侧的前景被拉大,原本位于画面边缘的地物被推出视场之外,导致实际有效覆盖面积变小了。面对这种情况,不要只盯着航线重叠度数值,要看的是“有效覆盖面积”是否足够。
2.2 地形起伏超过预设值时的覆盖偏移
另一个高频成因是地形高差。假设测区平均高程是50米,你按相对航高120米设计重叠度,当飞到一个山头高程达到110米的地方,实际的相对航高只剩60米,地面采样距离变小,单张影像覆盖的实际地面范围也缩小了。重叠度可能表面上还是75%,但因为覆盖范围整体缩小,相邻影像之间仍然出现了缝隙,软件就会判定为覆盖不足。
这里有一个简单的估算方式:当地物高度超过平均高程的差值大于单张影像地面覆盖宽度的一定比例时,就必须增加航线的外扩范围或者提高绝对航高。我自己习惯把测区高差超过15%的情况视为需要特殊处理的对象,而不是只做补飞。
2.3 航迹拐弯处的姿态偏转
飞固定翼或者复合翼时,还有一个极其隐蔽的原因:拐弯处的大坡度滚转。有些规划软件生成的航线在转角处是圆弧过渡,飞行器为了修正轨迹会带出明显的横滚角。横滚角一大,相机主轴偏离天底方向,出现类似前面说的云台倾斜问题。哪怕只有几秒钟的姿态偏转,那几架影像就可能被打上partially covered标记。
我建议在检查告警信息时,留意那些连续编号且集中在同一条航线端点的影像,这类影像大概率就是拐弯姿态导致的。遇到这种情况不必重新飞,直接调整空三的参与策略或者补拍这一个小区域即可。
提示:成因判定比一上来就重飞更关键。先看告警影像分布的位置和规律,再反推是航高、姿态还是地形问题,通常能省掉一半以上的补飞工作量。
3. 解决之前先自查:判断覆盖不足的几个关键手段
3.1 把告警影像导出来逐张看一遍
不少软件允许你按影像编号查看每个匹配点的数量和分布。如果你的软件有这个功能,一定要用起来——直接看影像上特征点的覆盖热力图。正常影像的特征点应该均匀分布在整个画面上,如果出现特征点全部聚在中心区域、四角完全空白的情况,基本坐实了覆盖不足的判定。
某项目里我曾经抽看一架告警影像的匹配点分布,发现整张图只有中心区域有匹配点,边缘区域几乎没有任何可追踪的特征。原因很讽刺,当时测区恰好是一片刚收割完的农田,田埂纹理在影像边缘因为镜头畸变已经糊成一片,软件根本提取不到有效信息。遇到这种纹理极弱的场景,单纯增加重叠度未必有用,更有效的手段是适当降低航高,让地面纹理在影像中占更大的像素面积。
3.2 利用畸变参数反推真实覆盖范围
另一个自查手段是结合相机的畸变参数去做覆盖范围推算。现在很多免像控相机采用广角镜头,边缘畸变非常明显,如果软件没有对畸变进行有效校正,那边缘区域的实际地面覆盖会远小于理论值,而重叠度的计算是基于理论值的,这就造成了“理论重叠度足够、实际覆盖不足”的偏差。
一套简单有效的做法是:将测区边界往外扩出20%的重叠余量,同时把旁向重叠度提高5到8个百分点。别小看这几个百分点的变化,实测下来对partially covered告警的消除效果非常显著。
3.3 用侧视影像辅助判断立面覆盖
对于建筑物密集区域,还要注意一个容易混淆的问题:顶部覆盖足够但立面覆盖不足。软件不会直接告诉你“立面没拍到”,只会反映为某一区域特征点太少,最终以覆盖不足的形式暴露出来。如果你在建模阶段疯狂加照片但发现问题持续存在,可以检查一下是否缺少侧视影像参与解算——比如航线设计里没有加入环绕航线或井字航线。
4. 核心解决手段:从航线设计层面彻底消除覆盖不足
4.1 重叠度调整的实战公式与经验值
如果你做的是常规正射影像,航向重叠度建议不低于80%,旁向重叠度不低于65%。但如果你要出真三维模型,而不是单纯的正射影像图,建议航向重叠度拉高到85%,旁向重叠度不低于70%。这两个数值不是拍脑袋定的,而是经过多次建模成果对比之后得出的:对模型侧面纹理的完整性来说,旁向重叠度的影响远大于航向重叠度。
再强调一个细节:重叠度设置的依据不应是水平面上的航点距离,而应是最低点处的重叠度。处理起伏地形时,把重叠度基准定为测区最低海拔处的覆盖情况,确保最差情况下重叠度仍然足够。这一步才是彻底规避partially covered的关键。
4.2 外扩距离的计算思路
航线外扩距离,通俗说就是测区边界外你要多飞出去多少。这个值直接决定测区边界区域的侧面纹理能不能建出来。我的习惯是外扩不少于一个基线距离,也就是相邻两条航线之间的间隔距离。假设航高120米、地面采样距离2.5厘米,旁向间隔大约在30米左右,那外扩就不少于30米。
如果测区内有高层建筑,这个外扩距离还要再加大,公式上没有统一标准,但可以按最高建筑高度的1.5倍来估算。比如测区最高建筑80米,那测区边界向外扩展起码120米,才能保证最高建筑的底部立面被完整拍到。
4.3 补飞和针对性重采的策略
补飞不是盲目的,我有一套优先级判断逻辑:先看告警影像集中在哪个航带,如果集中在一个航带,说明这条航带可能有姿态异常或云台遮挡,直接重飞这条航线即可;如果分散在多个航带的同一侧,说明测区边缘整体覆盖不足,需要对边界区域进行专项补拍;如果分布在某个高程突变区域,说明该区域需要加密航线。
补飞时的关键操作是:把补飞的航线单独建立任务,不要和原来的航线合并。原因在于两次飞行的光照环境、云台姿态可能存在差异,合并在一起反而会加剧空三的不稳定性。补飞完成后,把新数据单独做一次空三,确认无误后再将两部分工程合并。
注意:有些软件在添加补飞数据时默认开启姿态优化,这可能重新解算所有照片的位置参数,导致修复后的空三整体重新调整。如果你只想让补充影像参与局部匹配,建议在导入时明确设置保留原有影像的初始姿态数据。
5. 空三处理环节的修正技巧:不重飞也能救回一批数据
5.1 在空三设置中放宽边缘点参与条件
如果你已经手头有了数据,又不想重新外业,可以先从空三参数入手。很多建模软件的高级选项里有“特征点提取密度”“匹配范围”等参数。把特征点提取密度从默认值调高一档,匹配范围从相对保守的窄幅匹配改为宽幅匹配,有时就能让软件在原本判定覆盖不足的影像上找到足够多的点参与解算。这个操作对边缘纹理过于模糊的问题有较大改善,但对真正没有拍到区域的影像无效。软件不会凭空生成它没有拍到的信息,这一点要有清醒认识。
5.2 控制点约束对覆盖不足的补偿
如果数据量不大,且覆盖不足区域只占测区很小一部分,可以尝试用少量像控点来辅助空三。在覆盖不足区域周围布设2到3个控制点,并让它们参与光束法平差,能够显著提升该区域影像的位姿解算稳定性。防御性布设控制点,是内业处理里比较有效的一种补偿手段。
我在一个老旧小区改造项目里就遇到过这种情形:小区内部树木遮挡严重,部分楼栋立面完全拍不到,我把该区域的五张影像剔除判定后,改用控制点强制约束周边影像的位姿,最终建模成果虽然纹理细节有损失,但整体结构没有出现坍塌。
5.3 区域网平差中的分区解算
对于大测区项目,分区解算是另一种实用策略。把一个测区按航带或者按地形特征分成若干子区块,每个子区块单独解算,然后再做整体融合。这样做的好处是,partially covered的影像只在局部子区块内参与运算,不会因为它的问题拖累整个工程的其他区域。代价是融合阶段需要额外的控制点或连接点来对齐各个子区块。
我在实际操作中发现,对100公顷以上的测区,分区解算的时间消耗大概会增加15%到20%,但对成果质量是实打实的提升。尤其是当你只为了“消除警告”而强行把所有数据放在一起解算时,反而会因为警告影像的干扰导致其他正常影像的精度也下降。
6. 实战案例复盘:一个屋顶修复项目的完整处理过程
6.1 问题描述与初始数据状态
某次屋面三维修复测绘项目,测区是一片约3.2公顷的老旧厂房片区,最高建筑约18米,周围有零星树木。使用某品牌四旋翼搭载2400万像素云台相机执行任务。设置航向重叠度75%、旁向重叠度60%,相对航高90米,航线规划时测区外扩约15米。数据导入建模软件后,空三阶段报出7架次影像出现partially covered问题,集中在厂区两栋相邻建筑的北侧。
6.2 排查思路与根因定位
我先把告警影像按编号导入查看,发现这些影像共同覆盖了一个区域——两栋建筑之间的狭窄巷道。巷道宽度大约6米,两侧墙面高约10米。在这个区域,天顶视角相机拍到的地面范围非常有限,巷道两侧的墙面在影像里呈严重的透视压缩,特征点提取数量极低。根因明确了:不是航线和重叠度的问题,而是单一正射视角的固有盲区。
6.3 解决动作与实际效果
针对这个根因,我没有选择增加重叠度重飞,而是补了一条沿巷道走向的侧视航线,云台角度设置为45度,飞行方向南北向,保证两侧墙面在影像中占据足够大的比例。补拍影像一共23张,导入后与原有数据进行联合空三。
处理过程中我特意观察了几个关键指标:告警影像数量从7架降到1架;剩余1架影像位于巷道中部转角的阴影区域,考虑到周边树木遮挡影响,我直接在软件中将其排除,改用邻近影像补充该区域的特征点。最终三维模型检查后,巷道两侧墙面纹理连续,未出现断层或拉花。整个修复过程没有重飞任务,只补拍了一条侧视航线。
6.4 这个项目的核心启发
后来我复盘这个项目,最大的收获是:partially covered的本质是视角盲区问题,而不是单纯的航线参数问题。对建筑物密集区域,适当增加侧视航线,远比反复调整重叠度更有效。而且侧视航线的成本并不高,通常只需要在原有航线基础上增加一倍的飞行时间,却能让模型立面质量产生质的改变。
7. 常见问题与排查技巧实录
7.1 快速定位问题源头的检查清单
我把多年排查经验整理为一张自查表,按照先后顺序逐项排查,能快速定位绝大多数覆盖不足问题的根因:
| 检查项 | 判断办法 | 对应解决方案 |
|---|---|---|
| 影像姿态角是否异常 | 查看告警影像的俯仰/横滚角,是否明显偏离天底 | 剔除姿态异常影像或重拍该航带 |
| 告警影像集中在特定航带还是分散 | 按航线编号统计分布规律 | 集中则重飞单航线,分散则检查整体外扩量 |
| 测区地形是否有明显高差 | 对照数字高程模型,计算实际覆盖变化 | 加密航线或调整相对航高基准面 |
| 建筑密集区域的侧面遮盖情况 | 观察告警影像覆盖区域内是否有高墙、窄巷 | 补拍侧视/环绕航线 |
| 相机畸变参数是否准确 | 对比该相机标定文件与默认参数 | 导入实际畸变标定文件或手动校准 |
| 纹理弱区域(农田、裸地、水面) | 检查告警影像对应地面纹理与色彩反差 | 降低航高或调整飞行时间的光照角度 |
7.2 三个典型场景的定向处理技巧
场景一:大平原农田测区大面积覆盖不足。这种情况大多不是姿态问题而是纹理贫瘠,软件匹配不到特征点。解决手段是降低航高或者把重叠度往上调,让地面纹理在影像里占据更多像素。另一个容易被忽略的因素是光照角度。我当时在冬季下午飞的一片农田,太阳角度偏低导致影子拉得很长,纹理在阴影区域完全不可辨识。后来的解决方案是改在中午前后飞行,问题迎刃而解。
场景二:城市建成区边缘的部分覆盖不足。城市建筑密集,边缘区域的侧面遮挡往往很严重。处理此类问题最有效的方案是加入井字形航线:除了沿南北方向的航线外,再增加垂直方向的航线,让不同朝向的建筑立面都能被有效拍摄。井字形航线的成本增加大约30%,但对边缘覆盖率的提升非常显著。
场景三:高山峡谷地形的覆盖不足。这种地形需要按高程分层规划航线,而不是只使用一个基准航高。比如峡谷底部高程300米、顶部500米,那就分为两层航线,每层按该层平均高程设定飞行高度。如果使用的飞控支持变高航线,也可以设置沿地形起伏的自适应航高。另外,峡谷测区的重叠度建议在常规基础上再各增加5%,应对侧面陡坡带来的投影变形。
7.3 关于告警信息的两点冷知识
一个比较隐蔽的情况是:部分软件对partially covered的判定在空三迭代后会自动更新,前期判定为覆盖不足的影像,后期经过多次迭代可能恢复正常。所以看到告警不要急着删数据,先尝试重新优化几次空三,有时问题会自行消除。
另一个情况是:不同软件对partially covered的判定阈值不同。同一组数据在软件A里报出覆盖不足,在软件B里可能完全正常。这与你使用的软件版本、相机参数配置、匹配算法都有关系。如果你在软件A里始终无法解决,不妨换一个计算引擎试试,有时能获得意外的效果。
7.4 数据质量层面的预防建议
说到底,解决partially covered的根本前提是外业阶段严格把控数据质量。我的建议是:每次飞行任务收工之前,在野外花15分钟快速检查当天所有影像的EXIF信息,确认没有遗漏架次、没有异常姿态角,再返回内业。这个习惯我保持了三年,帮我规避了大量后续重新飞行的麻烦。另外,在第一天飞行之后先跑一次快速的空三验证,确认覆盖合格之后第二天再继续执行剩余架次,这种分批执行策略对大型项目的整体成功率非常有帮助。
8. 从一次告警处理看长期经验沉淀
反复处理这类问题之后,我自己逐渐养成了一套习惯:每个项目结束,会把遇到过的告警类型、成因分析、修复方式整理到一个结构化表格里。别小看这件事,当你的项目积累到十几个之后,大部分问题都能在几分钟内直接套用已有方案,而不需要重新从头排查。特别是对partially covered这类成因多元的问题,前期的经验沉淀能大大缩短你的试错时间。
从个人体会来说,对付覆盖不足问题,不要只想着“软件层面怎么消掉警告”,而是要追问“为什么会出现覆盖盲区”。是航线设计时的地形预判不足?还是相机参数和实际飞行之间的偏差?还是建筑物遮挡导致侧面信息缺失?不同的成因,解决手段完全不同,用错了方案往往事倍功半。
最后再分享一个我反反复复踩了几次才悟出来的细节:拿到告警数据后,先看包围盒缩略图,就是软件里所有影像覆盖范围的那个矩形框。如果发现某个区域的影像覆盖范围明显比周围稀疏,先从飞行数据回放开始查,看看当时是不是发生了丢星、丢姿态、云台卡滞等问题。这类飞行数据层面的异常,比单纯调整内业参数更能从根本上解释覆盖不足的原因。查清一次,后面的处理反而变得很简单。