)
在eCognition里做面向对象影像分析几乎所有新手都会卡在同一个问题上分割尺度到底设多少这个看着不起眼的参数直接决定你后面分类是“碎成一地”还是“糊成一片”。ESP2这个插件就是用来回答这个问题的——它不会直接给你一个唯一答案而是基于局部方差变化率帮你从一串候选尺度里挑出最合理的几个。这篇文章我把ESP2从安装、参数设置、运行到结果解读的全流程拆开讲一遍附上我平时用易康时积累的调整经验和踩坑记录希望对正在为分割尺度头疼的人有点帮助。1. 为什么分割尺度值得专门花时间研究1.1 分割尺度到底在控制什么eCognition里的多分辨率分割Multi-resolution Segmentation是整个面向对象分析的地基。尺度参数Scale Parameter表面上看只是一个数字其实它代表的是“允许合并进同一个对象的异质性上限”。数字越小对象越碎数字越大对象越整。它不是米、不是像素而是一个无量纲的阈值这一点刚接触的人特别容易误解。举个例子你就明白了。假设影像里有两栋相邻的房子屋顶材质、颜色都不一样。尺度设成10的时候软件很可能把每栋房子切成好几个对象因为屋顶内部还有细微明暗差异尺度设成50的时候软件可能把两栋房子连同中间的院子合并成一个对象因为它们的整体色调差异没超过阈值。这两种结果对后续分类都是灾难一个“过分割”一个“欠分割”。所以分割尺度本质上是你要提取的地物大小和影像分辨率之间的一个平衡点。问题在于不同地物的合适尺度往往差得很远道路、树冠、建筑、农田地块各自的最优尺度完全可能不在一个量级。人工一个个试参费时费力还不一定试到点上这时候就需要ESP2这类工具来帮我们做系统性扫描。1.2 ESP2的统计学原理局部方差与变化率ESP2Estimation of Scale Parameter 2的核心思路并不复杂它靠两个统计量找“拐点”局部方差Local Variance简称LV和局部方差的变化率Rate of Change简称ROC。先说局部方差。软件在每一个候选尺度下都会重新做一次多分辨率分割然后计算所有分割对象内部像素灰度值的方差再对所有对象取平均。尺度很小的时候对象内部基本是同一种地物局部方差很低随着尺度逐渐变大对象开始把不同的地物类型包进来对象内部的光谱差异增大局部方差也会随之上升。这里的关键是局部方差并不是均匀上升的它在某些尺度上会突然跳升这种跳升往往意味着分割结果正好跨过了某类地物的边界开始“吞并”相邻的其他地物。ESP2做的就是计算局部方差的变化率ROC公式近似为相邻两个尺度的LV差值除以上一尺度的LV再取百分比。ROC会出现明显的尖峰这些尖峰对应的尺度就是统计学意义上的“最佳尺度区间”。其实这个思路和信号处理里找突变点很相似——通过一阶导数定位变化的剧烈位置。很多用过Origin画过曲线的人应该很好理解你把LV和ROC两条线叠在一起看ROC尖峰对应的横坐标就是你要关注的那几个尺度。1.3 ESP与ESP2第二代改进了什么可能有人好奇ESP2名字里的“2”是什么意思它不是让你在参数面板里填一个2而是代表这个工具的第二代版本。最早由Dragut等学者提出的ESP工具主要针对单个波段做分析实现思路是在eCognition的插件框架里循环执行分割并记录局部方差。ESP2则在原版基础上做了两个重要改进一是支持多波段同时参与计算这样能综合利用影像的光谱信息比如同时把红、绿、蓝、近红外四个波段放进去而不是只看单个灰度波段二是优化了最佳尺度的筛选方式输出的ROC峰值更稳定对存在多尺度地物的复杂影像更适用。对于做高分辨率遥感影像的人来说这两个改进都很实用因为真实地物很少有只靠一个波段就能分清楚的情况。2. 安装与调用把ESP2插件请进eCognition2.1 环境准备与插件文件放置ESP2插件的安装比一般软件简单但有一个关键前提eCognition Developer版本要匹配。我自己在eCognition 8、9、10这几个版本上跑过都能正常使用但插件dll文件必须和eCognition的位数一致。简单说就是32位的eCognition配32位的ESP264位配64位。这个如果不匹配最典型的症状是插件列表里能看到它但一运行就报错或者完全没有反应。工具包下载好之后通常解压出来会有一个dll文件比如“ESP2.dll”。安装路径一般是eCognition的安装根目录拿Windows系统默认目录举例常见位置是C:\Program Files\Trimble\eCognition Developer 9.x把dll文件复制到这个目录下就算完成一半了。这里有个容易被忽视的坑如果eCognition装在“Program Files”这类系统保护目录下直接复制可能被权限拦下来建议先用管理员身份打开资源管理器再复制或者关掉一会杀毒软件——个别杀毒软件会把dll当可疑文件隔离这个我后面还会专门提到。2.2 在eCognition中加载并验证装好dll后启动eCognition Developer打开或新建一个项目。如果你用的是比较新的版本插件一般会被自动加载不需要额外操作。怎么确认它加载成功最直接的方法是打开Process Tree右键点击任意根节点选择“Append Process”不同版本叫法可能略有差异但都在Process Tree的右键菜单里然后在算法下拉列表里找有没有“ESP2 (Estimation of Scale Parameter 2)”这一项。如果算法列表里没有ESP2可以手动加载。不同版本路径略有不同常见操作是在eCognition的菜单栏里找“Tools”或“Ruleset”相关菜单里面会有“Plugins”或“Plugin Manager”选项打开后选择“Load”或“Add”定位到你刚才复制过去的dll文件加载完成后重启软件再检查。有些版本还支持把ESP2插件绑定到某个Ruleset中直接通过运行规则集来调用这种用法适合批量处理多个项目时使用。验证插件真正能用我的建议是别一上来就跑大影像。先找一小块数据在ESP2参数面板里设置一个非常小的搜索范围比如初始尺度10、步长10、只跑3步能跑出结果就说明插件工作正常。这一步看起来多余但能省掉后面排查问题的大量时间。3. 参数设置逐项拆解每个选项背后的逻辑3.1 波段选择选多了不一定好ESP2参数面板里第一个要决定的就是让哪几个波段参与计算。我的经验是选2到3个和目标地物光谱差异最明显的波段就够了不必把影像所有波段全勾上。原因在于ESP2计算的是分割对象的局部方差如果你把所有波段都放进去相当于把各种地物的光谱变化全部平均到一起。某些波段里明显的边界特征可能被其他波段里嘈杂的纹理稀释最后ROC曲线的尖峰变得平平的不好找。比如你做城区建筑提取用的是四波段影像红、绿、蓝、近红外建筑和植被在近红外波段上差异很大那么红波段加近红外就是很好的组合。如果只做水体提取红外波段和绿波段往往更敏感。因为我见过不少初学者图省事把所有波段全选结果跑出来的结果峰谷不清宁可少选也不要多选。3.2 尺度范围与步长如何控制搜索密度尺度范围和步长直接决定ESP2要跑多少次。参数面板里一般会有几个关键字段起始尺度Initial Scale / Starting Scale、步长Step Size、最大迭代次数Number of Steps / Number of Scale Steps。终止尺度不需要你直接填它等于“起始尺度 步长 × 步数”这个换算关系要记清楚。怎么搭配才合理我的常用做法是分两轮。第一轮先做粗扫起始尺度1步长5步数40这样能覆盖到尺度200左右的情况计算量不大找到几个候选峰以后第二轮在候选峰附近做细扫比如尺度15到35步长1找到更精确的位置。这样比一上来就用步长1从头扫到尾能省下大量运行时间而且结果更稳定。需要注意的是如果影像分辨率很高比如小于0.1米地物细节丰富尺度范围可以适当放大如果影像分辨率本来就低几百米的大尺度通常已经超出了面向对象提取的意义设得太高反而浪费时间。3.3 Shape与Compactness别忘了先固定形状约束这个是我认为ESP2使用中最容易被忽略的环节。ESP2在做每次试分割的时候并不是只靠尺度一个参数在跑而是同样要用到多分辨率分割的形状参数——Shape形状权重和Compactness紧致度。换句话说你可以在ESP2的参数面板里看到这两个设置它们会直接影响每个尺度下分割对象的形态进而影响局部方差数值。问题在于如果Shape和Compactness不确定那么ESP2给出的“最佳尺度”也没有统一基准。同一个影像Shape设0.1和设0.5跑出来的最佳尺度可能差出好几十。所以在跑ESP2之前我强烈建议先根据你要提取地物的形态定好这两个参数一般Shape设置在0.1到0.3之间Compactness设置在0.5到0.7之间。比如提取比较规整的建筑轮廓Compactness可以稍高一点提取自然的林地、农田边界Shape应该低一些让光谱信息主导分割。定下来之后ESP2的整个尺度搜索才有意义。3.4 输出设置与计算量评估参数面板里还会有输出路径设置有的版本还提供图形输出选项。我习惯单独建一个工作文件夹专门放ESP2的输出不要丢到eCognition工程文件夹里和其他中间文件混在一起。输出文件一般是txt格式记录每个尺度下的统计指标部分版本会同时生成图表文件。计算量方面ESP2本质上是循环执行分割每一次迭代都是一次完整的分割运算。影像越大、步数越多耗时越长。一块几千乘几千像素的影像步长1跑100步跑个把小时很正常。如果你用的是大范围影像更聪明的做法是先裁一个包含目标地物多样性的代表性样区用样区跑ESP2得到尺度后再应用到整景影像上。我在做正式实验时一般会把样区设置在能覆盖所有目标类别的区域尽量保持地物组合和整体影像一致这样得到的结果才够代表性。4. 运行与结果解读从一堆数字里找到最佳尺度4.1 运行过程与控制台日志怎么看设置完参数点击运行ESP2就开始工作了。运行过程中eCognition底部的信息栏或状态窗口会不断刷出新日志显示当前正在处理的尺度以及对应的局部方差值。不同版本日志格式不一样但大体上会包含类似“Scale: 20, Mean LV: 135.72”这样的信息。别只顾着等留意一下日志是值得的——如果日志长时间卡在某个尺度不动要么是影像太大要么是参数设置有问题早发现早处理。运行结束后部分版本的ESP2会直接在信息栏输出提示告诉你ROC-LV最大值出现在哪个尺度有的版本还会列出多个候选尺度。但更多的版本是沉默的把结果写进文件所以不要只盯着屏幕去输出文件夹里看才是重点。4.2 结果文件里的字段与曲线绘制用记事本或Excel打开ESP2输出的txt文件常见字段至少有这三列尺度Scale、局部方差均值Mean LV、局部方差变化率ROC-LV。有些版本还会附带对象数量、平均面积等信息这些可以作为辅助判断。用Excel或Origin把LV和ROC-LV分别做成两条折线横轴是尺度左侧纵轴是LV右侧纵轴是ROC-LV你会看到LV曲线整体是往上走的而ROC-LV曲线则会出现一个个尖峰。这些尖峰对应的尺度就是候选最佳尺度。如果影像里目标地物类型比较单一通常只有一个非常明显的尖峰如果地物类型复杂比如城区影像里有道路、房屋、树冠、地块那么出现多个尖峰是正常现象每个峰可能对应不同类别的地物。有一点要注意第一个尖峰往往出现在很低的尺度比如1到3那个对应的是影像原始像素噪声级别的分割一般没有太大实际意义可以忽略重点看后面的主峰群。4.3 多个峰值怎么选回到影像验证拿到多个候选尺度以后下一步是回到eCognition里验证。我会对每个候选尺度分别执行一次多分辨率分割然后把分割边界叠到原始影像上看效果。判断标准简单直接目标地物被切割得既不过碎也不过整边界和实际地物轮廓基本贴合那就是合适的尺度。为了帮助判断可以给一些经验参考区间。以0.05米左右的无人机影像为例建筑屋顶和独立树冠的合适尺度常常落在20到40之间道路和裸地的尺度可能在30到60大片的农田或水体可能要到80以上。如果是0.5米到2米的高分影像这些数值整体要往大调建筑可能到50到100地块到150以上。但这些只是经验范围不同地区、不同传感器的数据差异很大最终判断还是以目视验证为准表格只能帮你缩小搜索范围不能替代验证。影像类型典型地物常见尺度参考范围0.05米无人机影像独立建筑、树冠20~400.05米无人机影像道路、小地块30~600.5~2米卫星影像建筑群、街区50~1000.5~2米卫星影像大尺度农田、水体120~200以上如果某个候选尺度下目标地物和背景还是粘连严重可以适当缩小尺度如果地物被拆得七零八落就适当放大。这个微调过程看起来费时间但确实是每个实际项目都绕不开的步骤。ESP2的价值在于帮你把搜索范围从“完全瞎试”缩小到两三个候选值剩下的判断交给你的眼睛和项目需求。5. 我踩过的坑典型问题与避坑清单5.1 插件加载了但运行没反应我在早年的项目里就碰到过一次ESP2算法列表里也看到了参数也填了但一点运行就像石沉大海日志里什么都没有。排查了半天最后发现是dll位数和软件版本不匹配。这个在最开始安装时就要确认好别等跑起来才发现。还有一种情况是杀毒软件把dll隔离了。尤其是Win10和Win11系统自带的安全中心有时候会对未知dll下手。如果插件之前能跑后来忽然不能用了去Windows安全中心的隔离记录里翻一翻大概率能找到被清理的dll文件恢复一下就行。5.2 步长设置太密跑到天荒地老不少人第一次用ESP2时喜欢把步长设成1、步数设到200觉得这样最精细结果一跑就是大半天极其浪费时间。我的经验是先粗后细。第一遍用步长5到10做全局扫描确定ROC峰值的大致区间再在目标区间用步长1加密。这样跑出来的结果精度和一次性全程步长1几乎没差别但时间可能缩到三分之一甚至更少。如果影像特别大该裁样区就裁样区我前面已经说过这是很必要的操作步骤。5.3 ESP2给出的尺度与目视不符有时候ROC曲线尖峰非常明显但你按这个尺度去做分割发现目标对象并不是理想的完整形状。这不是ESP2算错了而可能是两个原因一是Shape和Compactness参数和你的地物形态不匹配这时候要回去重新调整形状参数而不是死磕尺度二是影像本身噪声多特别是有云影、阴影或者传感器条纹噪声时局部方差会被噪声干扰ROC峰值位置可能偏向噪声尺度。解决办法是先对影像做适当的预处理比如轻微的高斯滤波去噪再跑ESP2。5.4 版本与dll位数的兼容坑eCognition的32位版本和64位版本插件dll是不能通用的。我见过有人从老同事那边拷了一个ESP2放到自己的64位软件里怎么都加载不了就是这个原因。另外部分eCognition 10的版本对插件管理方式做了调整可能不再自动扫描安装目录需要在插件管理器里手动指定路径加载后重启软件。如果换了新电脑或新版本软件第一件事就是确认你的ESP2工具包和当前软件环境是不是匹配。5.5 一个提升结果可靠性的实用习惯我个人用ESP2的固定流程是这样的先固定Shape和Compactness再跑粗扫找到候选峰后做一次细扫然后对每个候选尺度做分割并目视验证。如果指标允许还会把ESP2选出的尺度与人工勾绘的参考对象做面积对比看一下对象尺度和实际地物接近程度。这套流程看起来比直接试参多几步但每一步都有明确目的省下的时间其实是大量的重复劳动。说起来我还在一个小技巧上受益很久拿到ESP2候选尺度后我会在这个尺度附近再做一组“尺度加减5”的小对比。比如ESP2给出最佳尺度28我会把23、28、33三个尺度各跑一遍叠在影像上对比。这样做的好处是能给后面分类阶段留一点余量因为不同时相、不同区域的影像最佳尺度往往会有几个单位的浮动选一个相对稳健的尺度比死盯一个精确值在实际项目中更有用。