ENVI遥感图像处理基础:从数据读取到遥感信息产品

文章目录
- ENVI遥感图像处理基础:从数据读取到遥感信息产品
-
- [第一章 ENVI在遥感处理体系中的位置](#第一章 ENVI在遥感处理体系中的位置)
-
- [1.1 ENVI是什么](#1.1 ENVI是什么)
- [1.2 ENVI处理的三个层次](#1.2 ENVI处理的三个层次)
-
- [1.2.1 数据读取层](#1.2.1 数据读取层)
- [1.2.2 图像分析层](#1.2.2 图像分析层)
- [1.2.3 成果生产层](#1.2.3 成果生产层)
- [1.3 ENVI与GIS的关系](#1.3 ENVI与GIS的关系)
- [第二章 ENVI、IDL与扩展体系](#第二章 ENVI、IDL与扩展体系)
-
- [2.1 ENVI与IDL的关系](#2.1 ENVI与IDL的关系)
- [2.2 IDL的主要作用](#2.2 IDL的主要作用)
- [2.3 ENVI扩展模块的功能逻辑](#2.3 ENVI扩展模块的功能逻辑)
- [2.4 软件模块不能代替方法理解](#2.4 软件模块不能代替方法理解)
- [第三章 ENVI数据组织与目录结构](#第三章 ENVI数据组织与目录结构)
-
- [3.1 软件目录的基本作用](#3.1 软件目录的基本作用)
- [3.2 默认输入、输出与临时目录](#3.2 默认输入、输出与临时目录)
- [3.3 用户数据不应长期放在安装目录](#3.3 用户数据不应长期放在安装目录)
- [第四章 ENVI图像显示体系](#第四章 ENVI图像显示体系)
-
- [4.1 影像显示与数据计算的区别](#4.1 影像显示与数据计算的区别)
- [4.2 灰度显示](#4.2 灰度显示)
- [4.3 RGB合成显示](#4.3 RGB合成显示)
- [4.4 伪彩色显示](#4.4 伪彩色显示)
- [4.5 多窗口与图层化显示](#4.5 多窗口与图层化显示)
- [第五章 ENVI栅格文件结构](#第五章 ENVI栅格文件结构)
-
- [5.1 二进制数据文件与头文件](#5.1 二进制数据文件与头文件)
- [5.2 数据类型](#5.2 数据类型)
- [5.3 字节顺序](#5.3 字节顺序)
- [5.4 BSQ:按波段顺序存储](#5.4 BSQ:按波段顺序存储)
- [5.5 BIL:按行交叉存储](#5.5 BIL:按行交叉存储)
- [5.6 BIP:按像元交叉存储](#5.6 BIP:按像元交叉存储)
- [5.7 存储方式与计算效率](#5.7 存储方式与计算效率)
- [第六章 遥感数据输入](#第六章 遥感数据输入)
-
- [6.1 自动识别](#6.1 自动识别)
- [6.2 按指定格式打开](#6.2 按指定格式打开)
- [6.3 GeoTIFF与普通TIFF](#6.3 GeoTIFF与普通TIFF)
- [6.4 HDF与NetCDF](#6.4 HDF与NetCDF)
- [6.5 原始二进制数据](#6.5 原始二进制数据)
- [6.6 数据打开后的检查](#6.6 数据打开后的检查)
- [第七章 数据输出与格式转换](#第七章 数据输出与格式转换)
-
- [7.1 保存原始栅格](#7.1 保存原始栅格)
- [7.2 导出显示视图](#7.2 导出显示视图)
- [7.3 文件后缀不等于文件格式](#7.3 文件后缀不等于文件格式)
- [7.4 输出格式选择](#7.4 输出格式选择)
- [第八章 ENVI中的大气校正](#第八章 ENVI中的大气校正)
-
- [8.1 为什么需要大气校正](#8.1 为什么需要大气校正)
- [ L_{\\lambda}\^{sensor}](# L_{\lambda}^{sensor})
-
-
- [8.2 大气校正的真正目标](#8.2 大气校正的真正目标)
- [8.3 辐射传输模型](#8.3 辐射传输模型)
- [8.4 快速大气校正](#8.4 快速大气校正)
- [8.5 结果检查](#8.5 结果检查)
- [第九章 面向对象特征提取](#第九章 面向对象特征提取)
-
- [9.1 从像元到对象](#9.1 从像元到对象)
- [9.2 对象特征](#9.2 对象特征)
- [9.3 分割尺度](#9.3 分割尺度)
- [9.4 适用地物](#9.4 适用地物)
- [第十章 摄影测量与立体像对](#第十章 摄影测量与立体像对)
-
- [10.1 立体观测原理](#10.1 立体观测原理)
- [10.2 RPC模型](#10.2 RPC模型)
- [10.3 地面控制点](#10.3 地面控制点)
- [10.4 DEM、DSM和DTM](#10.4 DEM、DSM和DTM)
- [10.5 正射校正](#10.5 正射校正)
- [第十一章 LiDAR点云处理](#第十一章 LiDAR点云处理)
-
- [11.1 点云数据结构](#11.1 点云数据结构)
- [11.2 地面点分类](#11.2 地面点分类)
- [11.3 点云衍生产品](#11.3 点云衍生产品)
- [11.4 点云分类误差](#11.4 点云分类误差)
- [第十二章 SAR与SARscape](#第十二章 SAR与SARscape)
-
- [12.1 SAR影像的观测特性](#12.1 SAR影像的观测特性)
- [12.2 斑点噪声](#12.2 斑点噪声)
- [12.3 InSAR干涉测量](#12.3 InSAR干涉测量)
-
- [ \\phi_{int}](# \phi_{int})
-
-
- [12.4 SARscape的功能范围](#12.4 SARscape的功能范围)
- [第十三章 ENVI服务化与企业级处理](#第十三章 ENVI服务化与企业级处理)
-
- [13.1 从桌面工具到服务](#13.1 从桌面工具到服务)
- [13.2 服务化的意义](#13.2 服务化的意义)
- [13.3 服务化不等同于云原生](#13.3 服务化不等同于云原生)
- [第十四章 ENVI中的系统设置与性能](#第十四章 ENVI中的系统设置与性能)
-
- [14.1 数据管理设置](#14.1 数据管理设置)
- [14.2 显示设置](#14.2 显示设置)
- [14.3 缓存与内存](#14.3 缓存与内存)
- [14.4 GPU与并行计算](#14.4 GPU与并行计算)
- [第十五章 ENVI数据质量检查](#第十五章 ENVI数据质量检查)
-
- [15.1 第一轮检查](#15.1 第一轮检查)
- [15.2 直方图检查](#15.2 直方图检查)
- [15.3 光谱曲线检查](#15.3 光谱曲线检查)
- [15.4 空间参考检查](#15.4 空间参考检查)
- [第十六章 ENVI工作流的可复现性](#第十六章 ENVI工作流的可复现性)
-
- [16.1 为什么图形界面操作难以复现](#16.1 为什么图形界面操作难以复现)
- [16.2 应记录的内容](#16.2 应记录的内容)
- [16.3 自动化处理](#16.3 自动化处理)
- [第十七章 综合案例:从影像读取到分类成果](#第十七章 综合案例:从影像读取到分类成果)
- [第十八章 常见误区](#第十八章 常见误区)
-
- [18.1 影像能够显示就表示读取正确](#18.1 影像能够显示就表示读取正确)
- [18.2 文件后缀决定数据格式](#18.2 文件后缀决定数据格式)
- [18.3 显示拉伸后的图像可以直接定量分析](#18.3 显示拉伸后的图像可以直接定量分析)
- [18.4 自动化工具输出就是可靠结果](#18.4 自动化工具输出就是可靠结果)
- [18.5 大气校正后图像更亮就说明效果更好](#18.5 大气校正后图像更亮就说明效果更好)
- [18.6 面向对象方法一定优于像元分类](#18.6 面向对象方法一定优于像元分类)
- [18.7 SAR暗区一定是水体](#18.7 SAR暗区一定是水体)
- [18.8 ENVI输出栅格可以直接作为业务成果](#18.8 ENVI输出栅格可以直接作为业务成果)
- [第十九章 术语表](#第十九章 术语表)
-
第一章 ENVI在遥感处理体系中的位置
1.1 ENVI是什么
ENVI是一套面向遥感影像读取、显示、预处理、分析和成果输出的软件平台。它能够处理多光谱、高光谱、SAR、DEM、LiDAR点云和航空影像等多种地理空间数据。
从遥感工作流看,ENVI处于"传感器数据"与"地理信息产品"之间:
#mermaid-svg-YhnaHHPtLNx8SlVI{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-YhnaHHPtLNx8SlVI .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-YhnaHHPtLNx8SlVI .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-YhnaHHPtLNx8SlVI .error-icon{fill:#552222;}#mermaid-svg-YhnaHHPtLNx8SlVI .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-YhnaHHPtLNx8SlVI .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-YhnaHHPtLNx8SlVI .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-YhnaHHPtLNx8SlVI .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-YhnaHHPtLNx8SlVI .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-YhnaHHPtLNx8SlVI .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-YhnaHHPtLNx8SlVI .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-YhnaHHPtLNx8SlVI .marker{fill:#333333;stroke:#333333;}#mermaid-svg-YhnaHHPtLNx8SlVI .marker.cross{stroke:#333333;}#mermaid-svg-YhnaHHPtLNx8SlVI svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-YhnaHHPtLNx8SlVI p{margin:0;}#mermaid-svg-YhnaHHPtLNx8SlVI .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-YhnaHHPtLNx8SlVI .cluster-label text{fill:#333;}#mermaid-svg-YhnaHHPtLNx8SlVI .cluster-label span{color:#333;}#mermaid-svg-YhnaHHPtLNx8SlVI .cluster-label span p{background-color:transparent;}#mermaid-svg-YhnaHHPtLNx8SlVI .label text,#mermaid-svg-YhnaHHPtLNx8SlVI span{fill:#333;color:#333;}#mermaid-svg-YhnaHHPtLNx8SlVI .node rect,#mermaid-svg-YhnaHHPtLNx8SlVI .node circle,#mermaid-svg-YhnaHHPtLNx8SlVI .node ellipse,#mermaid-svg-YhnaHHPtLNx8SlVI .node polygon,#mermaid-svg-YhnaHHPtLNx8SlVI .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-YhnaHHPtLNx8SlVI .rough-node .label text,#mermaid-svg-YhnaHHPtLNx8SlVI .node .label text,#mermaid-svg-YhnaHHPtLNx8SlVI .image-shape .label,#mermaid-svg-YhnaHHPtLNx8SlVI .icon-shape .label{text-anchor:middle;}#mermaid-svg-YhnaHHPtLNx8SlVI .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-YhnaHHPtLNx8SlVI .rough-node .label,#mermaid-svg-YhnaHHPtLNx8SlVI .node .label,#mermaid-svg-YhnaHHPtLNx8SlVI .image-shape .label,#mermaid-svg-YhnaHHPtLNx8SlVI .icon-shape .label{text-align:center;}#mermaid-svg-YhnaHHPtLNx8SlVI .node.clickable{cursor:pointer;}#mermaid-svg-YhnaHHPtLNx8SlVI .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-YhnaHHPtLNx8SlVI .arrowheadPath{fill:#333333;}#mermaid-svg-YhnaHHPtLNx8SlVI .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-YhnaHHPtLNx8SlVI .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-YhnaHHPtLNx8SlVI .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-YhnaHHPtLNx8SlVI .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-YhnaHHPtLNx8SlVI .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-YhnaHHPtLNx8SlVI .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-YhnaHHPtLNx8SlVI .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-YhnaHHPtLNx8SlVI .cluster text{fill:#333;}#mermaid-svg-YhnaHHPtLNx8SlVI .cluster span{color:#333;}#mermaid-svg-YhnaHHPtLNx8SlVI div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-YhnaHHPtLNx8SlVI .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-YhnaHHPtLNx8SlVI rect.text{fill:none;stroke-width:0;}#mermaid-svg-YhnaHHPtLNx8SlVI .icon-shape,#mermaid-svg-YhnaHHPtLNx8SlVI .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-YhnaHHPtLNx8SlVI .icon-shape p,#mermaid-svg-YhnaHHPtLNx8SlVI .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-YhnaHHPtLNx8SlVI .icon-shape .label rect,#mermaid-svg-YhnaHHPtLNx8SlVI .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-YhnaHHPtLNx8SlVI .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-YhnaHHPtLNx8SlVI .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-YhnaHHPtLNx8SlVI :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 遥感传感器数据
数据读取与元数据识别
辐射和几何预处理
图像显示与增强
特征构建
分类、反演与变化检测
精度评价
栅格和矢量成果
GIS分析、制图与服务发布
ENVI的价值并不只是提供菜单工具,而是把遥感处理中常见的数据结构、算法和成果生产过程组织在同一平台内。
1.2 ENVI处理的三个层次
1.2.1 数据读取层
主要解决"软件能否正确理解数据"的问题,包括:
- 文件格式识别;
- 行列数和波段数读取;
- 数据类型识别;
- 波段交叉存储方式识别;
- 字节顺序识别;
- 坐标和投影读取;
- 波长、增益、偏移量等元数据读取。
1.2.2 图像分析层
主要解决"如何从影像中提取信息"的问题,包括:
- 图像显示和拉伸;
- 波段运算;
- 空间滤波;
- 光谱分析;
- 分类;
- 参数反演;
- 面向对象提取;
- 变化检测;
- SAR和高光谱分析。
1.2.3 成果生产层
主要解决"分析结果如何转化为可用成果"的问题,包括:
- 分类栅格;
- 反演参数图;
- DEM和DSM;
- 矢量图斑;
- 专题地图;
- 统计表;
- GIS数据库;
- 影像服务和在线分析服务。
1.3 ENVI与GIS的关系
ENVI更侧重影像处理与信息提取,GIS更侧重空间组织、叠加分析和业务应用。
| 环节 | ENVI侧重点 | GIS侧重点 |
|---|---|---|
| 数据准备 | 辐射校正、几何校正、影像裁剪 | 坐标统一、行政区和业务边界组织 |
| 信息提取 | 分类、反演、变化检测 | 图斑整理、属性关联和规则判断 |
| 分析 | 光谱、纹理、栅格运算 | 叠加、缓冲、网络和分区统计 |
| 质量控制 | 光谱合理性、分类精度 | 拓扑、边界、面积和属性检查 |
| 成果表达 | 遥感专题栅格 | 地图、数据库、统计表和服务 |
ENVI输出的分类图并不天然等同于业务成果。只有经过坐标核查、精度验证、图斑整理、属性设计和GIS统计后,才能进入自然资源、农业、生态或规划业务。
第二章 ENVI、IDL与扩展体系
2.1 ENVI与IDL的关系
IDL是一种面向数组和矩阵运算的交互式数据语言。ENVI的许多底层功能建立在IDL之上,因此ENVI既是图形化遥感软件,也是一套可以通过编程扩展的计算环境。
一幅多光谱影像可以表示为三维数组:
X ∈ R H × W × B \mathbf{X}\in\mathbb{R}^{H\times W\times B} X∈RH×W×B
其中:
- H H H表示影像行数;
- W W W表示影像列数;
- B B B表示波段数;
- 每个像元对应一个长度为 B B B的光谱向量。
遥感中的波段运算、滤波、主成分分析、分类和光谱匹配,本质上都可以转化为数组或矩阵计算。
2.2 IDL的主要作用
IDL可以用于:
- 批量读取遥感影像;
- 编写自定义算法;
- 构建交互式分析工具;
- 扩展ENVI菜单和任务;
- 自动化重复处理;
- 封装遥感模型;
- 将桌面流程部署为服务。
图形界面适合探索和参数试验,代码则更适合批处理、复现和版本管理。
2.3 ENVI扩展模块的功能逻辑
旧版软件资料通常按产品模块介绍功能。更合理的理解方式是把模块映射到遥感问题。
| 模块方向 | 主要数据 | 主要问题 | 典型成果 |
|---|---|---|---|
| 大气校正 | 多光谱、高光谱 | 从传感器观测恢复地表反射率 | 地表反射率影像 |
| 摄影测量 | 立体像对、航空影像 | 正射校正、三维重建 | 正射影像、DSM、点云 |
| 面向对象提取 | 高分辨率影像 | 按对象提取地物 | 建筑、道路、农田和水体 |
| LiDAR处理 | 点云 | 地面分类和三维结构提取 | DEM、DSM和建筑轮廓 |
| SAR分析 | 雷达影像 | 强度、干涉、极化和形变分析 | DEM、形变场和分类结果 |
| 服务化部署 | 影像与模型 | 在线调用遥感算法 | REST服务和在线分析 |
2.4 软件模块不能代替方法理解
模块只是算法和流程的实现载体。即使软件提供自动化向导,使用者仍需要理解:
- 输入数据属于什么产品级别;
- 参数对应什么物理意义;
- 算法有哪些前提假设;
- 输出值表示什么;
- 结果如何验证;
- 哪些误差来自数据,哪些误差来自模型。
第三章 ENVI数据组织与目录结构
3.1 软件目录的基本作用
ENVI安装目录通常包含程序、帮助文档、示例数据、光谱库、投影参数、扩展程序和资源文件等内容。
不同版本的目录名称可能变化,但功能大致可以分为:
| 目录类型 | 主要内容 |
|---|---|
| 程序目录 | 可执行文件和运行库 |
| 数据目录 | 示例影像、DEM和矢量数据 |
| 帮助目录 | 用户手册和工具说明 |
| 资源目录 | 图标、语言、波谱库和配置文件 |
| 扩展目录 | 补丁、自定义工具和扩展程序 |
| 保存库目录 | 已编译的IDL程序和框架文件 |
理解目录结构的意义,在于明确软件资源、扩展代码、临时文件和用户数据应放置在哪里,而不是机械记忆某个版本的文件夹名称。
3.2 默认输入、输出与临时目录
建议分别设置:
- 默认输入目录;
- 默认输出目录;
- 临时文件目录;
- 扩展程序目录;
- 缓存目录。
临时目录应位于磁盘空间充足、读写速度较快的位置。大影像处理过程中,中间文件可能远大于原始数据。
3.3 用户数据不应长期放在安装目录
把项目数据长期放在软件安装目录中会带来以下问题:
- 软件升级时容易丢失;
- 权限管理复杂;
- 临时文件与正式成果混杂;
- 难以进行版本管理;
- 不便于项目迁移和备份。
更合理的项目目录结构可以是:
text
project/
├─data_raw/
├─data_reference/
├─data_processed/
├─samples/
├─models/
├─outputs/
├─maps/
├─scripts/
└─logs/
第四章 ENVI图像显示体系
4.1 影像显示与数据计算的区别
显示是把原始像元值映射为屏幕颜色的过程。显示结果主要用于观察、判读和交互,不一定改变原始数据。
以下操作通常只影响显示:
- 对比度拉伸;
- 调整亮度;
- 修改色表;
- 切换RGB波段;
- 设置透明度;
- 修改缩放插值。
以下操作通常会生成新数据:
- 波段运算;
- 辐射校正;
- 空间滤波;
- 重采样;
- 分类;
- 裁剪;
- 格式转换。
4.2 灰度显示
单波段影像通常采用灰度显示。原始像元值需要映射到屏幕灰度范围。
最简单的线性拉伸可以表示为:
g = x − x min x max − x min × 255 g= \frac{x-x_{\min}} {x_{\max}-x_{\min}} \times 255 g=xmax−xminx−xmin×255
其中:
- x x x为原始像元值;
- x min x_{\min} xmin和 x max x_{\max} xmax为拉伸范围;
- g g g为显示灰度值。
拉伸只改变视觉表现,不应把拉伸后的灰度值用于定量分析。
4.3 RGB合成显示
RGB合成将三个波段分别映射到红、绿、蓝显示通道。
| 组合类型 | 红通道 | 绿通道 | 蓝通道 | 主要效果 |
|---|---|---|---|---|
| 真彩色 | 红 | 绿 | 蓝 | 接近人眼视觉 |
| 标准假彩色 | 近红外 | 红 | 绿 | 植被通常呈红色 |
| 城市增强 | 短波红外 | 近红外 | 红 | 建设用地和裸地差异增强 |
| 水体增强 | 近红外或短波红外组合 | 可见光 | 可见光 | 水陆边界更明显 |
RGB合成是一种视觉表达方式,不是分类结果。
4.4 伪彩色显示
伪彩色显示通常将单波段数值或类别编码映射到颜色表。
常见用途:
- 分类结果;
- DEM;
- 地表温度;
- NDVI;
- 概率图;
- 变化强度。
连续变量应使用连续色带,离散类别应使用离散颜色。色带选择错误可能造成认知偏差。
4.5 多窗口与图层化显示
旧版ENVI常采用主图像、缩放窗口和滚动窗口组成的三视窗模式;新版ENVI更多采用图层管理、影像显示和鼠标信息集成的单窗体模式。
两种模式虽然界面不同,但核心功能一致:
- 浏览大影像;
- 查看局部细节;
- 读取像元值;
- 比较不同波段;
- 叠加矢量;
- 查看光谱曲线;
- 管理多个图层。
第五章 ENVI栅格文件结构
5.1 二进制数据文件与头文件
ENVI标准栅格格式通常由两部分组成:
- 二进制数据文件;
- ASCII头文件。
头文件记录如何解释二进制字节流,常见信息包括:
- 行数;
- 列数;
- 波段数;
- 数据类型;
- 字节顺序;
- 波段交叉方式;
- 波段名称;
- 波长;
-投影; - NoData;
- 缩放参数。
二进制文件本身缺乏完整语义。如果头文件缺失或参数错误,影像可能出现错位、波段混乱、数值异常或无法显示。
5.2 数据类型
| 数据类型 | 位数 | 典型用途 |
|---|---|---|
| Byte | 8位 | 分类结果、显示图 |
| Int16 | 16位整数 | 原始DN、高程 |
| UInt16 | 16位无符号整数 | 反射率缩放值 |
| Int32 | 32位整数 | 编码和索引 |
| Float32 | 32位浮点 | 指数、反射率和概率 |
| Float64 | 64位浮点 | 高精度计算 |
数据类型决定数值范围、文件大小和精度。浮点结果错误保存为整数,会导致小数信息丢失。
5.3 字节顺序
多字节数据需要按特定字节顺序解释,常见为:
- Little Endian;
- Big Endian。
若字节顺序设置错误,影像仍可能被读取,但像元值会完全异常。
5.4 BSQ:按波段顺序存储
BSQ将每个波段完整连续存储。
text
Band 1:全部行列
Band 2:全部行列
Band 3:全部行列
特点:
- 读取单个波段效率较高;
- 适合逐波段处理;
- 读取单个像元的完整光谱需要跨越不同波段区域。
5.5 BIL:按行交叉存储
BIL按影像行组织,每一行中依次存储多个波段。
text
第1行:Band1 → Band2 → Band3
第2行:Band1 → Band2 → Band3
特点:
- 适合逐行扫描;
- 对多波段行运算较方便;
- 常见于部分航空和传感器数据。
5.6 BIP:按像元交叉存储
BIP将同一像元的所有波段连续存储。
text
Pixel 1:B1, B2, B3
Pixel 2:B1, B2, B3
特点:
- 读取像元光谱效率较高;
- 适合光谱分析和分类;
- 读取完整单波段时可能效率较低。
5.7 存储方式与计算效率
选择存储结构的本质是匹配数据访问模式:
- 逐波段运算适合BSQ;
- 光谱向量分析适合BIP;
- 逐行流式处理适合BIL。
现代软件能够自动转换存储方式,但大数据场景中,磁盘访问模式仍会明显影响处理速度。
第六章 遥感数据输入
6.1 自动识别
ENVI可以根据文件扩展名、内部元数据、外部头文件和传感器产品结构自动识别多种数据。
自动识别依赖:
- 文件是否完整;
- 元数据是否存在;
- 文件名是否符合产品规则;
- 软件是否支持该产品版本;
- 波段文件与元数据是否匹配。
6.2 按指定格式打开
当数据属于特定传感器或专用格式时,应使用对应的数据读取器,而不是把它当作普通二进制文件处理。
专用读取器可以自动读取:
- 行列数;
- 波段数;
- 波长;
- 增益和偏移量;
- 坐标;
- 时间;
- 太阳角度;
- 质量控制信息。
6.3 GeoTIFF与普通TIFF
普通TIFF主要描述图像像素,GeoTIFF还包含地理参考信息。
GeoTIFF通常可以保存:
- 坐标参考系统;
- 像元大小;
- 空间范围;
- 仿射变换。
但GeoTIFF不一定包含全部遥感元数据。波长、太阳角度、定标参数和质量标识仍可能保存在外部文件中。
6.4 HDF与NetCDF
HDF和NetCDF通常是容器格式,其中可能包含:
- 多个科学变量;
- 经纬度网格;
- 时间;
- 质量控制;
- 缩放系数;
- 填充值;
- 投影信息。
读取这类数据时,应先理解变量层级,不能把所有子数据集直接视为普通影像波段。
6.5 原始二进制数据
对于没有标准头文件的二进制数据,需要人工设置:
- samples;
- lines;
- bands;
- data type;
- interleave;
- byte order;
- header offset。
任何一个参数错误,都可能导致影像错读。
6.6 数据打开后的检查
数据成功显示后仍需检查:
- 行列数是否正确;
- 波段数量是否正确;
- 波段顺序是否合理;
- 数据类型是否合理;
- 数值范围是否合理;
- 坐标范围是否正确;
- NoData是否正确;
- 是否存在条带、坏线和异常波段。
"能够显示"不等于"读取正确"。
第七章 数据输出与格式转换
7.1 保存原始栅格
保存数据时,输出内容通常是实际像元值,而不是屏幕上的拉伸效果。
例如,屏幕上显示的是经过百分比拉伸的影像,但保存结果仍可能是:
- 原始DN;
- 辐亮度;
- 地表反射率;
- 分类编码;
- 反演参数。
7.2 导出显示视图
导出显示视图会把当前的:
- 波段组合;
- 拉伸效果;
- 色表;
- 图层顺序;
- 透明度;
- 注记;
渲染为普通图像。
这种结果适合报告和展示,但通常不适合继续定量分析。
7.3 文件后缀不等于文件格式
仅修改文件后缀不能完成真正的格式转换。
例如,将ENVI二进制文件命名为.tif,内部仍可能不是GeoTIFF。
正确的格式转换应通过软件输出驱动完成,并检查:
- 输出格式;
- 数据类型;
- 压缩方式;
- NoData;
- 坐标;
- 波段顺序;
- 元数据保留情况。
7.4 输出格式选择
| 输出格式 | 适用场景 | 注意事项 |
|---|---|---|
| ENVI标准格式 | 中间处理和多波段分析 | 需要头文件配套 |
| GeoTIFF | GIS交换和成果共享 | 检查投影与压缩 |
| ERDAS IMG | GIS与遥感软件交换 | 注意软件兼容性 |
| HDF/NetCDF | 多变量科学数据 | 需保持变量结构 |
| JPEG/PNG | 显示和报告 | 不适合定量分析 |
| Shapefile/GeoPackage | 矢量成果 | 注意字段和编码 |
第八章 ENVI中的大气校正
8.1 为什么需要大气校正
传感器接收到的辐射不完全来自地表目标,还包含大气散射、吸收和路径辐射。
传感器观测辐亮度可概念化表示为:
$$
L_{\lambda}^{sensor}
L_{\lambda}^{path}
T_{\lambda}^{up}
\cdot
L_{\lambda}^{surface}
其中: * L λ s e n s o r L_{\\lambda}\^{sensor} Lλsensor为传感器观测辐亮度; * L λ p a t h L_{\\lambda}\^{path} Lλpath为路径辐射; * T λ u p T_{\\lambda}\^{up} Tλup为大气透过率; * L λ s u r f a c e L_{\\lambda}\^{surface} Lλsurface为地表辐射贡献。 #### 8.2 大气校正的真正目标 大气校正不是简单让图像"更清晰",而是尽量恢复地表自身光谱响应。 主要用于: * 多时相反射率比较; * 光谱库匹配; * 植被和水体参数反演; * 高光谱识别; * 跨传感器融合; * 长时间序列分析。 #### 8.3 辐射传输模型 基于MODTRAN等辐射传输模型的方法,需要结合: * 大气模式; * 气溶胶类型; * 水汽含量; * 地表高程; * 太阳和传感器几何; * 传感器光谱响应。 其优点是物理意义明确,缺点是参数要求较高。 #### 8.4 快速大气校正 快速方法通常依赖场景统计特征估计大气影响。 适用情况: * 缺少完整元数据; * 需要快速浏览; * 对定量精度要求不高; * 场景内部地物类型较丰富。 局限: * 对场景组成敏感; * 不适合严格跨区域比较; * 不适合精细高光谱反演; * 不能替代严格的辐射传输建模。 #### 8.5 结果检查 大气校正后应检查: * 反射率是否位于合理范围; * 植被光谱是否具有红光吸收和近红外高反射; * 水体反射率是否整体较低; * 大气吸收波段是否异常; * 多时相稳定目标是否保持一致; * 是否存在负值和异常高值。 *** ** * ** *** ### 第九章 面向对象特征提取 #### 9.1 从像元到对象 传统分类以单个像元为基本单位。高分辨率影像中,同一建筑可能包含亮面、暗面、阴影和不同材质,单像元分类容易产生椒盐噪声。 面向对象方法先对影像进行分割,再以对象为单位提取特征和分类。 #### 9.2 对象特征 常见对象特征包括: * 平均光谱; * 光谱标准差; * 纹理; * 面积; * 周长; * 长宽比; * 紧致度; * 形状指数; * 邻接关系; * 空间上下文。 #### 9.3 分割尺度 分割尺度决定对象大小: * 尺度过小:一个地物被分成多个碎片; * 尺度过大:多个地物被合并; * 尺度合适:对象边界与真实地物边界接近。 分割尺度没有全局最优值,不同地物可能需要不同尺度。 #### 9.4 适用地物 面向对象方法适合: * 建筑物; * 道路; * 农田; * 水体; * 林斑; * 工业设施; * 云与云影。 对于中低分辨率影像或边界模糊目标,面向对象方法不一定优于像元分类。 *** ** * ** *** ### 第十章 摄影测量与立体像对 #### 10.1 立体观测原理 同一地物从不同观测位置成像时,其影像位置会产生视差。视差与地物高程相关,因此可以利用立体像对恢复三维信息。 #mermaid-svg-7IE5gozHcfkb5okK{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-7IE5gozHcfkb5okK .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-7IE5gozHcfkb5okK .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-7IE5gozHcfkb5okK .error-icon{fill:#552222;}#mermaid-svg-7IE5gozHcfkb5okK .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-7IE5gozHcfkb5okK .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-7IE5gozHcfkb5okK .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-7IE5gozHcfkb5okK .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-7IE5gozHcfkb5okK .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-7IE5gozHcfkb5okK .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-7IE5gozHcfkb5okK .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-7IE5gozHcfkb5okK .marker{fill:#333333;stroke:#333333;}#mermaid-svg-7IE5gozHcfkb5okK .marker.cross{stroke:#333333;}#mermaid-svg-7IE5gozHcfkb5okK svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-7IE5gozHcfkb5okK p{margin:0;}#mermaid-svg-7IE5gozHcfkb5okK .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-7IE5gozHcfkb5okK .cluster-label text{fill:#333;}#mermaid-svg-7IE5gozHcfkb5okK .cluster-label span{color:#333;}#mermaid-svg-7IE5gozHcfkb5okK .cluster-label span p{background-color:transparent;}#mermaid-svg-7IE5gozHcfkb5okK .label text,#mermaid-svg-7IE5gozHcfkb5okK span{fill:#333;color:#333;}#mermaid-svg-7IE5gozHcfkb5okK .node rect,#mermaid-svg-7IE5gozHcfkb5okK .node circle,#mermaid-svg-7IE5gozHcfkb5okK .node ellipse,#mermaid-svg-7IE5gozHcfkb5okK .node polygon,#mermaid-svg-7IE5gozHcfkb5okK .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-7IE5gozHcfkb5okK .rough-node .label text,#mermaid-svg-7IE5gozHcfkb5okK .node .label text,#mermaid-svg-7IE5gozHcfkb5okK .image-shape .label,#mermaid-svg-7IE5gozHcfkb5okK .icon-shape .label{text-anchor:middle;}#mermaid-svg-7IE5gozHcfkb5okK .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-7IE5gozHcfkb5okK .rough-node .label,#mermaid-svg-7IE5gozHcfkb5okK .node .label,#mermaid-svg-7IE5gozHcfkb5okK .image-shape .label,#mermaid-svg-7IE5gozHcfkb5okK .icon-shape .label{text-align:center;}#mermaid-svg-7IE5gozHcfkb5okK .node.clickable{cursor:pointer;}#mermaid-svg-7IE5gozHcfkb5okK .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-7IE5gozHcfkb5okK .arrowheadPath{fill:#333333;}#mermaid-svg-7IE5gozHcfkb5okK .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-7IE5gozHcfkb5okK .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-7IE5gozHcfkb5okK .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-7IE5gozHcfkb5okK .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-7IE5gozHcfkb5okK .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-7IE5gozHcfkb5okK .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-7IE5gozHcfkb5okK .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-7IE5gozHcfkb5okK .cluster text{fill:#333;}#mermaid-svg-7IE5gozHcfkb5okK .cluster span{color:#333;}#mermaid-svg-7IE5gozHcfkb5okK div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-7IE5gozHcfkb5okK .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-7IE5gozHcfkb5okK rect.text{fill:none;stroke-width:0;}#mermaid-svg-7IE5gozHcfkb5okK .icon-shape,#mermaid-svg-7IE5gozHcfkb5okK .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-7IE5gozHcfkb5okK .icon-shape p,#mermaid-svg-7IE5gozHcfkb5okK .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-7IE5gozHcfkb5okK .icon-shape .label rect,#mermaid-svg-7IE5gozHcfkb5okK .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-7IE5gozHcfkb5okK .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-7IE5gozHcfkb5okK .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-7IE5gozHcfkb5okK :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 立体影像与传感器模型 连接点提取 相对定向 立体匹配 三维点生成 点云或DSM 滤波与编辑 DEM、等高线或正射影像 #### 10.2 RPC模型 高分辨率卫星影像常使用RPC描述地面坐标与影像坐标之间的关系。 RPC是一种通用近似模型,可以在不公开严格传感器模型的情况下完成几何定位。 #### 10.3 地面控制点 控制点应满足: * 影像中清晰可辨; * 参考坐标准确; * 分布均匀; * 高程可靠; * 避开变化区域; * 避开阴影和水边。 控制点质量通常比数量更重要。 #### 10.4 DEM、DSM和DTM | 名称 | 基本含义 | 是否包含建筑和植被 | |-----|----------|-----------| | DSM | 数字表面模型 | 包含 | | DTM | 数字地形模型 | 通常不包含 | | DEM | 数字高程模型统称 | 需结合产品说明判断 | #### 10.5 正射校正 正射校正使用传感器模型、控制点和DEM消除: * 传感器姿态误差; * 地球曲率影响; * 地形起伏引起的位移; * 观测角度造成的几何变形。 正射影像应具有统一比例尺和较可靠的地理定位,适合GIS叠加和制图。 *** ** * ** *** ### 第十一章 LiDAR点云处理 #### 11.1 点云数据结构 单个LiDAR点通常包含: * X X X、 Y Y Y、 Z Z Z坐标; * 回波强度; * 回波序号; * 分类编码; * 扫描角; * GPS时间; * 颜色。 点云是非规则离散数据,不能直接等同于栅格。 #### 11.2 地面点分类 生成DEM的关键是从点云中分离地面点。 常见方法包括: * 逐步加密三角网; * 坡度约束; * 形态学滤波; * 局部最低点; * 布料模拟; * 机器学习分类。 山区、密林和复杂建筑区的地面分类更困难。 #### 11.3 点云衍生产品 点云可以生成: * DEM; * DSM; * 冠层高度模型; * 建筑轮廓; * 电力线; * 树木位置和高度; * 等高线; * 点密度图。 冠层高度模型通常计算为: C H M = D S M − D E M CHM=DSM-DEM CHM=DSM−DEM #### 11.4 点云分类误差 误差可能来自: * 点密度不足; * 多路径反射; * 低矮植被; * 陡坡; * 建筑边缘; * 水面; * 地面点误判。 因此,自动分类后仍需要抽样检查和局部编辑。 *** ** * ** *** ### 第十二章 SAR与SARscape #### 12.1 SAR影像的观测特性 SAR通过主动发射微波并接收后向散射信号成像,具有全天时、全天候能力。 SAR影像亮度受到以下因素影响: * 地表粗糙度; * 含水量; * 入射角; * 极化方式; * 地物结构; * 雷达波长; * 坡向。 SAR中的亮暗不是地物可见光颜色,而是后向散射强弱。 #### 12.2 斑点噪声 SAR斑点来自相干成像中大量散射体的相位叠加。 常见处理方法: * 多视处理; * Lee滤波; * Frost滤波; * Gamma MAP; * 非局部均值; * 时间序列滤波。 过度滤波会损失边缘和纹理。 #### 12.3 InSAR干涉测量 干涉相位可表示为: ##
\phi_{int}
\phi_{flat}
\phi_{topo}
\phi_{defo}
\phi_{atm}
\phi_{noise}
$$
其中:
- ϕ f l a t \phi_{flat} ϕflat为平地相位;
- ϕ t o p o \phi_{topo} ϕtopo为地形相位;
- ϕ d e f o \phi_{defo} ϕdefo为形变相位;
- ϕ a t m \phi_{atm} ϕatm为大气延迟;
- ϕ n o i s e \phi_{noise} ϕnoise为噪声。
形变反演需要去除平地、地形、大气和轨道误差。仅凭干涉条纹不能直接判断真实形变。
12.4 SARscape的功能范围
SARscape通常覆盖:
- 雷达强度处理;
- 辐射定标;
- 地形校正;
- 干涉处理;
- 差分干涉;
- 时序InSAR;
- 极化分析;
- DEM提取;
- 地表形变监测。
第十三章 ENVI服务化与企业级处理
13.1 从桌面工具到服务
传统ENVI工作流在桌面端执行。服务化则把遥感模型和数据部署在服务器中,由客户端通过网络调用。
#mermaid-svg-lzPuVHPPHsIJRgyF{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-lzPuVHPPHsIJRgyF .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-lzPuVHPPHsIJRgyF .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-lzPuVHPPHsIJRgyF .error-icon{fill:#552222;}#mermaid-svg-lzPuVHPPHsIJRgyF .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-lzPuVHPPHsIJRgyF .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-lzPuVHPPHsIJRgyF .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-lzPuVHPPHsIJRgyF .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-lzPuVHPPHsIJRgyF .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-lzPuVHPPHsIJRgyF .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-lzPuVHPPHsIJRgyF .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-lzPuVHPPHsIJRgyF .marker{fill:#333333;stroke:#333333;}#mermaid-svg-lzPuVHPPHsIJRgyF .marker.cross{stroke:#333333;}#mermaid-svg-lzPuVHPPHsIJRgyF svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-lzPuVHPPHsIJRgyF p{margin:0;}#mermaid-svg-lzPuVHPPHsIJRgyF .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-lzPuVHPPHsIJRgyF .cluster-label text{fill:#333;}#mermaid-svg-lzPuVHPPHsIJRgyF .cluster-label span{color:#333;}#mermaid-svg-lzPuVHPPHsIJRgyF .cluster-label span p{background-color:transparent;}#mermaid-svg-lzPuVHPPHsIJRgyF .label text,#mermaid-svg-lzPuVHPPHsIJRgyF span{fill:#333;color:#333;}#mermaid-svg-lzPuVHPPHsIJRgyF .node rect,#mermaid-svg-lzPuVHPPHsIJRgyF .node circle,#mermaid-svg-lzPuVHPPHsIJRgyF .node ellipse,#mermaid-svg-lzPuVHPPHsIJRgyF .node polygon,#mermaid-svg-lzPuVHPPHsIJRgyF .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-lzPuVHPPHsIJRgyF .rough-node .label text,#mermaid-svg-lzPuVHPPHsIJRgyF .node .label text,#mermaid-svg-lzPuVHPPHsIJRgyF .image-shape .label,#mermaid-svg-lzPuVHPPHsIJRgyF .icon-shape .label{text-anchor:middle;}#mermaid-svg-lzPuVHPPHsIJRgyF .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-lzPuVHPPHsIJRgyF .rough-node .label,#mermaid-svg-lzPuVHPPHsIJRgyF .node .label,#mermaid-svg-lzPuVHPPHsIJRgyF .image-shape .label,#mermaid-svg-lzPuVHPPHsIJRgyF .icon-shape .label{text-align:center;}#mermaid-svg-lzPuVHPPHsIJRgyF .node.clickable{cursor:pointer;}#mermaid-svg-lzPuVHPPHsIJRgyF .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-lzPuVHPPHsIJRgyF .arrowheadPath{fill:#333333;}#mermaid-svg-lzPuVHPPHsIJRgyF .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-lzPuVHPPHsIJRgyF .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-lzPuVHPPHsIJRgyF .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-lzPuVHPPHsIJRgyF .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-lzPuVHPPHsIJRgyF .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-lzPuVHPPHsIJRgyF .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-lzPuVHPPHsIJRgyF .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-lzPuVHPPHsIJRgyF .cluster text{fill:#333;}#mermaid-svg-lzPuVHPPHsIJRgyF .cluster span{color:#333;}#mermaid-svg-lzPuVHPPHsIJRgyF div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-lzPuVHPPHsIJRgyF .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-lzPuVHPPHsIJRgyF rect.text{fill:none;stroke-width:0;}#mermaid-svg-lzPuVHPPHsIJRgyF .icon-shape,#mermaid-svg-lzPuVHPPHsIJRgyF .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-lzPuVHPPHsIJRgyF .icon-shape p,#mermaid-svg-lzPuVHPPHsIJRgyF .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-lzPuVHPPHsIJRgyF .icon-shape .label rect,#mermaid-svg-lzPuVHPPHsIJRgyF .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-lzPuVHPPHsIJRgyF .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-lzPuVHPPHsIJRgyF .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-lzPuVHPPHsIJRgyF :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Web、移动端或桌面客户端
HTTP请求
遥感分析服务
服务器端影像与模型
处理结果
13.2 服务化的意义
服务化可以实现:
- 统一部署算法;
- 避免客户端安装复杂软件;
- 使用服务器硬件资源;
- 支持并行和分布式处理;
- 按需生成遥感产品;
- 记录处理日志;
- 与业务系统集成。
13.3 服务化不等同于云原生
传统服务化通常是把桌面算法放到服务器执行。现代云原生遥感还强调:
- 对象存储;
- COG;
- STAC;
- 容器化;
- 弹性计算;
- 数据就近计算;
- 工作流编排;
- 自动伸缩。
二者都属于远程处理,但系统架构和数据组织方式并不完全相同。
第十四章 ENVI中的系统设置与性能
14.1 数据管理设置
常见设置包括:
- 打开数据后是否自动显示;
- 默认RGB波段;
- 新影像是否清空视图;
- 是否自动启动数据管理器;
- 多数据集的显示和管理方式。
14.2 显示设置
可设置:
- 默认缩放因子;
- 缩放插值方法;
- 鼠标交互方式;
- 经纬度显示格式;
- 指北针;
- 图形加速。
显示插值主要影响屏幕效果:
- 最近邻适合分类图;
- 双线性适合连续影像;
- 三次卷积适合高质量显示。
14.3 缓存与内存
缓存可以减少重复磁盘读取,但并不是越大越好。
需要综合考虑:
- 物理内存;
- 影像大小;
- 波段数量;
- 并行线程;
- 临时文件;
- 其他软件占用。
若缓存过大,操作系统可能频繁使用交换空间,反而降低性能。
14.4 GPU与并行计算
启用图形加速通常只影响显示交互,不代表所有算法都会使用GPU。
算法是否支持GPU,取决于:
- 工具实现方式;
- 软件版本;
- 是否调用深度学习框架;
- 显卡和驱动;
- 数据规模。
第十五章 ENVI数据质量检查
15.1 第一轮检查
数据打开后应首先检查:
- 行列数;
- 波段数;
- 波段顺序;
- 数据类型;
- 空间范围;
- 坐标系;
- NoData;
- 像元值范围;
- 条带和坏线;
- 元数据一致性。
15.2 直方图检查
直方图可以帮助发现:
- 饱和像元;
- 异常极值;
- 整体偏暗或偏亮;
- NoData混入;
- 数据截断;
- 动态范围异常。
15.3 光谱曲线检查
光谱曲线可以用于判断:
- 波段顺序是否正确;
- 反射率缩放是否正确;
- 大气吸收波段是否异常;
- 植被、水体和裸地光谱是否符合基本规律;
- 某些波段是否存在噪声。
15.4 空间参考检查
需要检查:
- 地理坐标系;
- 投影坐标系;
- 基准面;
- 中央经线;
- 分带;
- 单位;
- 像元大小;
- 左上角坐标;
- 旋转参数。
空间参考错误会导致影像无法与GIS数据正确叠加。
第十六章 ENVI工作流的可复现性
16.1 为什么图形界面操作难以复现
图形界面容易出现:
- 参数遗忘;
- 工具顺序不明确;
- 中间文件混乱;
- 文件版本不清;
- 操作者差异;
- 处理日志缺失。
16.2 应记录的内容
应记录:
- 输入文件;
- 数据版本;
- 软件版本;
- 工具名称;
- 参数;
- 中间成果;
- 输出路径;
- 坐标系;
- 处理时间;
- 操作者;
- 质量检查结果。
16.3 自动化处理
批量任务应尽量转化为:
- IDL脚本;
- ENVI Task;
- Python脚本;
- 模型流程;
- 服务接口;
- 容器化任务。
可复现性不仅用于科研复核,也适用于数据更新、成果审计和业务交接。
第十七章 综合案例:从影像读取到分类成果
17.1 问题定义
以某区域土地覆盖分类为例,目标是生成林地、耕地、水体、建设用地和裸地分类成果。
17.2 数据准备
需要准备:
- 多光谱影像;
- 影像元数据;
- 行政区边界;
- 训练样本;
- 独立验证样本;
- DEM或其他辅助数据。
17.3 技术路线
#mermaid-svg-KffIwsLurEMa3702{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-KffIwsLurEMa3702 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-KffIwsLurEMa3702 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-KffIwsLurEMa3702 .error-icon{fill:#552222;}#mermaid-svg-KffIwsLurEMa3702 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-KffIwsLurEMa3702 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-KffIwsLurEMa3702 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-KffIwsLurEMa3702 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-KffIwsLurEMa3702 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-KffIwsLurEMa3702 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-KffIwsLurEMa3702 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-KffIwsLurEMa3702 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-KffIwsLurEMa3702 .marker.cross{stroke:#333333;}#mermaid-svg-KffIwsLurEMa3702 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-KffIwsLurEMa3702 p{margin:0;}#mermaid-svg-KffIwsLurEMa3702 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-KffIwsLurEMa3702 .cluster-label text{fill:#333;}#mermaid-svg-KffIwsLurEMa3702 .cluster-label span{color:#333;}#mermaid-svg-KffIwsLurEMa3702 .cluster-label span p{background-color:transparent;}#mermaid-svg-KffIwsLurEMa3702 .label text,#mermaid-svg-KffIwsLurEMa3702 span{fill:#333;color:#333;}#mermaid-svg-KffIwsLurEMa3702 .node rect,#mermaid-svg-KffIwsLurEMa3702 .node circle,#mermaid-svg-KffIwsLurEMa3702 .node ellipse,#mermaid-svg-KffIwsLurEMa3702 .node polygon,#mermaid-svg-KffIwsLurEMa3702 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-KffIwsLurEMa3702 .rough-node .label text,#mermaid-svg-KffIwsLurEMa3702 .node .label text,#mermaid-svg-KffIwsLurEMa3702 .image-shape .label,#mermaid-svg-KffIwsLurEMa3702 .icon-shape .label{text-anchor:middle;}#mermaid-svg-KffIwsLurEMa3702 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-KffIwsLurEMa3702 .rough-node .label,#mermaid-svg-KffIwsLurEMa3702 .node .label,#mermaid-svg-KffIwsLurEMa3702 .image-shape .label,#mermaid-svg-KffIwsLurEMa3702 .icon-shape .label{text-align:center;}#mermaid-svg-KffIwsLurEMa3702 .node.clickable{cursor:pointer;}#mermaid-svg-KffIwsLurEMa3702 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-KffIwsLurEMa3702 .arrowheadPath{fill:#333333;}#mermaid-svg-KffIwsLurEMa3702 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-KffIwsLurEMa3702 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-KffIwsLurEMa3702 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-KffIwsLurEMa3702 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-KffIwsLurEMa3702 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-KffIwsLurEMa3702 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-KffIwsLurEMa3702 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-KffIwsLurEMa3702 .cluster text{fill:#333;}#mermaid-svg-KffIwsLurEMa3702 .cluster span{color:#333;}#mermaid-svg-KffIwsLurEMa3702 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-KffIwsLurEMa3702 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-KffIwsLurEMa3702 rect.text{fill:none;stroke-width:0;}#mermaid-svg-KffIwsLurEMa3702 .icon-shape,#mermaid-svg-KffIwsLurEMa3702 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-KffIwsLurEMa3702 .icon-shape p,#mermaid-svg-KffIwsLurEMa3702 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-KffIwsLurEMa3702 .icon-shape .label rect,#mermaid-svg-KffIwsLurEMa3702 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-KffIwsLurEMa3702 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-KffIwsLurEMa3702 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-KffIwsLurEMa3702 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 读取影像与元数据
质量检查
辐射和大气处理
裁剪与波段组合
指数和纹理构建
样本采集
分类模型
分类后处理
独立精度评价
栅格转矢量
GIS统计与制图
17.4 关键检查点
数据读取
- 波段顺序正确;
- 反射率缩放正确;
- 坐标系正确;
- NoData正确。
样本
- 类别定义明确;
- 样本覆盖类内差异;
- 训练与验证空间独立;
- 避免样本集中在典型区域。
分类
- 记录分类器参数;
- 检查类别概率;
- 分析主要混淆类别;
- 避免过度后处理。
成果
- 使用独立验证样本;
- 输出混淆矩阵;
- 检查面积统计;
- 检查矢量拓扑;
- 记录数据和模型版本。
第十八章 常见误区
18.1 影像能够显示就表示读取正确
错误。波段顺序、字节顺序、数据类型和坐标仍可能错误。
18.2 文件后缀决定数据格式
错误。真正格式由内部结构决定,仅修改后缀不能完成格式转换。
18.3 显示拉伸后的图像可以直接定量分析
错误。显示拉伸只用于视觉表达,定量分析应使用原始DN、辐亮度、反射率或物理参数。
18.4 自动化工具输出就是可靠结果
错误。自动化工具仍依赖输入数据、参数和适用条件。
18.5 大气校正后图像更亮就说明效果更好
错误。应检查反射率范围、光谱形状和跨时相一致性。
18.6 面向对象方法一定优于像元分类
错误。其优势依赖空间分辨率、对象边界和分割尺度。
18.7 SAR暗区一定是水体
错误。阴影、低粗糙度地表和低风速海面也可能表现为暗区。
18.8 ENVI输出栅格可以直接作为业务成果
错误。还需要精度评价、GIS整理、属性设计和质量检查。
第十九章 术语表
| 术语 | 说明 |
|---|---|
| ENVI | 面向遥感影像处理与分析的软件平台 |
| IDL | 面向数组和矩阵运算的交互式数据语言 |
| DN | 传感器记录的数字量化值 |
| Header | 描述二进制栅格结构的头文件 |
| BSQ | 按波段顺序存储 |
| BIL | 按行交叉存储 |
| BIP | 按像元交叉存储 |
| GeoTIFF | 包含地理参考信息的TIFF格式 |
| RPC | 有理多项式系数传感器模型 |
| DEM | 数字高程模型 |
| DSM | 数字表面模型 |
| DTM | 数字地形模型 |
| LiDAR | 激光雷达 |
| SAR | 合成孔径雷达 |
| InSAR | 干涉合成孔径雷达 |
| 大气校正 | 削弱大气吸收和散射影响的处理 |
| 面向对象分类 | 以分割对象而非单像元为基本单位的分类 |
| 斑点噪声 | SAR相干成像产生的颗粒状噪声 |
| REST服务 | 通过HTTP接口调用远程算法或数据的服务方式 |
| NoData | 表示无有效观测值的特殊像元值 |