文章目录

  • 1.查看图像的空间分布特征
  • (一)生成灰度图像
  • (二)生成假彩色图像
  • (三)连接不同视图的影像
  • 2.查看图像的像元灰度值
  • 3.统计并查看图像直方图
  • 4.计算NDVI
  • (一)采用波段运算器计算NDVI
  • (二)采用植被指数计算器计算NDVI
  • 5.NDVI计算结果检验
  • (一)对结果图像的空间分布特征进行检验
  • (二)对结果图像进行统计特征的检验
  • 6.浏览图像的空间分布及数值统计特征
  • (一)查看空间分布特征
  • (二)查看数值统计特征
  • 7.查看图像的元数据
  • 8.测试修改图像元数据对图像读取的影响
  • (一)修改列数
  • 减小列数
  • 增大列数
  • (二)修改行数
  • 增加行数
  • 减少行数
  • (三)修改波段数
  • 减少波段数
  • 增加波段数
  • (四)修改存储方式
  • (五)修改字节序
  • (六)修改数据类型
  • 9.查看数据说明文档并对其进行分析
  • 10.读取数据说明文档并存储成ENVI标准格式
  • (一)读取ASCII文档
  • (二)检查影像是否完整
  • (三)保存至文件路径
  • 11.查看封装式遥感影像的说明文档并对其进行分析
  • 12.查看封装式二进制遥感影像的元数据
  • 13.配置封装式二进制遥感图像的头文件
  • 14.读取并检查封装式二进制遥感图像读取是否正确
  • 15.基于自定义的ROI裁剪
  • (1)创建ROI
  • (2)使用ROI进行裁剪
  • 16.基于Shapefile矢量边界文件裁剪影像
  • 17.基于掩膜文件裁剪影像
  • 图像无缝镶嵌
  • (1)查看待镶嵌图像并基于图像镶嵌要点进行分析
  • 图像无缝镶嵌的基本操作流程


1.查看图像的空间分布特征

在打开一幅遥感影像时,有两个文件,我们要选择数据文件来打开。

python遥感影像处理 遥感影像处理教程_python遥感影像处理


打开过后,点击Data Manager,查看该影像的波段

python遥感影像处理 遥感影像处理教程_封装_02


该影像共有6个波段

python遥感影像处理 遥感影像处理教程_灰度值_03

(一)生成灰度图像

步骤如下:

python遥感影像处理 遥感影像处理教程_封装_04

(二)生成假彩色图像

先生成一个一般的假彩色图像:

python遥感影像处理 遥感影像处理教程_图像处理_05


python遥感影像处理 遥感影像处理教程_封装_06


再生成一个标准假彩色图像,将其存放在一个新的视图中:

python遥感影像处理 遥感影像处理教程_python遥感影像处理_07


标准假彩色图像波段构成为:近红外、红光波段、绿光波段

python遥感影像处理 遥感影像处理教程_封装_08


最后介绍一下真彩色图像,就是红、绿、蓝

python遥感影像处理 遥感影像处理教程_数据分析_09


彩色图像建好后移除其他不需要的遥感影像

python遥感影像处理 遥感影像处理教程_图像处理_10

(三)连接不同视图的影像

python遥感影像处理 遥感影像处理教程_数据分析_11


连接好后,在拖动其中一个视图里的图像时,另一个视图的图像也会同步移动

然后我们发现,同一地物在不同彩色影像中的颜色不同。比如植被在标准假彩色图像中是红色,在一般的假彩色图像中是绿色。

python遥感影像处理 遥感影像处理教程_数据分析_12


python遥感影像处理 遥感影像处理教程_图像处理_13

2.查看图像的像元灰度值

将其他视图和影像都移除,只留下真彩色图像

python遥感影像处理 遥感影像处理教程_图像处理_14


点击上方的这个图标

python遥感影像处理 遥感影像处理教程_图像处理_15


点击后弹出窗口和一个十字准星,鼠标拖动准星可以移动

