ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

ERDAS监督分类全流程拆解:从分类器选型到精度验证的工程实践

ERDAS监督分类全流程拆解:从分类器选型到精度验证的工程实践 大家催更的ERDAS监督分类第二篇来了。上一篇我们把训练样本采集和AOI工具讲透了但那只是准备工作真正决定分类结果能不能用、精度够不够高的是接下来的分类器选择、参数设置和后处理这三件事。很多人跑完Supervised Classification之后发现结果惨不忍睹水体碎成几百块、裸土和城区糊在一起、道路像被狗啃过。这不是ERDAS不行而是这些关键环节没有吃透。这篇就把从训练样本到最终分类成果之间的完整链路拆开讲一遍顺便回答一个后台高频问题ERDAS到底能不能跑在Mac上。先把结论放在前面监督分类不是点一下“运行”就结束的活。一个能用于研究或生产的分类结果至少要经过样本可分性检验、分类器选型、参数调优、分类后处理、精度验证五个环节。这五个环节里前三个决定分类结果的“上限”后两个决定最终交付物的“下限”。下面按这个逻辑逐段展开。1. 分类器选型默认套路反而容易翻车1.1 四种内置分类器的判定逻辑差别ERDAS的监督分类模块提供了四种分类器平行六面体、最小距离、马氏距离和最大似然法。很多教程都是一句“推荐使用最大似然法”带过但实际工作中最大似然法翻车的概率并不低。先看看这四种分类器各自在做什么。平行六面体是最“简单粗暴”的。算法会把每个类别在每一波段上的均值、标准差算出来以均值加减若干倍标准差构成一个多维“盒子”像元落在哪个盒子里就归为哪个类别。优点是计算量极小一张Landsat影像几秒钟就能跑完缺点是一旦两个类别的光谱范围有重叠一个像元可能同时落进多个盒子判断逻辑就开始“打架”误分现象非常严重。最小距离法比平行六面体稳一点。它计算每个像元到各个类别均值向量的欧氏距离距离哪个类别最近就归到哪一类。但它的隐含假设是每个类别的光谱分布形态是“圆形”的即认为所有类别的方差相同这在真实遥感影像里几乎不成立。当某类地物光谱起伏剧烈、另一类地物光谱非常平稳时最小距离法的分类精度会明显下降。马氏距离法是升级版。它在距离计算中引入了协方差矩阵相当于把“圆形”变成了适配数据分布的“椭圆形”更真实地刻画了各类别的光谱扩散形态。它对异常值比较敏感样本质量不好时容易被个别极端像元带偏。最大似然法的数学基础最扎实。它假设每个类别的光谱值服从多维正态分布然后计算每个像元属于某个类别的概率按概率大小判类。在样本满足正态分布、样本量充足的前提下它是四种分类器中精度最高的选择。1.2 我的选择思路数据条件和地物复杂程度决定一切我实际项目里选分类器主要看三个指标波段数、地物光谱可分性、训练样本量。波段数少的时候要特别小心。比如只有4个波段的无人机多光谱影像每类样本的协方差矩阵是4×4如果某类样本像元数不足协方差矩阵无法求逆最大似然法要么报错要么输出完全不可信的结果。这种场景我用马氏距离反而更稳。样本量方面最大似然法要求每类训练像元数至少大于波段数否则协方差矩阵无法可靠估计。我的经验值是每类样本像元数至少达到波段数的10倍以上少于这个数就退回到马氏距离。地物可分性与类别数量直接相关。比如把常绿林、落叶林、草地分成三类时这三类的绿色波段反射率差异很小光谱重叠严重。如果盲目用最大似然法强行区分结果大概率是三类随机交错。这种场景下我更倾向于把光谱相似的类别合并成一个大类再通过其他波段组合或多时相数据做细分。1.3 不同场景下的分类器对照表整理一张我在培训课上常用的对照表基本覆盖了大多数场景分类器原理速度精度水平适用场景常见坑平行六面体光谱区间判断最快较低快速预览、底图粗分类类别光谱重叠时大面积误分最小距离欧氏距离比较较快中低类别差异大的简单场景忽略协方差方差大的类别残废马氏距离带协方差的距离度量中等中高波段数少、样本量有限异常值会拉偏协方差估计最大似然概率密度函数判类较慢高前提满足时样本充足、光谱近似正态分布样本质量差时过拟合噪声再多说一点ERDAS在很多版本里允许你在最大似然分类时额外输出一个distance文件。这个文件记录的是每个像元归入某个类别的置信度信息它比分类结果本身更值得分析。哪片区域错分风险高、哪片区域分类确定性低看distance文件一目了然。做分类后抽样检查时我会优先去这些低置信度区域布点而不是随机撒点。2. 参数面板里那几个选项很多人从来没看懂2.1 Non-Zero Weight Threshold不是摆设打开Supervised Classification参数面板满屏英文弹窗大部分人的反应是保持默认值直接点OK。我以前也这样直到有一次分类结果里出现大片不应该存在的类别排查半天才发现是非零权重阈值的问题。Non-Zero Weight Threshold默认值通常是0.0。它控制的是输入栅格中权重为0的像元是否参与分类。当你对影像做过掩膜处理或者用AOI排除了某些区域时这些区域在实际计算中的权重是0。阈值保持0.0时权重为0的像元仍然会被强行分到某个类别里设置为一个小的正值比如0.1这些无效区就会被直接判为Unclassified。这个参数的实际意义在于如果不想让掩膜区域“污染”分类统计就把它设成0.1或更大一点如果希望全图每个像元都必须有归属就用0.0。2.2 Probability Factor让“犹豫不决”的像元现形概率因子是我在所有参数里最看重的一个。它默认是1.0只在最大似然分类中生效。最大似然法会给每个像元算出属于各个类别的概率并取概率最高的类别作为分类结果。但问题在于有些像元属于A类的概率是0.4属于B类的概率是0.38两者几乎打平分类器只是“矬子里拔将军”硬选了一个。这类像元往往是错分的高发区。Probability Factor干的事情就是给这种“犹豫不决”加上一道约束只有当最高概率与次高概率的比值达到设定值时才允许把像元判给最高概率类别否则一律标记为Unclassified。默认1.0相当于不加约束调到1.2或1.5相当于要求最高概率必须比次高概率高出20%或50%才算数。实际使用中我第一轮通常用1.0跑如果分类结果里出现大量细碎的“杂质”像元不急着做后处理先调成1.2或1.5重跑一遍。很多时候那些看起来像“椒盐噪声”的东西其实是分类器信心不足的产物概率因子一收紧碎斑自己就消失了。2.3 协方差处理和每类最大像元数协方差处理选项在不同版本里叫法略有差别常见的是让你在“使用平均协方差”和“使用单个类别协方差”之间选择。使用平均协方差会假设所有类别光谱分布的离散程度一致计算快但对复杂场景过于粗糙。使用单个类别协方差更贴近实际但要求每类样本量充足否则协方差矩阵不稳定。我的习惯是保持默认的单个类别协方差只有出现协方差奇异错误时才退化用平均协方差。Maximum Pixels per Class是另一个容易踩坑的选项。它限制单个类别最多可以分到的像元数。当某个类别的实际分布区域非常大比如水体占整幅影像的80%而你又设了一个过小的上限时分类过程会被截断出现大面积未分类区域。默认值通常很大不需要动它但如果你发现分类结果中某个类别“突然消失”、变成了大量的Unclassified记得回来看一眼这个参数。2.4 一个实际的参数组合案例假设我手里有一幅4波段的无人机多光谱影像目标是把影像分成水体、植被、裸土、建筑物四类。波段数4每类训练样本我控制在200个以上协方差矩阵可以可靠估计所以分类器选最大似然。Probability Factor第一轮用1.0跑之后再跑一版1.5的做对比。Non-Zero Weight Threshold保持0.0因为影像边缘我已经提前做过了掩膜处理不需要在分类器里再做一次。输出选项里勾上distance文件方便后续分析低置信区。这一套参数下来既保证了分类器有足够的数据支持又能通过概率因子控制错分还能在分类后快速定位需要重点检查的区域。3. 从样本到分类结果监督分类的执行细节3.1 跑分类前先给训练样本做一次“体检”很多人在训练样本选完之后就直接开始分类这一步其实是最大的分水岭。样本质量合不合格光靠肉眼在Viewer里看是不够的要用定量指标验证。在ERDAS中打开Signature Editor选中所有训练类别计算Signature Separability。它会输出两类指标Jeffries-Matusita距离和Transformed Divergence两者的取值范围都是0到2.0。大于1.9说明两个类别可分性极好分类器很容易把它们分开1.0到1.9之间说明可分性可以接受但要注意小于1.0说明这两个类别在光谱上基本无法区分强行保留只会互相干扰。我刚开始做分类时跳过这一步选完六个类别直接跑最大似然结果分类图里农田和草地以随机状态互相穿插。回头计算分离度才发现这两个类别的JM距离只有0.7。后来把这两个类别合并重新分类效果立刻正常了。所以现在无论多急我都会先花两分钟跑一遍分离度检查。3.2 Supervised Classification参数面板逐项填确认样本无误后执行分类的路径是Classifier → Supervised Classification不同版本的菜单位置略有差异但核心路径一致。输入栅格选择待分类影像。这里有个容易犯的错误输入影像必须和制作样本时使用的是同一幅影像、同一波段顺序。如果换了一幅影像或者调整了波段顺序签名文件里的统计特征就对不上了分类结果自然乱成一锅粥。输入签名文件选择刚才体检过的.sig文件。输出文件设置好路径和文件名。分类器选择Maximum Likelihood。非零权重阈值0.0概率因子按上一章的逻辑设。高级选项里有一个容易被忽略的设置类别名。ERDAS会弹出一个属性设置框让你给输出栅格的每个类别起名字、指定颜色。如果不在这里填后面的分类图属性就是Class 1、Class 2这样的默认名制图时还得重新映射纯粹给自己找麻烦。我习惯在这里直接把类别名填好颜色也调成和地物视觉特征接近的色系。3.3 分类结果的第一眼检查分类跑完后把结果文件拉进Viewer叠加原始影像做半透明对比。我习惯把分类图透明度调到40%到50%逐类检查。看什么第一是水体是否完整覆盖了所有水面有没有和阴影混在一起第二是建筑物有没有混入大量裸土像元这俩在光谱上经常分不开第三是道路在影像上是否连续有没有被其他类别切断。第一眼检查的核心目的不是找问题而是记录问题发生的区域。我会用AOI工具在明显错分的区域画几个图斑截图保存再对照原始影像和训练样本点位找原因。是样本选得不典型还是分类器参数不合适还是地物光谱本身难以区分。这个排查思路必须要清晰否则你只是在盲目地一遍遍重跑浪费时间。4. 分类后处理四件套Clump、Sieve、Eliminate、Recode4.1 椒盐噪声怎么来的分类结果很少是干净整洁的连续图斑。像元级别的分类会在目标区域内外产生大量孤立像元和小碎斑俗称“椒盐噪声”。产生原因主要有两个一是原始影像本身存在传感器噪声二是地物光谱在像元尺度上确实存在局部波动同一个物体内部的不同像元被分到了不同类别。椒盐噪声不只是影响美观还会严重高估小地物的面积统计。比如一片连续的水域如果中间散布着几百个被分成植被的孤立像元面积统计时这些像元会被排除在水域之外统计结果偏差很大。4.2 后处理工具的正确使用顺序ERDAS提供了三个常用工具Clump、Sieve、Eliminate。菜单位置通常在Interpreter → GIS Analysis下。Clump把分类结果中相邻的同类像元连接成块相当于做了一次连通性聚类。经过Clump之后原本破碎的同类像元聚合成连续的斑块。Sieve按面积阈值删除“太小”的图斑。删除后这些像元变成NoData或归入背景类需要在下一步填充。Eliminate把小图斑合并到周边面积最大的类别中。它可以单独使用也可以紧跟Sieve之后把Sieve删出来的空值填上。正确顺序是Clump → Sieve → Eliminate。这个顺序不要打乱。先Clump是为了让碎斑聚合成块Sieve才能准确判断哪些图斑真的小到需要删除Eliminate最后做填充。阈值设多大低分辨率影像如Landsat我一般设100个像元以内无人机影像分辨率高可以设到500到1000像元但还是要看你的最小制图单元。如果拿不准先设一个较小的值比如50个像元跑完在Viewer里看碎斑消除效果不够再逐步加大。一上来就设几千像元真正的小水塘、小建筑物也会被一起抹掉得不偿失。4.3 Recode与分类结果矢量化后处理做完之后如果分类体系里有相似的细分类可以用Recode工具把几个细类合并成一个大类。比如把针叶林、阔叶林、混交林合并成“林地”把耕地、园地合并成“农业用地”。Recode的菜单位置也在Interpreter → GIS Analysis下操作非常简单指定输入栅格设置好各类别的旧值到新值的映射关系点OK就完了。但有一点要注意Recode会改变分类体系一旦执行就无法自发恢复。如果你后面还想分析细分类型建议对未Recode的分类结果做一次备份再操作。分类栅格处理干净之后如果需要做面积统计或矢量化出图可以在ERDAS的Vector工具里把栅格转成矢量。我更习惯的做法是先把分类栅格导出成GeoTIFF再在ArcGIS或QGIS里用栅格转面工具处理流程更顺手拓扑检查也方便。5. 精度验证别急着出图5.1 生成随机验证点分类结果“看着没问题”远远不够正式成果必须有量化精度指标支撑。ERDAS的精度验证模块在Classifier → Accuracy Assessment。流程分三步。第一步打开分类结果文件。第二步生成验证点抽样方式选Stratified Random也就是分层随机抽样保证每个类别都有足够数量的验证点。验证点数量我的经验是每类至少30个少于20个说服力不足。第三步在原始影像上逐个人工判读验证点的真实地物类型填进属性表。人工判读是精度验证里最费时间的一步也是不能跳过的一步。没有足够多的真实样本做参照后面的所有精度指标都是空中楼阁。5.2 三个精度与Kappa系数的读法验证点数填完之后点击Report生成精度报告。你需要关注四个指标。总体精度是正确分类的验证点占总验证点的比例行业一般要求85%以上。生产者精度衡量的是某个类别在真实世界中被正确识别出来的比例。偏低意味着漏分严重也就是真实存在的地物没有被分出来。用户精度衡量的是所有被分进该类的像元中真实属于该类的比例。偏低意味着误分严重也就是分错了的东西混进了这个类。Kappa系数是消除随机一致性之后的整体精度指标取值0到1。0.8以上很好0.6到0.8中等低于0.6说明分类结果基本不可信需要返工。5.3 精度不合格时的排查方向精度不达标大多数人第一反应是重新调分类器参数但我的经验是问题大概率出在训练样本而不是分类器。排查顺序第一步看混淆矩阵里哪两个类别互相混淆最严重回到Signature Editor里看这两个类的分离度。如果JM距离小于1.0直接合并或者重新选样本。第二步看低置信区域的分布。如果错分集中在影像边缘或阴影区考虑增加一个“阴影”类别把它单独分出去或者后期用掩膜处理。第三步检查验证点本身有没有问题。验证点如果全选在均匀的连片区域精度分数虚高也没有参考价值验证点必须覆盖地物边界和细碎区域这样的精度才真实反映图面质量。精度验证不是走过场而是帮你发现分类流程中真正薄弱环节的手段。每次精度不达标我都当成一次免费的问题诊断机会。6. 补一个后台高频问题在Mac上跑ERDAS6.1 为什么Mac上装不上ERDAS最近几乎每周都有人问“ERDAS mac版怎么下”。这里直接说清楚ERDAS官方没有macOS版本只有Windows版。网上能找到的“mac版ERDAS”基本都是用虚拟机方案实现的不是原生安装。所以如果你的主力机是MacBook确实需要在本地跑ERDAS唯一的办法是在虚拟机里装一个Windows环境。6.2 虚拟机方案的配置要点Intel芯片的Mac方案最成熟用Parallels Desktop或VMware Fusion装Windows 10或Windows 11再在Windows里正常安装ERDAS。Parallels的文件共享、USB透传做得最顺手影像数据放在macOS侧虚拟机里直接读共享目录也很方便。Apple Silicon芯片的Mac要麻烦一些。Parallels支持在Apple Silicon上运行ARM版Windows 11但ERDAS本身是x86架构的程序在ARM Windows里要经过系统模拟层运行性能和稳定性都会打折扣。如果你用的是M系列芯片我的建议是重活放到Windows台式机或云桌面去跑本地Mac只做数据组织和成果展示。硬要在Apple Silicon上跑也不是完全不行但遇到奇怪报错不要跟它较劲大概率是架构兼容问题。虚拟机配置方面内存至少给8GB显存不要省影像文件尽量放在虚拟机的本地磁盘或共享盘中不要放在外置U盘直接读取否则IO速度会成为瓶颈。6.3 跑不动时的备选思路如果确实电脑带不动项目又急不要死磕ERDAS。QGIS安装dzetsaka插件可以跑监督分类SAGA GIS有完整的分类工具链Orfeo ToolBox也提供了命令行分类器它们全都跨平台支持macOS。训练样本编辑和交互体验虽然不如ERDAS成熟但做常规地物分类完全够用。不是劝你放弃ERDAS而是给Mac环境下的临时场景多一条退路。等有条件了回到Windows工作站上用ERDAS做精细化的样本编辑和分类后处理才是效率最高的路径。回到开头那个话题。监督分类是一个环环相扣的流程任何一环偷懒最后都要在精度验证阶段暴露出来。我自己做了这么多年分类项目最大的体会是算法不背锅样本和参数才是决定成败的根源。如果你现在手里已经有一份跑得乱七八糟的分类结果别急着重跑先回去检查分离度和概率因子多半能省下大半天的时间。系列下一篇如果还能继续写我想专门聊聊阴影区、云遮挡、异物同谱这几类让所有分类器都头疼的场景看看有没有曲线救国的处理思路。
返回列表