
遥感图像分类这件事说简单也简单说复杂也复杂。简单在于ArcGIS 把很多算法都封装成了工具箱里的一个按钮点一下就能出结果复杂在于同样是点那个按钮有人分出来是干干净净的地类图有人分出来是一锅粥满屏椒盐噪声。我接触遥感分类差不多有七八年从最早的手写最大似然估计到后来用随机森林、支持向量机踩过的坑比走过的路还多。今天这篇就围绕 ArcGIS 平台上的两种经典分类器——随机树Random Trees和最大似然分类Maximum Likelihood Classification——把整个流程、参数逻辑、避坑经验完整拆一遍。如果你手头正好有一景多光谱影像想分出林地、水体、耕地、建设用地这几类又不想一上来就啃深度学习那一套那这篇内容基本能覆盖你从数据准备到精度评价的全部需求。我会尽量把每个参数背后的“为什么”讲清楚而不是只告诉你“填多少”。毕竟工具是死的地物是活的换个区域、换个季节参数就得跟着变。1. 两种分类器的底层逻辑与选型思路1.1 最大似然分类到底在算什么最大似然分类MLC是遥感领域最经典的监督分类方法之一它的核心假设非常朴素每一类地物的像元值在特征空间里服从正态分布。换句话说如果我把所有水体像元的近红外波段值画成直方图它应该是一个漂亮的钟形曲线。基于这个假设MLC 对每个像元计算它属于各个类别的概率然后把它归到概率最大的那一类。这个“概率”是怎么来的本质上是贝叶斯决策。给定一个像元特征向量 x它属于类别 i 的后验概率正比于“类别 i 的先验概率 × 类别 i 下出现 x 的似然”。在 ArcGIS 的实现里先验概率默认是均等的除非你手动指定。似然那一项就是那个多维正态分布的概率密度函数涉及均值向量和协方差矩阵。这里有个关键点很多人忽略协方差矩阵。如果两类地物的均值离得近但协方差结构差异大MLC 依然能分开反过来如果两类均值差得远但方差都巨大重叠区域就会很多。所以 MLC 对训练样本的“代表性”要求极高样本稍微偏一点协方差矩阵就估歪了分类结果直接崩。MLC 的优势在于理论成熟、计算速度快、对中等维度的多光谱数据表现稳定。劣势也很明显它对非正态分布的地物比如城市里混杂的建筑物和阴影适应性差而且当波段数多、样本少的时候协方差矩阵估计不稳定容易过拟合。1.2 随机树为什么在遥感里越来越吃香随机树Random Trees在 ArcGIS 里其实是随机森林的一个变体实现底层是一堆决策树做集成学习。每棵树在训练时随机抽取样本子集和特征子集最后投票决定分类结果。它跟 MLC 最大的区别在于不假设任何分布。这个“不假设分布”有多重要举个例子你分类城市地物建筑、道路、阴影、植被混在一起它们的光谱分布根本不是正态的可能是双峰甚至多峰的。MLC 硬套正态分布结果就是大量错分。随机树则通过树的分裂节点天然能拟合任意形状的决策边界。随机树的另一个好处是能输出特征重要性。ArcGIS 的 Random Trees 工具会给你一份变量重要性排序告诉你哪个波段对分类贡献最大。这个信息在波段选择时非常有用——比如你发现蓝光波段重要性极低下次就可以直接去掉减少计算量。但随机树也不是没有代价。它的计算量比 MLC 大尤其是树的数量和深度上去之后而且它对训练样本的数量要求更高样本太少容易过拟合。另外随机树的结果可解释性不如 MLC 直观你很难说清楚“为什么这个像元被分成了林地”。1.3 选型决策什么时候用哪个我一般按下面这个逻辑来选场景特征推荐分类器理由地物光谱分布接近正态样本充足最大似然速度快理论成熟结果稳定地物混杂严重分布非正态随机树无需分布假设拟合能力强波段数多10样本有限随机树避免协方差矩阵估计不稳定需要快速出初步结果最大似然参数少调参成本低需要特征重要性分析随机树自带变量重要性输出分类类别多8类随机树对复杂决策边界适应性更好实际项目中我经常两个都跑一遍用同一套训练样本和验证样本对比 Kappa 系数和总体精度谁高用谁。有时候 MLC 在简单场景下反而比随机树稳因为随机树在小样本下容易波动。2. 数据准备与训练样本采集的实操细节2.1 影像预处理不能省的那几步拿到一景遥感影像别急着往分类器里塞。我见过太多人直接拿原始 DN 值做分类结果精度惨不忍睹。下面这几步是底线辐射定标与大气校正。如果你做的是单景分类且类别之间光谱差异明显辐射定标可以跳过但大气校正最好做。尤其是多景拼接的时候不做大气校正同一类地物在不同景上的光谱值能差出一大截分类器直接懵。ArcGIS 里可以用栅格函数里的“大气校正”工具或者用外部工具做好再导入。波段选择与组合。多光谱影像通常有蓝、绿、红、近红外几个波段。分类时不是波段越多越好。我的经验是先算一下各波段之间的相关性相关性高于 0.9 的波段留一个就行。比如蓝光和绿光在多数场景下高度相关可以只留绿光。近红外对植被区分至关重要必须保留。如果还有短波红外对建筑和裸土区分帮助很大。影像裁剪与掩膜。研究区外的区域要么裁掉要么用掩膜屏蔽。否则分类器会在无关区域浪费算力还可能把背景值当成一类地物。ArcGIS 里用“按掩膜提取”或者“裁剪栅格”都行。分辨率统一。如果你要把不同分辨率的辅助数据比如 DEM、NDVI叠进去分类先重采样到同一分辨率。我一般用双线性插值重采样连续数据用最近邻重采样分类数据。2.2 训练样本采集的五个硬规矩训练样本的质量直接决定分类上限。下面这几条是我用血泪换来的规矩一每类样本不少于 30 个像元最好 100 以上。这是统计上的最低要求样本太少MLC 的协方差矩阵估不准随机树也学不到规律。我一般每类采 150-300 个像元复杂类别采到 500。规矩二样本要覆盖该类地物的全部光谱变异。比如林地有密林、疏林、幼林阴影下的林地和阳光下的林地光谱差异巨大。你只采阳光下的密林分类时阴影里的林地全被分成水体或建筑。正确做法是分层采样把每种变异都采到。规矩三样本在空间上要分散。别在一个小区域里采几千个像元那样样本之间高度空间自相关统计上等于只有几个独立样本。我一般把研究区分成网格每个网格里采几处确保空间代表性。规矩四训练样本和验证样本必须独立。这是最容易被忽视的一条。很多人采一套样本一半训练一半验证看似独立其实空间上挨着验证精度虚高。正确做法是采两套完全独立的样本最好在不同区域。我通常按 7:3 分配训练和验证且验证样本单独采集。规矩五样本边界要干净。混合像元是分类的大敌。采样本时尽量选地物核心区域避开边界。ArcGIS 里可以用“训练样本管理器”里的“绘制多边形”工具放大到足够比例尺再画。2.3 样本文件的管理与格式转换ArcGIS 里训练样本通常存成.shp或.lyr文件。我习惯用 shapefile因为通用性好方便在别的软件里检查。采样时注意字段设置必须有一个整型字段存类别 ID比如class_id值从 1 开始连续编号。别用字符串字段有些工具不认。采样完成后用“训练样本管理器”里的“评估”功能检查样本质量。它会给你每个类别的统计信息包括均值、标准差、协方差矩阵。重点看标准差如果某类某个波段的标准差异常大说明样本里混进了别的类得回去清理。还有一个技巧把样本点叠加到影像上目视检查一遍。我经常发现有人把道路采成了建筑或者把水田采成了水体。这种错误在统计上不一定看得出来但分类结果会很明显。3. ArcGIS 中随机树分类的完整操作流程3.1 工具定位与参数面板解读ArcGIS Pro 里随机树分类工具在“Spatial Analyst”工具箱下的“分类”工具集里叫“随机树分类”或者英文 “Random Trees”。打开之后你会看到几个关键参数最大树数默认 30。这个参数控制森林里树的数量。树越多结果越稳定但计算越慢。我的经验是 50-100 棵足够超过 150 棵精度提升微乎其微时间却翻倍。最大树深度默认 30。控制每棵树的最大分裂层数。深度越大模型越复杂越容易过拟合。小样本时建议降到 10-15大样本时可以放到 20-30。每节点最小样本数默认 1。这个参数决定一个节点至少要有多少样本才能继续分裂。设得太小树会学到噪声设得太大树太浅欠拟合。我一般设 5-10。训练样本随机比例默认 100%。这是每棵树用的样本比例。随机森林的精髓就在于每棵树用不同的样本子集所以这个值通常设 60%-80%而不是 100%。设 100% 就退化成 Bagging 了多样性不够。特征子集比例控制每次分裂时随机考虑的特征波段比例。默认是 1 除以波段数的平方根。比如 6 个波段就是 1/2.45 约等于 0.4。这个值一般不用改除非你波段特别多。输出特征重要性勾上。这个选项会生成一个文本文件告诉你每个波段的重要性得分。我每次都会勾方便后续优化波段组合。3.2 参数调优的实操记录我拿一景 6 波段的多光谱影像做过一组对比实验研究区包含林地、水体、耕地、建设用地四类训练样本每类 200 个像元。下面是我记录的参数组合和对应精度树数深度最小样本样本比例总体精度Kappa30301100%82.3%0.765020570%87.6%0.8310020570%88.1%0.84100151060%86.9%0.8215025570%88.0%0.84从这组数据能看出几个规律树数从 30 加到 50精度提升明显从 50 到 100提升很小100 以上基本没变化。深度从 30 降到 20精度反而升了说明默认的 30 过拟合了。最小样本数从 1 提到 5精度也有提升同样是抑制过拟合。所以我的推荐参数是树数 50-100深度 15-20最小样本数 5-10样本比例 60%-80%。这个组合在多数中等复杂度的场景下都能拿到不错的精度。3.3 特征重要性解读与波段优化跑完随机树打开特征重要性文件你会看到类似这样的输出Band_1: 0.12 Band_2: 0.08 Band_3: 0.15 Band_4: 0.35 Band_5: 0.22 Band_6: 0.08这个例子里Band_4近红外重要性最高符合预期因为植被在近红外反射强。Band_2绿光和 Band_6 重要性最低可以考虑去掉。去掉低重要性波段后重跑精度可能持平甚至略升但计算时间明显减少。但要注意特征重要性不是绝对的。如果两个波段高度相关随机树可能随机选其中一个导致另一个重要性被低估。所以别只看一次结果多跑几次取平均或者结合相关性分析一起判断。4. 最大似然分类的参数设置与对比实验4.1 MLC 工具的关键参数ArcGIS 里的最大似然分类工具参数比随机树少得多但每一个都很关键输入训练样本就是你采样的 shapefile 或 lyr。输入栅格波段选择参与分类的波段。这里有个技巧如果你前面做了波段选择只把选中的波段加进来别一股脑全塞。输出分类栅格指定输出路径和文件名。拒绝分数这个参数很多人不知道干嘛的。它控制一个像元被拒绝分类的阈值。默认是 0表示不拒绝任何像元。如果你设成 0.01那么属于所有类别的概率都低于 0.01 的像元会被归为“未分类”。这个参数在样本不充分时很有用能避免强行分类带来的错误。我一般设 0.001-0.01。先验概率默认 EQUAL表示各类先验概率相等。如果你研究区水体面积远小于林地可以设成 FILE提供一个先验概率文件。但多数情况下 EQUAL 就够了除非类别面积差异极端悬殊。4.2 协方差矩阵的陷阱与应对MLC 最核心的中间产物就是协方差矩阵。ArcGIS 在训练样本评估时会输出每个类别的协方差矩阵。你要重点看两个东西行列式值如果某个类别的协方差矩阵行列式接近 0说明这个类别的样本在某些波段上几乎没有变异或者波段之间高度线性相关。这会导致矩阵求逆不稳定分类结果异常。解决办法是去掉冗余波段或者增加样本变异。条件数条件数太大比如超过 1000说明矩阵病态。同样会导致求逆不稳定。我遇到过最夸张的一次条件数到了 10 的 8 次方分类结果全是噪声。后来去掉两个高度相关的波段条件数降到 200 多结果就正常了。所以我的建议是MLC 之前一定要检查协方差矩阵。ArcGIS 的训练样本管理器里有“保存协方差矩阵”的选项保存成文本文件打开看。如果发现异常先处理波段相关性再重新采样。4.3 两种分类器的同场景对比我用同一景影像、同一套训练样本分别跑了 MLC 和随机树结果如下指标最大似然随机树总体精度84.2%88.1%Kappa0.790.84林地生产者精度86%91%水体生产者精度92%94%耕地生产者精度78%85%建设用地生产者精度80%83%运行时间45 秒3 分 20 秒随机树在各类别上全面占优尤其是耕地和建设用地提升明显。但代价是运行时间多了 4 倍多。如果你的研究区很大或者需要反复调参MLC 的效率优势就体现出来了。还有一个有意思的现象MLC 在耕地和建设用地上错分严重主要是这两类在光谱上重叠多且分布非正态。随机树因为不假设分布处理这种重叠更从容。5. 分类后处理与精度评价的完整闭环5.1 分类后处理去噪与平滑不管用哪种分类器原始结果都会有椒盐噪声——孤立的、跟周围类别不一致的小图斑。这些噪声在目视上很难看在面积统计上也会引入误差。ArcGIS 里可以用几个工具处理众数滤波在“Spatial Analyst”的“邻域分析”里用“滤波器”工具选择“众数”滤波窗口大小 3×3 或 5×5。这个操作会把每个像元替换成邻域内出现最多的类别。3×3 窗口能去掉大部分孤立噪声5×5 更激进但可能抹掉小地物。边界清理在“制图综合”工具集里有“消除”工具可以把小于指定面积的图斑合并到相邻的最大图斑里。我一般设最小图斑面积为 4-9 个像元。聚类处理如果噪声特别严重可以先用“聚类”工具做一次分割再对分割后的区域做分类。这个思路是先空间聚类再光谱分类能有效抑制噪声。但要注意后处理不是万能的也不能过度。我见过有人为了图面好看反复滤波最后把一条真实的小路都滤没了。后处理的原则是只去噪声不改变真实地物边界。5.2 精度评价混淆矩阵怎么读精度评价是分类的最后一环也是最容易被糊弄的一环。ArcGIS 里可以用“混淆矩阵”工具输入验证样本和分类结果输出一份详细的精度报告。报告里几个关键指标总体精度正确分类的像元数除以总验证像元数。这个指标最直观但受类别面积影响大。如果某一类面积特别大总体精度会被它主导。Kappa 系数排除随机一致性的精度指标。Kappa 大于 0.8 算很好0.6-0.8 算中等低于 0.6 就得回去检查了。生产者精度某一类被正确分类的比例。反映的是“漏分”情况。生产者精度低说明该类有很多像元被分到了别的类。用户精度分类结果中某一类真正属于该类的比例。反映的是“错分”情况。用户精度低说明该类里混进了很多别的类。我一般重点看 Kappa 和各类的用户精度。如果某一类用户精度特别低说明该类被严重错分得回去看训练样本是不是有问题。5.3 精度不达标时的排查清单分类精度上不去别急着换算法先按下面这个清单排查问题现象可能原因排查方法某类精度极低训练样本代表性不足检查该类样本是否覆盖全部变异两类互相错分严重光谱重叠看两类均值差异考虑加辅助数据整体精度低波段选择不当看特征重要性去掉冗余波段结果噪声多样本边界不干净放大检查样本是否含混合像元随机树结果波动大样本太少增加样本量或降低树深度MLC 结果异常协方差矩阵病态检查条件数去掉相关波段这个清单我基本每次分类都会过一遍能解决 80% 的精度问题。6. 实操心得与常见坑位实录6.1 样本采集的五个坑坑一样本空间自相关。很多人图省事在一个区域画一堆样本统计上这些样本高度相关等于只有几个独立样本。解决办法是空间分层采样每个网格采几处。坑二验证样本不独立。训练和验证样本挨着验证精度虚高。解决办法是两套样本分开采最好在不同区域。坑三样本类别不平衡。小类样本太少分类器直接忽略。解决办法是给小类多采样或者用加权方法。坑四样本边界模糊。混合像元混进样本统计量失真。解决办法是放大到足够比例尺只采地物核心区域。坑五样本标签错误。把道路标成建筑把水田标成水体。这种错误统计上不一定看得出来但分类结果会很明显。解决办法是采样后目视检查一遍。6.2 参数调优的经验法则随机树的参数调优我总结了一个简单的顺序先固定树数 100深度 20最小样本 5样本比例 70%跑一遍看基线精度。如果精度不够先加树数到 150看有没有提升。没提升就说明不是树数的问题。调深度精度低且训练误差也低说明欠拟合加深度训练误差低但验证误差高说明过拟合减深度。调最小样本数噪声多就加大欠拟合就减小。调样本比例一般 60%-80% 之间太低欠拟合太高多样性不足。MLC 的参数调优空间小主要就是拒绝分数和先验概率。拒绝分数从 0.001 开始试逐步加大看未分类像元比例。一般控制在 5% 以内比较合理。6.3 分类结果的后处理尺度后处理的尺度很关键。3×3 众数滤波能去掉大部分孤立噪声但会轻微模糊边界。5×5 更激进适合大区域制图但小地物可能消失。我的经验是如果研究区是城市地物破碎用 3×3别用 5×5。如果研究区是自然区域地物连片可以用 5×5。消除最小图斑面积设 4-9 个像元别超过 16否则真实小地物会被合并。后处理之后一定要重新做精度评价因为滤波会改变分类结果。我见过有人滤波后精度反而降了因为把真实的小地物滤没了。6.4 两种分类器的组合使用思路最后分享一个进阶技巧把两种分类器组合起来用。具体做法是先用随机树跑一遍得到初始分类结果和特征重要性。然后根据特征重要性选出最重要的几个波段再用 MLC 跑一遍。如果 MLC 结果在某个类别上比随机树好就把那个类别替换过来。这种“随机树选波段 MLC 精分类”的组合在我做过的几个项目里精度比单用任何一种都高 2-3 个百分点。还有一种思路是用随机树做特征选择用 MLC 做最终分类。因为 MLC 在低维特征空间里更稳定而随机树擅长处理高维。先用随机树筛掉冗余波段再用 MLC 分类既保证了精度又控制了计算量。这个组合思路不是万能的但在中等复杂度的场景下确实能拿到比单一分类器更好的结果。你可以拿自己的数据试一下对比一下三种方案纯 MLC、纯随机树、组合的精度看看哪种最适合你的研究区。分类这件事说到底是对地物光谱行为的理解。算法只是工具样本才是灵魂。我见过太多人花大量时间调参数却不肯花半小时好好采样本。结果就是参数调到天上去精度还是上不来。反过来样本采得好用默认参数都能出不错的结果。所以如果你刚开始做遥感分类先把精力放在样本上算法的事交给 ArcGIS 就行。