基于ENVI+IDL的HJ星云识别算法实现

0
分享 2016-06-01
HJ-1星CCD传感器以及高光谱传感器(HIS)波段设置在红外与近红外波段范围,两类数据的云识别便是根据云在可见光和近红外波段的反射率明显高于植被、土壤、水体等下垫面的特征,从反射率的差异出发识别云。对于HJ-1B星数据而言,第三波段(0.63~0.69um)以及第三波段(0.63~0.69um)与第四波段(0.76~0.90um)的比值可以较好的检测出影像上的云像元。

根据上述的云的光谱特征的分析,结合HJ-1B星的CCD数据各通道的波谱特征,采用多特征阈值检测法识别云像元,主要采用了可见光反射率特征以及通道间的组合特征,具体的特征算法流程如下:


图:云识别处理流程
  研究区域的选择:HJ1A-CCD1-18-88-20110310-L20000498152 云南省盈江县数据。
  1、数据预处理

http://www.cresda.com上下载的HJ星CCD1数据属于L2级数据,该数据已经进行过几何校正,如果需要更高精度的数据,需要对数据进行二次的几何精校正;如果没必要,该数据亦满足需求。

本文数据进行的预处理是对数据的辐射定标,采用ENVI软件下的HJ星数据读取对其进行读取、显示、波段组合,具体的实现步骤如下:
File →Open External File →HJ-1 →HJ-1A/1B Tools,弹出对话框:

图:HJ星CCD数据星上辐射定标窗口
点击Apply,完成数据的定标处理以及数据波段组合“_LayerStacking”:

图:HJ星CCD数据波段组合列表
 完成HJ星CCD数据的预处理操作,采用上述的算法进行云像元的识别,具体的实现方法步骤如下2 。

2、云像元识别
 途径一:ENVI下的波段运算
采用红通道反射率与NIR/VIS(近红外/红光)比值的综合检测法进行云像元的识别,该方法主要是通过ENVI软件中的波段运算“Band Math”(Basic Tools →Band Math)实现的。


  途径二:ENVI+IDL二次开发波段运算
function hjremovecloud,b3,b4
return,(~(b3 gt 0.2 and b3/b4 gt 0.9 and b3/b4 lt 1.1 and b4 ne 0))
end

途径三:IDL编程实现


在确定程序运行正常并且结果精度得到保证的情况,将其打包为.sav文件,进行ENVI的二次扩展。

1) 在ENVI菜单下添加该功能
在envi.men文件下添加
“0 {HJ} ;;ENVI主菜单中新添加的菜单名
1 {HJ_RemoveCloud} {} {HJremovecloud_pro}” ;;功能按钮以及激活.sav文件的菜单

图:新增菜单功能
3)运行程序进行云识别运算
点击功能按钮弹出打开文件对话框,在其中选择需要处理的文件即可开始运算:

图:打开数据文件对话框

图:结果列表显示 3、云识别结果对比






结果对比分析:
1)从影像上像元的集聚程度来看:IDL编程所做的结果要比其他两种途径做的结果要好,原因在于:在IDL读取影像文件的时候,文件数据很大,需要更多的存储空间,为了简便,在读取影像数据的时候进行了重采样,这样做的目的:云监测对于影像分辨率的要求不是很高,其次,在idl运算过程中减少了内存的占有;
2)从计算效率上来看,重采样后的计算效率会更高些;
3)结果精度上看,重采样后的结果更符合实际情况。
4、云像元剔除结果对比

结果对比:
1)重采样后进行的云剔除结果要比其他两种途径的结果精度高很多,在ENVI+IDL与ENVI下所做的结果,都误将水体当作云像元给予剔除,不符合实际情况; 2 )从去云的效果上看, ENVI+IDL 与 ENVI 这两种途径的去云跟更好一些,但是这样的精度结果,可以在算法上进行阈值的调整进行完善,对于 IDL 编程而言不是精度不能达到的问题。 注:该函数生成的影像结果为一个二值图:0代表云,1代表非云,包括背景在内。
文章来源:http://blog.sina.com.cn/s/blog_764b1e9d0100qaft.html

0 个评论

要回复文章请先登录注册