python遥感影像处理 遥感影像处理教程_图像处理_16


窗口上显示的是当前准星对准的像元点的行列号和灰度值

python遥感影像处理 遥感影像处理教程_python遥感影像处理_17


python遥感影像处理 遥感影像处理教程_封装_18

3.统计并查看图像直方图

同样先查看该影像的所有波段,然后右键选择快速统计

python遥感影像处理 遥感影像处理教程_图像处理_19


选择Band1,即红光波段

横坐标是像元灰度值,纵坐标为该灰度值对应的像元个数

python遥感影像处理 遥感影像处理教程_python遥感影像处理_20


Band2和Band3分别是绿光和蓝光波段,可以再次点击将其调出来

python遥感影像处理 遥感影像处理教程_数据分析_21


python遥感影像处理 遥感影像处理教程_数据分析_22

4.计算NDVI

(一)采用波段运算器计算NDVI

归一化植被指数NDVI的范围一般在-1~1之间,且多为小数。经推导得到NDVI的运算公式如下:
python遥感影像处理 遥感影像处理教程_灰度值_23
b1表示近红外波段,b2表示红光波段

操作流程如下:

python遥感影像处理 遥感影像处理教程_python遥感影像处理_24


python遥感影像处理 遥感影像处理教程_图像处理_25

具体步骤如下:

先找到波段运算工具,双击打开

python遥感影像处理 遥感影像处理教程_图像处理_26


波段运算器如图

python遥感影像处理 遥感影像处理教程_图像处理_27


python遥感影像处理 遥感影像处理教程_图像处理_28


将NDVI运算及表达式输入到"Enter an expression"中,点击OK

python遥感影像处理 遥感影像处理教程_图像处理_29


弹出如下窗口,分别单击B1 B2,同时在下方点击所对应的波段

python遥感影像处理 遥感影像处理教程_封装_30


python遥感影像处理 遥感影像处理教程_数据分析_31


最后点击Choose选择保存路径,路径不能有中文,文件名末尾必须手动加上".dat"

python遥感影像处理 遥感影像处理教程_封装_32


点击"OK"输出结果如下

python遥感影像处理 遥感影像处理教程_数据分析_33

(二)采用植被指数计算器计算NDVI

操作流程如下:

python遥感影像处理 遥感影像处理教程_python遥感影像处理_34


python遥感影像处理 遥感影像处理教程_封装_35


具体步骤如下:

找到植被指数计算器,双击打开

python遥感影像处理 遥感影像处理教程_灰度值_36


python遥感影像处理 遥感影像处理教程_数据分析_37


python遥感影像处理 遥感影像处理教程_封装_38


选择TM影像后系会自动认定红光波段是第3波段,近红外波段是第4波段。然后输出数据类型选择浮点类型。

python遥感影像处理 遥感影像处理教程_灰度值_39


python遥感影像处理 遥感影像处理教程_封装_40

5.NDVI计算结果检验

(一)对结果图像的空间分布特征进行检验

操作流程如下:

python遥感影像处理 遥感影像处理教程_灰度值_41


python遥感影像处理 遥感影像处理教程_灰度值_42


python遥感影像处理 遥感影像处理教程_封装_43


具体步骤如下:

python遥感影像处理 遥感影像处理教程_图像处理_44


然后点击Display里的View Flicker,第一层图像开始闪烁

python遥感影像处理 遥感影像处理教程_python遥感影像处理_45


在这里调整闪烁频率

python遥感影像处理 遥感影像处理教程_灰度值_46


放大图像,仔细检查NDVI与原图层对应的植被区域是否一致。

python遥感影像处理 遥感影像处理教程_python遥感影像处理_47


python遥感影像处理 遥感影像处理教程_图像处理_48

(二)对结果图像进行统计特征的检验

我们以植被指数计算器计算得到的NDVI为检验标准

操作流程如下:

python遥感影像处理 遥感影像处理教程_灰度值_49


