ENVI添加一阶导数和二阶导数功能

在做光谱曲线分析时常要求光谱的一阶导数和二阶导数,但ENVI中没有现成的功能,需要对ENVI做一个简单的二次开发。

1. 首先需要编写一阶求导和二阶求导的函数,该函数ENVI自带,名称为deriv,在ENVI的文件夹中可以找到,可以不必自己写。然后从论坛上下载两个接口函数:pf_1st_derivative.pro和pf_2nd_derivative.pro。

2. 然后打开ENVI的安装路径…\Exelis\ENVI50\classic\menu,打开文本文件useradd.txt,,从第四行开始添加如下代码:{plot} {1st Derivative} {pf_1st_derivative} {type=0}和{plot} {2nd Derivative}{pf_2nd_derivative} {type=0}。作用是在光谱显示窗口的Plot Function菜单下添加两个新的选项。

3. 将两个pro函数添复制到ENVI的安装路径…\Exelis\ENVI50\classic\save_add下。

4. 如要使用这两个函数,必须打开ENVI + IDL 图标。

下面给出接口函数pf_1st_derivative.pro和pf_2nd_derivative.pro的代码:

pf_1st_derivative.pro:

function pf_1st_derivative, x, y, bbl, bbl_list, _extra=_extraptr= where (bbl_list eq 1, count)result = fltarr(n_elements(y))if (count ge 3) then $result(ptr) = deriv (x[ptr], y[ptr])return, resultend

pf_2nd_derivative.pro:

function pf_2nd_derivative, x, y, bbl, bbl_list, _extra=_extraptr= where (bbl_list eq 1, count)result = fltarr(n_elements(y))if (count ge 3) then $ result(ptr) = deriv (x[ptr], deriv(x[ptr], y[ptr]))return, resultend

以上两个pro函数只对光谱窗口内的光谱曲线进行求导,如需对一幅高光谱影像进行求导需要另外写函数,但实际上还是调用deriv 这个内部函数。

可我,仍在旅行的路上徘徊。等待着每一辆经过的车,让我走到更远的地方。

ENVI添加一阶导数和二阶导数功能

相关文章:

你感兴趣的文章:

标签云: