引言:纹理分析在遥感图像处理中的重要性
纹理分析是遥感图像处理和计算机视觉领域中的核心技术之一。在ENVI(Environment for Visualizing Images)软件中,纹理分析能够帮助我们从遥感图像中提取重要的空间信息,这些信息对于土地利用分类、目标检测、环境监测等应用至关重要。
纹理是指图像中灰度值在空间上的变化模式,它反映了地物的表面特征和结构信息。与光谱信息相比,纹理信息更能反映地物的空间结构特征。例如,森林和农田虽然可能有相似的光谱特征,但它们的纹理模式却截然不同——森林通常具有粗糙、不规则的纹理,而农田则呈现规则、条带状的纹理。
在实际应用中,纹理分析能够解决以下问题:
- 提高土地利用/土地覆盖分类的精度
- 识别和提取特定地物目标(如建筑物、道路)
- 监测地表变化(如森林砍伐、城市扩张)
- 评估生态环境质量
- 支持地质勘探和矿产资源调查
本文将从基础概念开始,逐步深入到高级应用,通过详细的步骤说明和实际案例,帮助读者掌握ENVI中的纹理分析技术,并能够独立解决实际应用问题。
纹理分析基础概念
什么是纹理?
纹理是图像中灰度值在空间上的变化模式,它描述了像素及其邻域的灰度值分布规律。从数学角度来看,纹理可以理解为:
- 结构特征:纹理由基本的纹理基元(texture primitive)按照一定的规则排列而成
- 统计特征:纹理表现为局部区域的统计特性,如灰度均值、方差等
- 频域特征:纹理在频率域中表现为特定的频率分布模式
纹理分析的基本方法
在ENVI中,主要使用以下几种纹理分析方法:
1. 灰度共生矩阵(GLCM)
灰度共生矩阵是最经典的纹理分析方法,它通过计算图像中灰度值对出现的概率来描述纹理特征。GLCM考虑了像素对之间的距离和方向,能够有效捕捉纹理的方向性和周期性。
2. 灰度行程矩阵(GLRM)
GLRM通过计算连续相同灰度值的像素个数来描述纹理,特别适合分析具有方向性的线性纹理。
3. 灰度差分矩阵(GLDM)
GLDM通过计算相邻像素的灰度差来描述纹理的粗糙度。
4. 灰度区域大小矩阵(GLSZM)
GLSZM通过计算连续相同灰度值的区域大小来描述纹理。
5. 灰度游程矩阵(GLRLM)
GLRLM与GLRM类似,但计算方式略有不同。
纹理特征参数
每种纹理分析方法都会生成多个特征参数,常用的包括:
- 均值(Mean):反映纹理的亮度水平
- 方差(Variance):反映纹理的粗糙程度
- 同质性(Homogeneity):反映纹理的规则程度
- 对比度(Contrast):反映纹理的清晰度
- 非相似性(Dissimilarity):反映灰度值的变化幅度
- 熵(Entropy):反映纹理的随机性
- 能量(Energy):反映纹理的均匀性
- 相关性(Correlation):反映纹理的方向性
ENVI软件环境准备
ENVI版本选择
推荐使用ENVI 5.3及以上版本,这些版本提供了完善的纹理分析工具。ENVI Classic虽然也支持纹理分析,但操作界面较为陈旧。
数据准备
纹理分析对输入数据有一定要求:
- 数据格式:支持大多数遥感数据格式,如GeoTIFF、IMG、HDF等
- 数据类型:单波段灰度图像或多波段图像(需先进行波段选择)
- 空间分辨率:建议分辨率在1-30米之间,过高的分辨率可能导致噪声干扰
- 数据质量:图像应具有良好的辐射定标和几何校正
ENVI界面介绍
ENVI主要有两种操作界面:
- ENVI 5.x界面:现代化的图形界面,操作直观
- ENVI Classic界面:传统的菜单驱动界面
本文主要基于ENVI 3.3界面进行讲解,但原理同样适用于Classic界面。
ENVI纹理分析入门操作
步骤1:数据导入与预处理
首先,我们需要将遥感数据导入ENVI并进行必要的预处理。
# 伪代码示例:数据预处理流程
# 实际操作在ENVI GUI中完成,以下为流程说明
# 1. 打开ENVI软件
# 2. 点击 File -> Open
# 3. 选择遥感图像文件(如:Landsat8_OLI.tif)
# 4. 查看图像基本信息:波段数、分辨率、数据类型等
# 预处理步骤:
# 1. 辐射定标(Radiometric Calibration)
# 目的:将DN值转换为辐射亮度或反射率
# 操作:Toolbox -> Radiometric Correction -> Radiometric Calibration
# 2. 大气校正(Atmospheric Correction)
# 目的:消除大气散射和吸收影响
# 操作:Toolbox -> Radiometric Correction -> FLAASH / QUAC
# 3. 图像裁剪(Subset)
# 目的:减少计算量,聚焦感兴趣区域
# 操作:右键图像 -> Spatial Subset / Spectral Subset
步骤2:单波段选择
纹理分析通常在单波段图像上进行,因为多波段同时处理会增加计算复杂度且可能引入干扰。
操作步骤:
- 在Layer Manager中选择要处理的多波段图像
- 右键点击图像,选择”View Metadata”
- 查看波段信息,选择最适合纹理分析的波段
- 通常选择:
- 可见光波段(如红光波段):适合地表覆盖分类
- 近红外波段:植被纹理分析
- 中红外波段:土壤和岩石纹理分析
波段选择示例:
# 波段选择策略(伪代码)
def select_band_for_texture(image, application):
if application == "land_cover":
return image.get_band("Red") # 红光波段
elif application == "vegetation":
return image.get_band("NIR") # 迌红外波段
elif application == "soil":
return image.get_band("SWIR") # 短波红外波段
else:
return image.get_band("Pan") # 全色波段
步骤3:计算纹理特征
在ENVI中计算纹理特征的核心工具是”Texture”工具。
详细操作步骤:
打开纹理分析工具
- 在ENVI 5.x界面:Toolbox -> Feature Extraction -> Texture
- 在ENVI Classic界面:Transforms -> Texture -> Texture Analysis
选择输入文件
- 选择之前准备好的单波段图像
- 点击”OK”进入参数设置界面
参数设置界面详解
- Method:选择纹理分析方法(推荐GLCM)
- Kernel Size:滑动窗口大小(推荐3x3, 5x5, 7x7)
- Moving Step:移动步长(通常为1)
- Texture Measures:选择要计算的纹理特征参数
- Output Results:输出结果类型(特征图像或统计值)
选择纹理特征参数
- 建议初学者选择:均值、方差、同质性、对比度、熵
- 高级用户可根据需求选择其他参数
设置输出
- 指定输出文件名和路径
- 选择输出格式(推荐ENVI格式)
步骤4:结果可视化与分析
计算完成后,ENVI会生成多个纹理特征图像。每个图像代表一种纹理特征的空间分布。
可视化技巧:
- 调整显示参数:使用”Enhance”功能增强显示效果
- 多窗口对比:同时显示原始图像和多个纹理特征图像
- 直方图分析:查看纹理特征的统计分布
- 剖面分析:使用Profile工具查看纹理特征沿剖面的变化
纹理分析参数详解
滑动窗口大小(Kernel Size)
滑动窗口大小是影响纹理分析结果的最重要参数之一。
选择原则:
- 3x3窗口:适合分析细微纹理,但可能受噪声影响
- 5x5窗口:平衡了细节保留和噪声抑制,推荐作为起始值
- 7x7或更大:适合分析大尺度纹理,但会丢失细节信息
实际案例对比:
# 不同窗口大小对纹理分析结果的影响(概念性描述)
# 原始图像:城市区域(建筑物、道路、绿地混合)
# 3x3窗口结果:
# - 优点:能清晰区分建筑物边缘和道路纹理
# - 缺点:绿地内部纹理过于破碎,噪声明显
# 5x5窗口结果:
# - 优点:纹理平滑且保留了主要特征,适合分类
# - 缺点:细小建筑物边界略有模糊
# 7x7窗口结果:
# - 优点:大面积区域纹理均匀
# - 缺点:建筑物和道路边界严重模糊,细节丢失
# 推荐策略:
# - 城市区域:5x5或7x7
# - 农田区域:5x5
# - 森林区域:7x7或9x9
# - 水体区域:3x3或5x5
纹理特征参数选择
不同纹理特征参数对不同地物的敏感度不同:
均值(Mean):
- 反映平均亮度水平
- 对水体、裸地、植被等不同覆盖类型有区分度
- 示例:水体均值低,裸地均值高
方差(Variance):
- 反映纹理粗糙度
- 森林方差大(粗糙),农田方差小(平滑)
- 示例:森林方差 > 农田方差 > 水体方差
同质性(Homogeneity):
- 反映纹理的规则程度
- 人工建筑同质性高,自然景观同质性低
- 示例:建筑物同质性 > 农田同质性 > 森林同质性
对比度(Contrast):
- 反映灰度值变化的剧烈程度
- 边缘和线性特征对比度高
- 示例:道路对比度 > 建筑物对比度 > 空地对比度
熵(Entropy):
- 反映纹理的随机性
- 复杂纹理熵值高,简单纹理熵值低
- 示例:森林熵 > 农田熵 > 水体熵
移动步长(Moving Step)
移动步长决定了滑动窗口在图像上移动的像素间隔。
- 步长=1:逐像素计算,结果最精细,但计算量大
- 步长=2:计算量减少一半,结果略有粗糙
- 步长>2:计算量大幅减少,但可能丢失重要信息
选择建议:
- 精细分析:步长=1
- 快速预览:步长=2
- 大尺度分析:步长=3-5
实战案例1:土地利用分类
案例背景
某地区需要进行土地利用分类,目标是区分耕地、林地、建设用地和水体。原始图像为Landsat 8 OLI影像,空间分辨率30米。
解决方案
1. 数据准备
# 数据预处理流程
# 输入:Landsat8_2023.tif(11个波段)
# 预处理:
# - 辐射定标:DN -> 反射率
# - 大气校正:FLAASH方法
# - 波段选择:选择红光波段(Band 4)进行纹理分析
2. 纹理特征提取
参数设置:
- 方法:GLCM
- 窗口大小:5x5
- 步长:1
- 特征参数:均值、方差、同质性、对比度、熵
操作代码(ENVI Batch Processing):
# ENVI Batch Processing脚本示例
# 注意:这是概念性脚本,实际使用需根据ENVI版本调整
; 打开图像
envi_open_file, 'Landsat8_2023.tif', r_fid=fid
; 选择红光波段
envi_file_query, fid, ns=ns, nl=nl, nb=nb
band_ids = [3] ; Band 4(从0开始计数)
; 设置纹理分析参数
kernel_size = 5
step = 1
measures = ['mean', 'variance', 'homogeneity', 'contrast', 'entropy']
; 计算纹理特征
envi_doit, 'texture_doit', $
fid=fid, $
pos=band_ids, $
kernel_size=kernel_size, $
step=step, $
measures=measures, $
out_name='texture_features.dat', $
r_fid=out_fid
; 结果可视化
envi_display, out_fid
3. 分类应用
将提取的纹理特征与原始光谱特征结合,进行监督分类。
分类流程:
- 创建训练样本:在原始图像和纹理特征图像上同时选择样本
- 选择分类器:支持向量机(SVM)或最大似然法(Maximum Likelihood)
- 执行分类:输入光谱+纹理特征
- 精度评价:使用混淆矩阵评估分类精度
预期效果:
- 仅使用光谱特征:总体精度约75-80%
- 光谱+纹理特征:总体精度提升至85-90%
- 特别是建设用地和耕地的区分度显著提高
结果分析
# 分类精度对比(示例数据)
# 仅使用光谱特征:
# 耕地:生产者精度 78%,用户精度 82%
# 林地:生产者精度 85%,用户精度 80%
# 建设用地:生产者精度 65%,用户精度 70%
# 水体:生产者精度 90%,用户精度 88%
# 总体精度:78.5%
# 光谱+纹理特征:
# 耕地:生产者精度 88%,用户精度 90%
# 林地:生产者精度 92%,用户精度 88%
# 建设用地:生产者精度 85%,用户精度 82%
# 水体:生产者精度 95%,用户精度 93%
# 总体精度:89.8%
实战案例2:城市建筑物提取
案例背景
某城市需要提取建筑物轮廓,用于城市规划和房产管理。原始图像为高分辨率卫星影像(0.5米分辨率)。
解决方案
1. 特征选择策略
建筑物具有以下纹理特征:
- 规则性:建筑物边缘清晰,纹理规则
- 同质性:屋顶材质均匀,同质性高
- 对比度:与周围环境对比明显
2. 参数优化
# 建筑物提取的参数设置建议
# 窗口大小选择:
# - 小型建筑物(<100m²):3x3或5x5
# - 中型建筑物(100-1000m²):5x5或7x7
# - 大型建筑物(>1000m²):7x7或9x9
# 特征参数组合:
# 核心特征:同质性 + 对比度
# 辅助特征:均值 + 方差
# 排除特征:熵(建筑物熵值通常较低)
# 阈值分割策略:
# 同质性阈值:>0.7(建筑物)
# 对比度阈值:>0.3(边缘清晰)
# 均值阈值:根据屋顶材质调整
3. 后处理
# 后处理流程(概念性描述)
# 1. 形态学操作
# - 开运算:去除小噪声点
# - 闭运算:填充小孔洞
# 2. 边缘平滑
# - 中值滤波:平滑边界
# - 面积筛选:去除面积过小的斑块
# 3. 矢量化
# - 将栅格结果转换为矢量面
# - 生成SHP文件用于GIS分析
实际效果
通过纹理分析结合光谱特征,建筑物提取精度可达85%以上,显著优于仅使用光谱信息的方法(约65%)。
实战案例3:森林健康监测
案例背景
监测森林健康状况,识别受病虫害影响的区域。使用多时相遥感数据。
解决方案
1. 纹理特征变化检测
# 变化检测流程
# 时相1(健康森林):
# - 纹理特征:方差中等,熵值较高
# - 均值:反映叶绿素含量
# 时相2(受病虫害):
# - 纹理特征:方差降低(叶片脱落),熵值降低(结构简化)
# - 均值:降低(叶绿素减少)
# 变化量计算:
# Δ方差 = 方差_时相2 - 方差_时相1
# Δ熵 = 熵_时相2 - �熵_时相1
# Δ均值 = 均值_时相2 - 均值_时相1
2. 健康状况分级
# 健康状况分级标准(示例)
# 健康:
# - Δ方差:-10% ~ +10%
# - Δ熵:-10% ~ +10%
# - Δ均值:-5% ~ +5%
# 轻度胁迫:
# - Δ方差:-20% ~ -10%
# - Δ熵:-20% ~ -11%
# - Δ均值:-10% ~ -6%
# 中度胁迫:
# - Δ方差:-35% ~ -20%
# - Δ熵:-35% ~ -21%
# - Δ均值:-20% ~ -11%
# 重度胁迫:
# - Δ方差:< -35%
# - Δ熵:< -35%
# - Δ均值:< -20%
高级应用:多尺度纹理分析
多尺度分析原理
单一尺度的纹理分析可能无法同时捕捉不同大小的地物特征。多尺度分析通过在多个尺度上计算纹理特征,能够更全面地描述图像的纹理信息。
ENVI中的实现方法
# 多尺度纹理分析流程
# 尺度1:精细尺度(3x3窗口)
# 目标:提取小尺度特征(如道路、小建筑物)
# 尺度2:中等尺度(5x5窗口)
# 目标:提取中等尺度特征(如农田、街区)
# 尺度3:粗尺度(7x7窗口)
# 目标:提取大尺度特征(如森林、大型建筑群)
# 特征融合:
# - 将不同尺度的纹理特征进行组合
# - 可以使用加权平均或特征选择方法
实际应用示例
# 多尺度纹理特征提取代码(ENVI Batch Processing)
; 定义多个尺度
scales = [3, 5, 7, 9]
measures = ['mean', 'variance', 'homogeneity']
; 循环计算每个尺度
foreach scale, scales do
envi_doit, 'texture_doit', $
fid=fid, $
pos=band_ids, $
kernel_size=scale, $
step=1, $
measures=measures, $
out_name='texture_scale_'+string(scale, format='(i2)')+'.dat', $
r_fid=out_fid
endforeach
; 特征融合(示例:加权平均)
; 权重分配:精细尺度权重高,粗尺度权重低
weights = [0.4, 0.3, 0.2, 0.1]
纹理分析的局限性与解决方案
常见局限性
1. 计算效率问题
问题:大图像纹理分析计算量巨大,耗时长。 解决方案:
- 使用移动步长>1进行快速预览
- 图像分块处理
- 使用ENVI的批处理功能
- 考虑使用GPU加速(如果硬件支持)
2. 尺度依赖性
问题:纹理特征随分析尺度变化,结果不稳定。 解决方案:
- 多尺度分析
- 尺度选择标准化
- 使用相对纹理特征(如纹理指数)
3. 边界效应
问题:图像边界处的纹理计算不准确。 解决方案:
- 图像扩展(padding)
- 边界权重调整
- 结果裁剪
4. 噪声敏感性
问题:噪声会严重影响纹理分析结果。 解决方案:
- 预处理阶段进行去噪
- 使用中值滤波
- 选择合适的窗口大小
质量控制方法
# 纹理分析质量控制检查清单
# 1. 输入数据检查
# - 确认数据类型和范围
# - 检查是否存在无效值(NaN)
# - 验证空间参考
# 2. 参数合理性检查
# - 窗口大小与地物尺度匹配
# - 步长选择合理
# - 特征参数选择适当
# 3. 结果验证
# - 目视检查:纹理图像是否符合预期
# - 统计检查:特征值范围是否合理
# - 应用验证:分类精度是否提升
# 4. 不确定性评估
# - 计算纹理特征的标准差
# - 评估不同参数的敏感性
# - 进行交叉验证
纹理分析与其他技术的结合
1. 纹理+光谱
优势:结合空间和光谱信息,分类精度显著提升 应用:土地利用分类、植被类型识别
2. 纹理+形状
优势:同时利用空间结构和几何特征 应用:建筑物提取、道路检测
3. 纹理+时相
优势:捕捉空间特征的时间变化 应用:变化检测、森林健康监测
4. 纹理+机器学习
优势:自动学习最优特征组合 应用:深度学习中的纹理特征工程
实践练习与进阶学习
练习1:基础操作
任务:对Landsat图像进行纹理分析,区分不同地物 目标:掌握基本操作流程和参数设置
练习2:参数优化
任务:针对特定地物(如建筑物)优化参数组合 目标:理解参数对结果的影响
练习3:多尺度分析
任务:实现多尺度纹理特征提取和融合 目标:掌握高级分析技巧
练习4:实际应用
任务:解决一个实际问题(如城市绿地提取) 目标:综合应用所学知识
总结
纹理分析是遥感图像处理中的强大工具,能够有效提取图像的空间结构信息。通过本文的学习,读者应该能够:
- 理解纹理分析的基本原理:掌握GLCM等核心方法
- 熟练操作ENVI软件:独立完成纹理分析的全流程
- 合理选择参数:根据实际需求选择合适的窗口大小、特征参数
- 解决实际问题:将纹理分析应用于土地利用分类、目标提取等场景
- 评估和优化结果:进行质量控制和精度评价
纹理分析技术仍在不断发展,建议读者关注以下方向:
- 深度学习与纹理分析的结合
- 三维纹理分析(体纹理)
- 实时纹理分析技术
- 多源数据融合的纹理分析
通过持续实践和探索,您将能够更加灵活地运用纹理分析技术,解决各种遥感应用中的实际问题。记住,优秀的纹理分析结果不仅依赖于技术本身,更需要对研究对象的深入理解和合理的参数选择。祝您在纹理分析的学习和应用中取得成功!
