引言:纹理分析在遥感图像处理中的重要性

纹理分析是遥感图像处理和计算机视觉领域中的核心技术之一。在ENVI(Environment for Visualizing Images)软件中,纹理分析能够帮助我们从遥感图像中提取重要的空间信息,这些信息对于土地利用分类、目标检测、环境监测等应用至关重要。

纹理是指图像中灰度值在空间上的变化模式,它反映了地物的表面特征和结构信息。与光谱信息相比,纹理信息更能反映地物的空间结构特征。例如,森林和农田虽然可能有相似的光谱特征,但它们的纹理模式却截然不同——森林通常具有粗糙、不规则的纹理,而农田则呈现规则、条带状的纹理。

在实际应用中,纹理分析能够解决以下问题:

  • 提高土地利用/土地覆盖分类的精度
  • 识别和提取特定地物目标(如建筑物、道路)
  • 监测地表变化(如森林砍伐、城市扩张)
  • 评估生态环境质量
  • 支持地质勘探和矿产资源调查

本文将从基础概念开始,逐步深入到高级应用,通过详细的步骤说明和实际案例,帮助读者掌握ENVI中的纹理分析技术,并能够独立解决实际应用问题。

纹理分析基础概念

什么是纹理?

纹理是图像中灰度值在空间上的变化模式,它描述了像素及其邻域的灰度值分布规律。从数学角度来看,纹理可以理解为:

  1. 结构特征:纹理由基本的纹理基元(texture primitive)按照一定的规则排列而成
  2. 统计特征:纹理表现为局部区域的统计特性,如灰度均值、方差等
  3. 频域特征:纹理在频率域中表现为特定的频率分布模式

纹理分析的基本方法

在ENVI中,主要使用以下几种纹理分析方法:

1. 灰度共生矩阵(GLCM)

灰度共生矩阵是最经典的纹理分析方法,它通过计算图像中灰度值对出现的概率来描述纹理特征。GLCM考虑了像素对之间的距离和方向,能够有效捕捉纹理的方向性和周期性。

2. 灰度行程矩阵(GLRM)

GLRM通过计算连续相同灰度值的像素个数来描述纹理,特别适合分析具有方向性的线性纹理。

3. 灰度差分矩阵(GLDM)

GLDM通过计算相邻像素的灰度差来描述纹理的粗糙度。

4. 灰度区域大小矩阵(GLSZM)

GLSZM通过计算连续相同灰度值的区域大小来描述纹理。

5. 灰度游程矩阵(GLRLM)

GLRLM与GLRM类似,但计算方式略有不同。

纹理特征参数

每种纹理分析方法都会生成多个特征参数,常用的包括:

  • 均值(Mean):反映纹理的亮度水平
  • 方差(Variance):反映纹理的粗糙程度
  1. 同质性(Homogeneity):反映纹理的规则程度
  • 对比度(Contrast):反映纹理的清晰度
  • 非相似性(Dissimilarity):反映灰度值的变化幅度
  • 熵(Entropy):反映纹理的随机性
  • 能量(Energy):反映纹理的均匀性
  • 相关性(Correlation):反映纹理的方向性

ENVI软件环境准备

ENVI版本选择

推荐使用ENVI 5.3及以上版本,这些版本提供了完善的纹理分析工具。ENVI Classic虽然也支持纹理分析,但操作界面较为陈旧。

数据准备

纹理分析对输入数据有一定要求:

  1. 数据格式:支持大多数遥感数据格式,如GeoTIFF、IMG、HDF等
  2. 数据类型:单波段灰度图像或多波段图像(需先进行波段选择)
  3. 空间分辨率:建议分辨率在1-30米之间,过高的分辨率可能导致噪声干扰
  4. 数据质量:图像应具有良好的辐射定标和几何校正

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:单波段选择

纹理分析通常在单波段图像上进行,因为多波段同时处理会增加计算复杂度且可能引入干扰。

操作步骤:

  1. 在Layer Manager中选择要处理的多波段图像
  2. 右键点击图像,选择”View Metadata”
  3. 查看波段信息,选择最适合纹理分析的波段
  4. 通常选择:
    • 可见光波段(如红光波段):适合地表覆盖分类
    • 近红外波段:植被纹理分析
    • 中红外波段:土壤和岩石纹理分析

波段选择示例:

# 波段选择策略(伪代码)
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”工具。

详细操作步骤:

  1. 打开纹理分析工具

    • 在ENVI 5.x界面:Toolbox -> Feature Extraction -> Texture
    • 在ENVI Classic界面:Transforms -> Texture -> Texture Analysis
  2. 选择输入文件

    • 选择之前准备好的单波段图像
    • 点击”OK”进入参数设置界面
  3. 参数设置界面详解

    • Method:选择纹理分析方法(推荐GLCM)
    • Kernel Size:滑动窗口大小(推荐3x3, 5x5, 7x7)
    • Moving Step:移动步长(通常为1)
    • Texture Measures:选择要计算的纹理特征参数
    • Output Results:输出结果类型(特征图像或统计值)
  4. 选择纹理特征参数

    • 建议初学者选择:均值、方差、同质性、对比度、熵
    • 高级用户可根据需求选择其他参数
  5. 设置输出

    • 指定输出文件名和路径
    • 选择输出格式(推荐ENVI格式)

步骤4:结果可视化与分析

计算完成后,ENVI会生成多个纹理特征图像。每个图像代表一种纹理特征的空间分布。

可视化技巧:

  1. 调整显示参数:使用”Enhance”功能增强显示效果
  2. 多窗口对比:同时显示原始图像和多个纹理特征图像
  3. 直方图分析:查看纹理特征的统计分布
  4. 剖面分析:使用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. 分类应用

将提取的纹理特征与原始光谱特征结合,进行监督分类。

分类流程:

  1. 创建训练样本:在原始图像和纹理特征图像上同时选择样本
  2. 选择分类器:支持向量机(SVM)或最大似然法(Maximum Likelihood)
  3. 执行分类:输入光谱+纹理特征
  4. 精度评价:使用混淆矩阵评估分类精度

预期效果:

  • 仅使用光谱特征:总体精度约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:实际应用

任务:解决一个实际问题(如城市绿地提取) 目标:综合应用所学知识

总结

纹理分析是遥感图像处理中的强大工具,能够有效提取图像的空间结构信息。通过本文的学习,读者应该能够:

  1. 理解纹理分析的基本原理:掌握GLCM等核心方法
  2. 熟练操作ENVI软件:独立完成纹理分析的全流程
  3. 合理选择参数:根据实际需求选择合适的窗口大小、特征参数
  4. 解决实际问题:将纹理分析应用于土地利用分类、目标提取等场景
  5. 评估和优化结果:进行质量控制和精度评价

纹理分析技术仍在不断发展,建议读者关注以下方向:

  • 深度学习与纹理分析的结合
  • 三维纹理分析(体纹理)
  • 实时纹理分析技术
  • 多源数据融合的纹理分析

通过持续实践和探索,您将能够更加灵活地运用纹理分析技术,解决各种遥感应用中的实际问题。记住,优秀的纹理分析结果不仅依赖于技术本身,更需要对研究对象的深入理解和合理的参数选择。祝您在纹理分析的学习和应用中取得成功!