
简介这份资源面向遥感与地理信息科学领域的初学者和开发者提供了一个基于Landsat影像的经典遥感图像分类样例帮助理解多光谱卫星数据处理的基本流程。压缩包内含4个文件包括用于执行分类的Python脚本、TIF格式的Landsat样例影像、用于加速图像显示的OVR金字塔文件以及记录影像信息的XML元数据整体大小约7.76MB结构清晰、便于快速下载运行。目前已有1113人学习或下载该资源。通过这份资源读者可以体验从影像预处理辐射校正、大气校正、几何校正到特征提取再到监督学习如随机森林、非监督学习如K-means与深度学习方法如CNN完成遥感图像分类的完整链路同时可结合脚本与示例影像实践分类模型的训练、评估及混淆矩阵、F1分数等指标计算。配套代码适合作为遥感课程设计、毕业设计或GIS开发入门参考。1. 从Landsat影像到地物分类我如何把tif文件变成一张能用的专题图做遥感这行的人几乎没人能绕开Landsat系列。这颗由美国NASA和USGS共同维护的中分辨率对地观测卫星从1972年发射第一颗到现在积累了超过50年的连续地表观测记录分辨率30米重返周期16天关键是全部数据免费开放。我当年第一次接触遥感就是用Landsat 8的影像做土地覆盖分类一张tif文件从下载到出图踩了无数坑也把整套流程摸了个透。这篇博客就把我实际做Landsat遥感图像分类的完整思路、操作步骤和翻车经验整理出来给刚入门的同学一条能直接照着走的路径。很多人拿到一个tif文件第一反应是这不就是一张图吗实际完全不是。tif更准确说是GeoTIFF里除了像素值还内嵌了坐标系、投影参数、像元大小、地理范围等一堆元数据你用普通看图软件打开可能只看到一片灰蒙蒙但放进GIS软件里它才真正变成带地理坐标的影像。Landsat的tif通常还是多波段的——一个文件里包含多个波段光谱通道比如Landsat 8有11个波段每个波段对应一个单独的光谱范围处理时要先把它们叠加成立体数据再做分类。这篇文章适合谁看刚上遥感课的学生、要处理卫星影像的GIS从业者、以及对土地分类感兴趣的自学者都适用。我不讲太多绕口的光谱学理论重点放在手上拿到一个Landsat tif文件后从哪一步开始怎么一步步把它变成一张地物分类图。2. 分类之前必须搞懂的3个核心概念2.1 光谱响应为什么不同地物可以被区分遥感图像分类的逻辑基础其实很朴素不同地物对太阳辐射的反射率不同。水体和植被在近红外波段的反射率差异极大——植被叶绿素在近红外波段形成高反射平台水体则在近红外之后几乎全部吸收所以同一片区域里植被和水在影像上表现为完全不同的亮度值。Landsat 8的波段设计就是专门为了区分这些地物可见光波段看颜色近红外波段看植被短波红外波段看土壤含水量和建筑物。分类就是利用这些光谱差异把每个像元归到它最可能属于的类别里。2.2 像元与类别分类的最小单位Landsat一个像元对应地面30米×30米的范围这一个像元只能归为一个类别——不存在这个像元一半是农田一半是林地这种模糊归属。这带来一个问题在破碎地形区域比如山地丘陵混合像元非常多分类精度很难提上去。我做过一次山区分类林地、灌木、草地交错分布30米分辨率下的混合像元比例高得吓人最后结果里很多像元被分错。这也是为什么理解像元的物理意义比盲目调分类参数更重要。2.3 训练样本与特征空间监督分类的基石分类器判别地物靠的不是看图片而是靠打标签——你需要人工选取一些已知地物类型的区域作为训练样本分类器再从样本里学习光谱特征波段值组合。每个像元在多个波段上各有一个值这些值组成一个多维向量所有像元在这个多维空间里的分布聚集情况决定了分类的难易程度。训练样本选得好不好直接影响最终分类精度这一步急不得。3. 数据处理全流程从原始tif到可分类影像3.1 数据下载与波段解压Landsat数据目前最常用的下载渠道是美国USGS的EarthExplorer平台也可以在国内的地质云、地理空间数据云等镜像站点获取。下载下来的数据通常是一个压缩包里面包含多波段图像文件MTL.txt元数据文件、波段单独存储的tif文件比如Landsat 8的B2、B3、B4分别对应蓝、绿、红波段、以及质量控制文件。注意很多新手第一次下载完Landsat数据看到一堆文件会懵。每个波段单独存成tif需要用ENVI或者ArcGIS的波段合成工具Composite Bands把需要的波段合并成一个多波段tif文件后续分类才能用。3.2 辐射定标与大气校正为什么必须做传感器记录的是地物反射辐射经过大气吸收、散射以后的值不是地表真实的反射率。不同时间、不同角度的影像大气影响程度不一样直接拿原始值去做分类模型训练换一景影像就失效了。所以必须做辐射定标把DN值转成辐射亮度值和大气校正去除大气影响得到地表反射率。ENVI里有成熟的工具链Radiometric Calibration然后接FLASH大气校正模块输入影像的中心经纬度、成像时间、传感器类型软件会自动计算大气参数。这一步在学术研究中是标准动作但如果是做快速目视解译或单期影像的初步分类至少也要做辐射定标。我见过不少人跳过大气校正结果分类精度凭空掉了10个百分点——物体光谱曲线完全变形分类器学到的都是错误规律。3.3 研究区裁剪正常只处理需要的地方一景Landsat影像覆盖范围约185公里×185公里文件动辄几百MB甚至上GB。你如果只关心一个小县城没必要拿全图跑分类处理速度慢不说还平白增加内存压力。用研究区域的矢量边界shp文件去裁剪影像这是标准操作。ArcMap里的Extract by Mask工具或者ENVI里的Subset Data from ROIs都能完成。实际操作中注意边界坐标系要和影像一致否则会出现裁剪结果偏移到奇怪位置的问题。4. 分类方法选型4种常用方案横向对比4.1 监督分类最大似然与支持向量机监督分类的核心逻辑是先教后分——先选训练样本教分类器认识各类地物的光谱长相再让它去给整幅影像分类。最大似然分类器Maximum Likelihood是经典算法假设每类地物的光谱值服从正态分布通过计算像元属于各个类别的概率来归类。它的优势是原理清晰、实现简单缺点是当类间光谱重叠严重时精度会明显下降。支持向量机SVM在样本量不大时表现更好它通过寻找最优超平面把不同类别在特征空间里分开对非线性可分的场景处理能力更强。我用同样的训练样本跑过一次对比SVM在林地/灌木混交区的总体精度比最大似然高7%左右但训练耗时也长不少。4.2 非监督分类新手快速出图的捷径非监督分类不需要训练样本它用聚类算法如ISODATA、K-Means自动把光谱相似的像元归为一类你只需要指定分出几类然后去给每一类赋予语义标签比如第3类是水域、第5类是大棚菜地。优点是操作简单、几乎不需要人工干预缺点也很明显——机器聚类的结果和你想要的分类体系可能完全对不上经常要反复调整类别数或者把聚出的类合并、拆分后期工作量不小。我一般拿它做快速摸底比如刚拿到一块不熟悉的区域想快速看看地表大概有哪些类型会先跑一次非监督分类探路。4.3 随机森林当前工程实践中的主力随机森林属于集成学习它同时训练多棵决策树每棵树用训练样本的随机子集和特征子集来训练最后投票决定类别归属。它的优点一箩筐能处理高维特征波段多也不怕、不容易过拟合、对噪声和缺失值容忍度高还能给出特征重要性排序。在ENVI或GEEGoogle Earth Engine里做Landsat分类随机森林是我用得最多的算法尤其做多时相分类一年中不同月份的影像叠在一起时特征数动辄几十个随机森林照样稳如磐石。4.4 深度学习方法精度上限更高但成本更大这几年深度学习尤其是U-Net、SegNet这类语义分割网络也被大量用到遥感图像分类里它能同时利用光谱信息和空间纹理信息在无人机高分辨率影像上效果炸裂但在Landsat这种30米分辨率影像上优势就没那么绝对了。深度学习需要大量像素级标注样本制作训练数据的时间成本极高而Landsat本身分辨率有限许多地物的空间纹理细节已经丢失深度网络的收益并不比随机森林大多少。我的观点是做Landsat分类先别忙上深度学习把随机森林跑明白了性价比最高。分类方法是否需要训练样本训练速度分类精度Landsat场景操作难度适用场景最大似然需要快中等低光谱区分度高的区域SVM需要中等中高中样本量小、类间重叠随机森林需要中等高中多特征、大区域、多时相非监督聚类不需要快中低低快速摸底、无先验知识深度学习需要慢高仍需验证高高分辨率影像、海量训练数据5. 一次完整的Landsat分类实操流程ArcMapENVI5.1 环境准备与数据导入我的标准环境是ENVI 5.6做影像预处理ArcMap 10.8做矢量编辑和制图输出。先把Landsat 8的原始波段tif文件按B2蓝、B3绿、B4红、B5近红外、B6短波红外1、B7短波红外2的顺序合成ENVI里用Layer Stacking工具输出一个包含6个波段的单文件坐标系选WGS84 UTM投影跟原始数据一致即可。这里提醒一下Landsat 8的波段命名是从B1开始的B1是气溶胶波段B2才是蓝光波段。合成的时候别选错选错后分类结果会非常怪异比如水体变成红色。5.2 训练样本选取技巧训练样本选取直接决定分类上限。我的经验是先打开真彩色合成B4-B3-B2组合和假彩色合成B5-B4-B3组合两个视图在ArcMap里同时加载然后手动创建多边形ROI。植被在假彩色下呈现明显的红色建筑区呈现灰白色水体呈黑色/深蓝色裸土呈现亮黄色。每类地物至少选15-20个面积均匀的多边形分布要覆盖影像的不同区域——同一个湖泊南边和北边光谱值因为有微小的大气差异也会有所不同训练样本只集中在某一小块区域分类时其他地方就容易漏分。选完样本后我一般会跑一次ROI的可分离性检查ENVI里Compute ROI Separability看各类别样本之间的Jeffries-Matusita距离数值大于1.9说明可分性良好低于1.8就需要重新补样本。这一步虽然幼稚但极其实用能帮你预防训练样本交叉导致的大范围误分。5.3 随机森林分类参数配置ENVI的通Classification流程里选Random Forest分类器关键参数就两个树的数目Number of Trees和特征数目Number of Features。树的数目我一般设500再大精度提升就非常有限了徒增计算时间。特征数目选默认的sqrt(特征总数)即可。ENVI 会自动把整个合成好的多波段tif文件跑完生成一个分类结果文件——每个像元被赋一个类别ID。分类结果出来以后一定要做后处理——用Majority/Minority Analysis工具做中值滤波窗口处理消除椒盐效应孤立像元被分错产生的细小噪点。窗口大小选3×3太大会抹掉细碎的真实地物边界。5.4 精度验证不准的分类图等于废纸跑完分类必须做精度验证这是判断结果能不能用的唯一标准。做法是从影像中再随机选取一部分验证样本不能和训练样本重合把它们的类别和分类结果的类别做对比计算混淆矩阵。重点看三个指标总体精度Overall Accuracy、Kappa系数、用户精度和生产者精度。我自己的经验是总体精度在85%以上、Kappa在0.8以上算及格工程项目的交付标准一般是这两个值分别大于90%和0.85。如果精度不够回头检查训练样本是不是选偏了或者考虑是否要增加新的特征比如NDVI、高程数据。6. 实操中的常见疑难杂症高频踩坑与排查方案6.1 ArcMap中将tif数据边界导出的正确姿势有次做项目要提交影像覆盖范围边界一开始我在ArcMap里用绘图工具沿着影像边缘手动画了个多边形结果甲方说你的边界有些地方和影像对不上。后来发现正确做法是用Conversion Tools里的Raster to Polygon工具把影像有效像素区域的边界自动提取成矢量面这个工具基于既定的像素有效值范围非NoData值来提取边界导出的shp边界和影像严丝合缝。操作时注意先检查tif的NoData值是否被正确识别——很多Landsat预处理后边缘区域是NoData值如果没识别出NoData导出的边界会把整幅影像当成一个矩形导入。6.2 CASS加载tif文件后的数据处理链条CASS是测绘行业用的CAD二次开发软件很多测绘人拿到遥感tif文件后用CASS加载却发现加载后是一张贴合上去的图片看不出坐标信息、也没法直接量测。实际上CASS可以加载带地理坐标的tif文件但需要配合影像纠正工具使用。我的做法是先在ArcMap里用Georeferencing工具对tif做几何纠正如果你拿到的tif没有配准信息然后导出成带tfw世界文件的tif格式再到CASS里通过图像处理-图像插入功能加载这时影像才带有正确的地理位置可以叠加地形图来比对。6.3 GIS的tif文件太大跑不动怎么办Landsat原始影像加上多个波段合成后一个tif文件很容易超过1GB。老电脑跑起来一顿一顿的更别说做分类计算了。方案是有顺序的先做裁剪研究区裁剪掉无关区域再做重采样把30米分辨率重采样到60米文件大小直接降到四分之一如果还不够就改用金字塔缓存显示。ArcMap里有Build Pyramids选项给大tif建好金字塔后缩放和拖动都会流畅很多。分类计算用的是像素数据本身重采样到60米对宏观分类精度影响其实不大——当然如果对象是小目标地物比如单体建筑这个方案不适用。6.4 tif地形文件的获取与预处理热搜里有tif地形文件范例下载这说的是DEM数字高程模型高程数据。做遥感分类时叠加地形特征高程、坡度、坡向能明显提高山地丘陵区的分类精度——因为不同海拔和坡向上植被和土地利用类型分布有天然的空间规律。常用的免费源是NASA的SRTM和ALOS的AW3D3030米分辨率可以覆盖全球范围。下载后用ArcMap的Extract by Mask按研究区边界裁剪重采样到和Landsat影像一致的分辨率再用Layer Stacking合成到影像里作为额外波段数据参与分类。6.5 分类后矢量化出图让成果能协作使用遥感分类生成的栅格结果拿去给行业之外的人看很多人看不懂通常还是要转成矢量面文件裁剪为shp或者dxf做后续编辑制图。栅格转矢量的工具是Conversion Tools - Raster to Polygon。这一步有一个坑转换出来的矢量面通常巨多碎面——成千上万个小多边形让人无从下手。我的经验是转换前先对栅格做Generalize栅格综合处理——合并掉小于最小制图单元的碎斑块再转矢量就会清爽很多。7. 制图出图与成果交付的经验残留分类结果的最终输出可不是随便把图层拖到一个框里。出图时要考虑配色——水体用蓝色系、植被用绿色系、裸土用黄褐色系、建设用地用灰色/红色系这些是行业内的通用色卡约定不建议自己凭喜好乱配色。图例名称要具体到二级类类目比如常绿阔叶林落叶阔叶林就比林地信息量更大报告里要附上全部类别的面积统计表方便甲方算面积。地图要素里必须要加比例尺、指北针、图名、坐标网格和制图时间——少一样图从专业制图角度看就算不合格。实际交付项目时我建议把路由出图的源文件mxd工程文件连同数据一起给客户避免客户那端字体或符号样式对不上输出成品图有乱码或者渲染缺失。遗憾是搞遥感图像分类的人很容易在技术细节里翻来覆去调试却忘了应用方真正在意的东西——最终产生的那张分类图能不能说明白地区的地表真实状况。精度验证那一步做得足够扎实、分类体系设计足够贴合具体需求比堆叠加各种新潮算法更有意义。踩过几次坑之后我的体会是无论用什么模型、什么工具先花够时间在前端的软件准备波段组合配色目视和数据预处理上变的收益远比在后端换换算法大。说到底Landsat的数据是半世纪的老品牌了把基础功打磨利索比你头脑一热想上一堆高大上的模型靠谱得多。各位同学下次打开tif文件之前记得先把本篇文章的流程梳理一遍——你就已经比大多数上来就调参的人走得稳了。本文还有配套的精品资源点击获取