具体流程如下:

先对两幅NDVI影像进行快速统计,然后分别调出它们的灰度统计直方图

python遥感影像处理 遥感影像处理教程_图像处理_50


NDVI影像只有一个波段,所以它所有波段的直方图只有一条波段

python遥感影像处理 遥感影像处理教程_python遥感影像处理_51


我们观察两幅NDVI影像的统计特征,以植被指数计算器计算得到的NDVI为标准,检验采用波段运算器计算得到的NDVI是否准确。

python遥感影像处理 遥感影像处理教程_图像处理_52


植被指数计算器得到的NDVI

python遥感影像处理 遥感影像处理教程_图像处理_53


波段运算器计算得到的NDVI

python遥感影像处理 遥感影像处理教程_封装_54


两者的最大最小值都在-1~1之间,符合标准,但有微小差异,这与我们为了避免分母为零导致计算出错而在NDVI公式分母加了0.0001有关。

6.浏览图像的空间分布及数值统计特征

首先,为了能使加载进来的影像都能显示出来,点击File下拉列表里的Preferences

python遥感影像处理 遥感影像处理教程_图像处理_55


这一项选择Yes

python遥感影像处理 遥感影像处理教程_图像处理_56


设置好后,点击此处打开dat文件

python遥感影像处理 遥感影像处理教程_数据分析_57

python遥感影像处理 遥感影像处理教程_灰度值_58

(一)查看空间分布特征

打开一幅新的影像,首先要打开Data Manager查看影像的波段数目,以及该影像目前显示的是哪些波段

python遥感影像处理 遥感影像处理教程_数据分析_59


python遥感影像处理 遥感影像处理教程_数据分析_60


python遥感影像处理 遥感影像处理教程_灰度值_61

(二)查看数值统计特征

右键点击影像,点击快速统计,查看所有波段的直方图,并打开图例

python遥感影像处理 遥感影像处理教程_灰度值_62


python遥感影像处理 遥感影像处理教程_python遥感影像处理_63

7.查看图像的元数据

python遥感影像处理 遥感影像处理教程_灰度值_64


python遥感影像处理 遥感影像处理教程_图像处理_65


python遥感影像处理 遥感影像处理教程_封装_66


python遥感影像处理 遥感影像处理教程_封装_67


python遥感影像处理 遥感影像处理教程_python遥感影像处理_68

Host是小端存储,Network是大端存储

python遥感影像处理 遥感影像处理教程_灰度值_69


python遥感影像处理 遥感影像处理教程_封装_70

8.测试修改图像元数据对图像读取的影响

先对该影像进行另存

python遥感影像处理 遥感影像处理教程_数据分析_71


文件名末尾同样要加上.dat,且保存路径不能有中文

python遥感影像处理 遥感影像处理教程_灰度值_72


新建一个视窗,将新保存的TEST.dat拖进去

python遥感影像处理 遥感影像处理教程_数据分析_73


python遥感影像处理 遥感影像处理教程_数据分析_74


删除原来视窗的TEST.dat,然后点击新视窗,让后面的操作都在新视窗中运行

python遥感影像处理 遥感影像处理教程_python遥感影像处理_75

(一)修改列数
减小列数

python遥感影像处理 遥感影像处理教程_图像处理_76


变为条纹,而且条纹向右下斜

python遥感影像处理 遥感影像处理教程_灰度值_77

增大列数

同样为条纹,但条纹向左下斜

python遥感影像处理 遥感影像处理教程_图像处理_78

(二)修改行数
增加行数

python遥感影像处理 遥感影像处理教程_封装_79


多出来的行,其灰度值全为0,显示黑色

python遥感影像处理 遥感影像处理教程_数据分析_80

减少行数

python遥感影像处理 遥感影像处理教程_封装_81


减少的行使得图像下方缺失

python遥感影像处理 遥感影像处理教程_封装_82

(三)修改波段数
减少波段数

python遥感影像处理 遥感影像处理教程_数据分析_83


