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

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

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

基于ENVI+IDL的HJ星云识别算法实现
图:云识别处理流程
研究区域的选择:HJ1A-CCD1-18-88-20110310-L20000498152 云南省盈江县数据。
  1、数据预处理

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

本文数据进行的预处理是对数据的辐射定标,采用ENVI软件下的HJ星数据读取对其进行读取、显示、波段组合,具体的实现步骤如下:

File →Open External File →HJ-1 →HJ-1A/1B Tools,弹出对话框:

图:HJCCD数据星上辐射定标窗口

点击Apply,完成数据的定标处理以及数据波段组合“_LayerStacking”:

图:HJCCD数据波段组合列表

 完成HJCCD数据的预处理操作,采用上述的算法进行云像元的识别,具体的实现方法步骤如下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

基于ENVI+IDL的HJ星云识别算法实现
   途径三:IDL编程实现
        基于ENVI+IDL的HJ星云识别算法实现
    在确定程序运行正常并且结果精度得到保证的情况,将其打包为.sav文件,进行ENVI的二次扩展。

   1) 在ENVI菜单下添加该功能

  envi.men文件下添加

0 {HJ} ;;ENVI主菜单中新添加的菜单名

  1 {HJ_RemoveCloud} {} {HJremovecloud_pro}” ;;功能按钮以及激活.sav文件的菜单

图:新增菜单功能

3)运行程序进行云识别运算

 点击功能按钮弹出打开文件对话框,在其中选择需要处理的文件即可开始运算:

图:打开数据文件对话框

图:结果列表显示

   3、云识别结果对比
   基于ENVI+IDL的HJ星云识别算法实现结果对比分析:

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

2)从计算效率上来看,重采样后的计算效率会更高些;

3)结果精度上看,重采样后的结果更符合实际情况。

4、云像元剔除结果对比

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

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

结果对比:

1)重采样后进行的云剔除结果要比其他两种途径的结果精度高很多,在ENVI+IDLENVI下所做的结果,都误将水体当作云像元给予剔除,不符合实际情况;

2)从去云的效果上看,ENVI+IDLENVI这两种途径的去云跟更好一些,但是这样的精度结果,可以在算法上进行阈值的调整进行完善,对于IDL编程而言不是精度不能达到的问题。
  注:该函数生成的影像结果为一个二值图:0代表云,1代表非云,包括背景在内。
posted @   ENVI-IDL技术殿堂  阅读(441)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示