Floating point 创建代码以计算IDL中的NDVI
我是IDL的新手,0级。我想知道是否有人可以帮我计算BIL或BIP文件的NDVI。我有一个文件。我理解NDVI的概念,NIR和R之间的反向关系。我只是不知道如何将其放入代码中 另外,我知道NDVI是浮点型的,但是,我需要以字节为单位保存最终的NDVI产品Floating point 创建代码以计算IDL中的NDVI,floating-point,byte,idl-programming-language,Floating Point,Byte,Idl Programming Language,我是IDL的新手,0级。我想知道是否有人可以帮我计算BIL或BIP文件的NDVI。我有一个文件。我理解NDVI的概念,NIR和R之间的反向关系。我只是不知道如何将其放入代码中 另外,我知道NDVI是浮点型的,但是,我需要以字节为单位保存最终的NDVI产品 有人能帮忙吗?谢谢。数据文件的格式是什么?如果它是一种图像格式,那么使用READ_XXXX例程非常容易,因此我将使用更难的情况,即它只是一个二进制文件。我假设您知道图像的大小(n_波段,n_样本,n_行),交织(BIL或BIP)和数据类型(下方
有人能帮忙吗?谢谢。数据文件的格式是什么?如果它是一种图像格式,那么使用
READ_XXXX
例程非常容易,因此我将使用更难的情况,即它只是一个二进制文件。我假设您知道图像的大小(n_波段
,n_样本
,n_行
),交织(BIL或BIP)和数据类型(下方浮动),以及NIR(NIR_波段
)和R(R_波段
)的波段索引
im = fltarr(n_samples, n_bands, n_lines) ; this is BIL
; use im = fltarr(n_bands, n_samples, n_lines) for BIP
; nir_band is an index, 0..n_bands - 1, representing near infrared light
; r_band is an index, 0..n_bands representing the visible light
nir = float(im[*, nir_band, *])
r = float(im[*, r_band, *])
ndvi = (nir - r) / (nir + r)
; you might want to use the MIN and MAX if you want to scale in a certain
; manner
byte_ndvi = bytscl(ndvi)