出现条纹,而且图像下方缺失

python遥感影像处理 遥感影像处理教程_灰度值_84

增加波段数

出现条纹,而且下方多出来黑色区域

python遥感影像处理 遥感影像处理教程_封装_85

(四)修改存储方式

将BIL改成BSQ,即按波段存储

python遥感影像处理 遥感影像处理教程_灰度值_86


不仅有条纹,还出现了明显的条带

python遥感影像处理 遥感影像处理教程_python遥感影像处理_87

(五)修改字节序

将小端改为大端

python遥感影像处理 遥感影像处理教程_封装_88


图像有一定的空间结构,但在信息显示上有错误

python遥感影像处理 遥感影像处理教程_图像处理_89

(六)修改数据类型

将该影像的数据类型由浮点型改为字节型

python遥感影像处理 遥感影像处理教程_灰度值_90


表现为不清晰的图像

python遥感影像处理 遥感影像处理教程_图像处理_91

9.查看数据说明文档并对其进行分析

数据说明文档即ASCII文档,以txt形式记录遥感影像的某些属性

python遥感影像处理 遥感影像处理教程_图像处理_92


我们打开ASCII文档,观察内容

python遥感影像处理 遥感影像处理教程_python遥感影像处理_93


python遥感影像处理 遥感影像处理教程_封装_94


然后我们再UE中打开该文档并浏览灰度值,发现有3处空白行。说明该遥感影像是用BSQ形式存储,3处空白行意味着有4个波段

python遥感影像处理 遥感影像处理教程_灰度值_95

10.读取数据说明文档并存储成ENVI标准格式

(一)读取ASCII文档

有两种方法,第一种:在ENVI Header里面点击Open File

python遥感影像处理 遥感影像处理教程_数据分析_96


第二种:

python遥感影像处理 遥感影像处理教程_python遥感影像处理_97


第二种方式打开后要调整三个参数,我们可以根据ACCII.txt文档中查看到的属性来配置这三个参数

python遥感影像处理 遥感影像处理教程_灰度值_98

(二)检查影像是否完整

将影像移至左上角,查看最左上角的像元灰度值

python遥感影像处理 遥感影像处理教程_python遥感影像处理_99


红光波段:23 绿光波段:21 蓝光波段:18

python遥感影像处理 遥感影像处理教程_封装_100


然后再用UE打开ASCII文档。因为该影像是按照BSQ存储的,所以前三个图层所对应的波段依次为蓝光波段、绿光波段和红光波段蓝光波段:18

python遥感影像处理 遥感影像处理教程_灰度值_101


绿光波段:21

python遥感影像处理 遥感影像处理教程_图像处理_102


红光波段:23

python遥感影像处理 遥感影像处理教程_灰度值_103


除了验证左上角,还要验证右下角的像元灰度值

python遥感影像处理 遥感影像处理教程_数据分析_104


蓝光波段:12

python遥感影像处理 遥感影像处理教程_python遥感影像处理_105


绿光波段:12

python遥感影像处理 遥感影像处理教程_灰度值_106


红光波段:13

python遥感影像处理 遥感影像处理教程_灰度值_107

(三)保存至文件路径

由于目前该影像是存储在内存中的,所以我们要将其保存至文件路径。图中的[Memory1]就表示的是内存

python遥感影像处理 遥感影像处理教程_数据分析_108


操作流程如下:同样要在文件名后加上.dat

python遥感影像处理 遥感影像处理教程_图像处理_109


保存好后自动加载保存路径的影像,此时移除保存在内存中的影像,再改变拉伸方式即可

python遥感影像处理 遥感影像处理教程_图像处理_110

11.查看封装式遥感影像的说明文档并对其进行分析

数据说明文档如图,点击打开

python遥感影像处理 遥感影像处理教程_图像处理_111


说明文档给了以下信息

python遥感影像处理 遥感影像处理教程_数据分析_112


