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

55 篇文章 6 订阅

在做光谱曲线分析时常要求光谱的一阶导数和二阶导数,但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=_extra
ptr= where (bbl_list eq 1, count)
result = fltarr(n_elements(y))
if (count ge 3) then $
result(ptr) = deriv (x[ptr], y[ptr])
return, result
end

pf_2nd_derivative.pro:

function pf_2nd_derivative, x, y, bbl, bbl_list, _extra=_extra
ptr= 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, result
end

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

http://hi.baidu.com/jinping_shi/blog/item/aebe674f7393f801b2de05db.html/cmtid/4539e438e2bf57fe3b87cedc

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值