介绍一下利用ENVI去除MODIS数据条带的方法和步骤.doc
文本预览下载声明
介绍一下利用ENVI去除MODIS数据条带的方法与步骤。
????? MODIS数据应用日益广泛,但是由于波谱的相互干涉作用导致MODIS的5通道和26通道的反射率中“条带”现象非常严重,这严重影响了MODIS数据 的应用。5通道分辨率5OOM,对云、气溶胶特性敏感。26通道分辨率1000M在薄云、卷云识别方面具有优越特性。
???? 本文主要利用 ENVI的ReplacingBadLines功能进行条带去除说明。这主要是利用条带出现的行两边对称的临近行数值进行平均,利用这个平均值来替代条带 的数值。手工输入条带的行数超级慢,可以利用条带的周期性特点通过编制一个小程序来快速确定行数,然后通过ReplacingBadLines的 Restore功能载入行数即可。
??? 对MODIS的500M分辨率的数据中5通道进行条带去除:因为5通道的条带只有一条,去除条带后效果很明显。而26通道的条带去除较为困难,因为该通道的条带特征是以中心为主向两侧羽化扩展,而且羽化的程度不一样,所以去条带效果不好。
?? 下面以500M分辨率的5通道为例利用ENVI的ReplacingBadLines功能进行条带的去处,其中条带的行数利用自定义的一个过 程: MakeBadLineList,first,interval,lines,filename=filename,得到并生成一个BLL文件存贮条 带行的信息用于ReplacingBadLines的Restore。first为出现第一个条带的行数,interval是条带的间隔,lines是数 据的总行数,filename是输出文件名存贮行信息。
????? 1、去除条带前,横向条纹十分明显
??
?
?? 2、去除条带后,数据平滑,
?
???? 在以前发了一个关于用ENVI的ReplacingBadLines去除MODIS数据中的条纹,其中提及到了用了一个自定义的过程MakeBadLineList来生成Restore所用到的BLL文件。一直有人发电邮问这个问题,现在详细说明一下,自定义过程如下:
pro MakeBadLineList,first,interval,lines,filename=filename ???? if not keyword_set(filename) then filename=’c:\aa.BLL’ ???? curline=first ???? i=1 ???? badlines=curline ???? while (curline+interval le lines) do begin ????????? curline=i*interval+first ????????? i=i+1 ????????? badlines=[[badlines],[curline]] ???? endwhile ???? openw,lun,filename,/get_lun ???? printf,lun,badlines ???? free_lun,lun end
????? first为出现第一个条带的行数,interval是条带的间隔,lines是数据的总行数,filename是输出文件名存贮行信息
???? 在 ENVI中打开你所要去除条纹的MODIS的波段,如5波段,从图像的最上部起查找第一次出现条带的行数First,然后计算第二次条带出现时的间隔 Interval,最后移动鼠标到图像的最下部得到MODIS数据的总行数Lines。Filename是可选变量,是用来定义一个文件来存贮得到的坏道 数。
????? 编译上面的过程后,可以在命令行来调用:MakeBadLineList,first,interval,lines,filename=filename
?????? 最后在ReplacingBadLines中Restore这个文件Filename,就可以按步骤进行了。
???? 通过以上图像的对比可以看到横向的条纹被去除了。
??? 处理步骤:
??? 编译上面的过程后,可以在命令行来调 用:MakeBadLineList,first,interval,lines,filename=filename,其中first为出现第一个条带 的行数,(可以在打开该图的主影像中双击来查看图像信息来获取)interval是条带的间隔,lines是数据的总行数,filename是输出文件名 存贮行信息。
???? 在这里,我用的是500米分辨率的影像,出现第一个条带是在第4行,500米分辨率的条带间隔是20,1000米分辨率的间隔是10,250米分辨率的影像间隔是40。我的图像的总行数为5400.
????? 编译完成后在C:\生成了aa.bll文件。
显示全部