为了使接下来查看元数据时便于记录,我们要新建一个文本文档,将需要采集的元数据信息写进去

python遥感影像处理 遥感影像处理教程_封装_113

12.查看封装式二进制遥感影像的元数据

python遥感影像处理 遥感影像处理教程_数据分析_114

打开Data Viewer,打开元数据文档

python遥感影像处理 遥感影像处理教程_封装_115


页面显示如下

python遥感影像处理 遥感影像处理教程_python遥感影像处理_116


python遥感影像处理 遥感影像处理教程_封装_117


再打开数据说明文档,依据元信息说明文档给出的说明,在Data Viewer中按照要求输入内容从而得到这个封装式遥感数据的元数据

python遥感影像处理 遥感影像处理教程_数据分析_118


比如第一条卫星及传感器类型,按照要求输入数据后得到为Landsat8 OLI,再将获得到的元数据录入进新创建的文本文档中

python遥感影像处理 遥感影像处理教程_图像处理_119


然后第二条数据类型,需要修改数据显示格式为16-bit(即短的)无符号整型,再修改字节号为20

python遥感影像处理 遥感影像处理教程_灰度值_120


思路如下:

python遥感影像处理 遥感影像处理教程_图像处理_121


下一条字节序的思路也是如此

python遥感影像处理 遥感影像处理教程_数据分析_122


下一条列数,需要修改显示格式为32-bit(即长的)无符号整型,再修改字节号为24

python遥感影像处理 遥感影像处理教程_python遥感影像处理_123


下一条行数,只需要改变字节号即可

python遥感影像处理 遥感影像处理教程_灰度值_124


下一条波段数改变字节号即可

python遥感影像处理 遥感影像处理教程_数据分析_125


下一条多波段数据排列方式,需要重新修改显示格式为16-bit(即短的)无符号整型,再修改字节号为36

python遥感影像处理 遥感影像处理教程_python遥感影像处理_126


由说明文档得知,该封装遥感影像数据是元信息在前,数据内容在后;而且元信息一共38个字节,所以我们输入字节号38(第一个元信息对应第0个字节号),显示的第一个数据就是遥感影像最左上角的第一波段像元灰度值

python遥感影像处理 遥感影像处理教程_python遥感影像处理_127

13.配置封装式二进制遥感图像的头文件

在配置之前我们先打开文件路径查看该封装式二进制遥感影像有哪些文件

python遥感影像处理 遥感影像处理教程_数据分析_128


我们选用二进制文件的形式打开.dat文件

python遥感影像处理 遥感影像处理教程_灰度值_129


打开后弹出配置头文件的窗口

python遥感影像处理 遥感影像处理教程_灰度值_130


根据之前记录好的元数据来配置头文件信息

python遥感影像处理 遥感影像处理教程_图像处理_131


在此处的下拉菜单中还可以选择配置其他的头文件信息,比如第一个“波段名称”

python遥感影像处理 遥感影像处理教程_数据分析_132

配置好后点击OK即可加载影像

python遥感影像处理 遥感影像处理教程_封装_133


此时我们返回到该文件的路径,发现多出了一些文件,其中还有个HDR类型的文件

python遥感影像处理 遥感影像处理教程_python遥感影像处理_134

14.读取并检查封装式二进制遥感图像读取是否正确

检查波段数是否正确,图像显示是否完整

python遥感影像处理 遥感影像处理教程_封装_135


python遥感影像处理 遥感影像处理教程_数据分析_136


再检查特性像元的灰度值

python遥感影像处理 遥感影像处理教程_封装_137


python遥感影像处理 遥感影像处理教程_图像处理_138


这里最好选取多个特定像元来检查它们的灰度值是否正确。

综上,该封装式二进制遥感影像配置成功,显示完整无误。

15.基于自定义的ROI裁剪

(1)创建ROI

加载一幅单波段遥感影像,点击ROI

python遥感影像处理 遥感影像处理教程_数据分析_139


