ENVI 5.2二次开发更加智能、全面(续)

0
分享 2016-06-23
在上一篇博文中(http://blog.sina.com.cn/s/blog_764b1e9d0102vakm.html)介绍了ENVI 5.2全新的面向对象开发模式。本文来个续,在图像处理ENVI Task的基础上,进一步介绍ENVI提供的虚拟栅格对象。
在ENVI 5.1版本中,ENVI Task这种全新的开发接口已初见端倪,虽然当时只有4个而已,可以浏览之前的博客了解一下(http://blog.sina.com.cn/s/blog_764b1e9d0101cgli.html)。
在ENVI 5.2版本中,ENVI Task接口数量暴增到58个,增加了常用的图像处理功能,例如重采样、变化检测、图像分类、拉伸增强、图像融合等,详细列表如下图所示。

图:ENVI 5.2中提供的ENVITasks
下面我们找典型功能和需求进行体验。
面向对象图像分割
在之前的ENVI接口中,是以过程(ENVI_FX_SEGMENTONLY_DOIT)的形式提供此功能,此种接口调用时,存在如下缺点:格式较为复杂、关键字和参数较多、学习成本较高。而全新的ENVI Tasks是面向对象的开发模式,对于新人来说更容易上手。
下面以ENVI自带QB数据为例,展示如何利用代码实现面向对象分割操作。



图:FXSegmentation进度条
下面我们来对比 DOIT 接口的调用方法:


通过上面两种调用方式的对比,我们发现:在之前的DOIT接口中,需要设置的参数较多(例如POS、DIMS),写法不规整且易读性较差;而ENVI Task的代码更加简洁、易读、规整和灵活。
虚拟栅格对象
ENVI 5.2除了提供58个用于图像处理的ENVI Task之外,还提供了另外一种栅格对象——虚拟栅格对象。一般情况下,我们在进行遥感图像处理时都需要很多步骤,而中间步骤的结果不需要保留在最终成果中,此时虚拟栅格对象的优势就表现的淋漓尽致。
这里我们以一个实际应用场景来介绍虚拟栅格对象的好处。我们有三个步骤需要处理,具体说明如下:
  • 输入数据为两景TM多光谱影像,空间分辨率均为30米;
  • 输出要求进行3个处理步骤:
  • 经过匀色的镶嵌结果
  • 将空间分辨率重采样为90米
  • 只保留R、G、B三个波段

在下面的代码中,使用了ENVIMosaicRaster、ENVIResamleRaster、ENVISubsetRaster三种虚拟栅格对象,只需一步输出,即可满足3个处理需求。
注:详细介绍参考ENVI帮助Programming > Routines > Data Control Routines,除了本例中的3个虚拟栅格对象,还有一些其他功能的栅格对象,比如ENVISpatialGridRaster、ENVINNDiffusePanSharpeningRaster、ENVISpectralIndexRaster等。


图:查看结果空间分辨率为90米
文章来源:http://blog.sina.com.cn/s/blog_764b1e9d0102vb82.html

0 个评论

要回复文章请先登录注册