多光谱/高光谱遥感影像最佳特征“波段”及其组合的选择方法
遥感影像的特征波段选择
1. 遥感波段选取的原则
-
波段或波段组合信息含量的多少;
-
各波段间相关性的强弱;
-
研究区内欲识别地物的光谱响应特征如何
最佳的波段及其组合:信息含量多、相关性小、地物光谱差异大、可分性好。
2. 波段选择的方法
-
基于信息量的波段选择方法
-
基于类别可分性的波段选择方法
基于信息量的波段选择方法
最佳波段组合指数(OIF)
在ERDAS中进行OIF必要数据输出
本文采用LANDSAT7的一幅影像,下载可参考地理空间数据云 (gscloud.cn)
1.首先将各个波段影像组合
在Raster菜单下找到Layer Stack,然后将所需波段添加,指定输出目录
2.制作模型
在toolbox中打开Model Maker
)
绘制如下模型,注意:多波段合成的遥感图像可以一次性对多个波段进行求标准差。
本文采用GLOBAL SD ( $n1_le12345678 , IGNORE 0 )
来求波段的标准差和CORRELATION ( $n1_le12345678 , IGNORE 0 )
来求每个波段的相关系数,为了避免影像上没有数值的区域(但在其他波段有数值)对结果产生较大影响,故采用忽略零值的方法。
(注意:Statistical中的SD方法为求像元的标准差)
3.将结果都输出到一个文件中,选择输出结果目录后,运行
得到的数据如下
然后将数据导入,使用python实现OIF算法
利用python计算出最适波段
由于输出文件为mtx格式,不方便读取,故导入excel中再进行读取,将tbl文件数据放入源代码以列表形式储存,按照算法编写对应程序,源代码如下,只要输入想要查询的波段即可得到对应的OIF指数。(注意:本文波段号与传感器波段号对应,可以根据实际应用进行更改,但需要注意对应关系)
import xlrd
##将标准差导入 复制粘贴tbl文件
data_S = [36,35,40,20,31,6,28,24]
a1 = input("请输入第一个波段号: ")
a2 = input("请输入第二个波段号: ")
a3 = input("请输入第三个波段号: ")
##获取想要查询的波段号及其相关系数
data = xlrd.open_workbook("./r_output.xlsx")
table = data.sheet_by_index(0)
r1 =table.cell_value(int(a1)-1, int(a2)-1) #第一个波段与第二个波段的相关系数
r2 =table.cell_value(int(a2)-1, int(a3)-1) #第二个波段与第三个波段的相关系数
r3 =table.cell_value(int(a3)-1, int(a1)-1) #第三个波段与第一个波段的相关系数
sum_data_r = abs(r1) + abs(r2) + abs(r3)
##获取查询波段号的标准差
s1 = data_S[int(a1)-1] #第一个波段的标准差
s2 = data_S[int(a2)-1] #第二个波段的标准差
s3 = data_S[int(a3)-1] #第三个波段的标准差
##计算其OIF值并输出
data_oif = s1/sum_data_r + s2/sum_data_r + s3/sum_data_r
print(a1+a2+a3+"三个波段的OIF值为" +str(data_oif))
即可得到以上结果,比较多个组合波段,找出OIF值最大的波段方案组合即为最适波段组合方案