进入后点击Polygon对影像进行裁剪

python遥感影像处理 遥感影像处理教程_数据分析_140


python遥感影像处理 遥感影像处理教程_灰度值_141


裁剪完成后会出现一个ROI文件,我们可以在ROI窗口保存这个文件

python遥感影像处理 遥感影像处理教程_灰度值_142


python遥感影像处理 遥感影像处理教程_封装_143

(2)使用ROI进行裁剪

双击右侧的工具选项

python遥感影像处理 遥感影像处理教程_python遥感影像处理_144


python遥感影像处理 遥感影像处理教程_python遥感影像处理_145


是否掩膜掉ROI以外的区域:若选择NO,则淹没区域为规则的矩形框;若选择YES,掩膜区域为自己自定义的形状

python遥感影像处理 遥感影像处理教程_python遥感影像处理_146

python遥感影像处理 遥感影像处理教程_数据分析_147


点击OK,那么选择YES的掩膜情况如下:

python遥感影像处理 遥感影像处理教程_封装_148


选择NO的掩膜情况如下:

python遥感影像处理 遥感影像处理教程_灰度值_149

16.基于Shapefile矢量边界文件裁剪影像

加载矢量文件

python遥感影像处理 遥感影像处理教程_灰度值_150


还是点击右侧工具栏中的Subset Data from ROIs

python遥感影像处理 遥感影像处理教程_图像处理_151


python遥感影像处理 遥感影像处理教程_灰度值_152


裁剪结果如下:

python遥感影像处理 遥感影像处理教程_图像处理_153

17.基于掩膜文件裁剪影像

首先打开掩膜文件,掩膜图像是由灰度值为0和1组成的二值图像

python遥感影像处理 遥感影像处理教程_python遥感影像处理_154


python遥感影像处理 遥感影像处理教程_python遥感影像处理_155


打开Data Manager,我们发现这幅掩膜图像和待处理影像的空间范围完全一致。

python遥感影像处理 遥感影像处理教程_图像处理_156


python遥感影像处理 遥感影像处理教程_封装_157


掩膜裁剪的基本思想是对像元取值为1(白色)的区域进行处理,而屏蔽像元取值为0(黑色)的区域。 因此要保证掩膜图像与待处理图像的范围要一致。

python遥感影像处理 遥感影像处理教程_数据分析_158


该掩膜图像像元值为1的区域对应的是海水,因此该掩膜用于提取海水区域打开工具箱中的Apply Mask

python遥感影像处理 遥感影像处理教程_封装_159


python遥感影像处理 遥感影像处理教程_灰度值_160


python遥感影像处理 遥感影像处理教程_python遥感影像处理_161


python遥感影像处理 遥感影像处理教程_图像处理_162


掩膜结果如下:

python遥感影像处理 遥感影像处理教程_灰度值_163


查看掩膜结果的图像范围,和原图像范围一致

python遥感影像处理 遥感影像处理教程_图像处理_164


查看掩膜结果的灰度值,发现除了被屏蔽区域的像元值为0,其他区域的像元值与原图像对应区域的像元值一致。

python遥感影像处理 遥感影像处理教程_封装_165

图像无缝镶嵌

(1)查看待镶嵌图像并基于图像镶嵌要点进行分析

首先打开两幅需要镶嵌的影像

python遥感影像处理 遥感影像处理教程_图像处理_166


图像加载之后自动读取了地理坐标

python遥感影像处理 遥感影像处理教程_图像处理_167


图像镶嵌的要求:待镶嵌的图像必须具有相同的空间坐标系,相同的波段数以及相同的数据类型

python遥感影像处理 遥感影像处理教程_python遥感影像处理_168


观察两幅图像的重叠区域是否一致,衔接处地物形状和颜色是否一致。根据重叠区边缘的图像衔接情况以及以及重叠区内的地物对应情况,得出两幅图像满足图像镶嵌对待镶嵌图像的要求

图像无缝镶嵌的基本操作流程