IDL - 运行FLAASH后的图像条件语句

时间:2014-07-14 05:02:12

标签: conditional normalize idl-programming-language

我有一个Quickbird图像,在运行FLAASH之后,我想将图像标准化为如下:如果像素> 0或= 10000,则将其乘以1;如果像素<或= 0将其乘以0;如果像素> 0且< 10000乘以其浮点值,则将结果除以10 000.

我写了IDL代码如下,但我的条件语句是错误的。你能帮我修一下条件语句吗?

非常感谢你的帮助。

Lien

我的IDL代码:

pro correct_reflec 

fname='D:\Quick\BA.dat' 

envi_open_file, fname, r_fid=fid,NO_REALIZE=1 
ENVI_FILE_QUERY,fid,DIMS=dims,NS=ns,NL=nl,NB=nb, pos=pos 
map_info=envi_get_map_info(fid=fid) 
b1 = ENVI_GET_DATA(FID=fid, dims=dims, pos=1) 
ns=n_elements(b1[*,0]) 
nl=n_elements(b1[0,*]) 
br=fltarr(ns,3,nl) 

CASE 1 of 
 b1 le 0: br(*,0,*) = (b1)*0 
 b1 ge 10000: br(*,0,*)= (b1)* 1 
 else: br(*,0,*)= b1*foat(b1)/(10000) 
ENDCASE 

b2 = ENVI_GET_DATA(FID=fid, dims=dims, pos=1) 
CASE 1 of 
  b2 le 0: br(*,1,*) = b2*0 
  b2 ge 10000:br(*,1,*)=b2*1 
  else: br(*,1,*)=b2*foat(b2)/10000 
ENDCASE 

b3 = ENVI_GET_DATA(FID=fid, dims=dims, pos=2) 
CASE 1 of 
  b3 le 0:br(*,2,*) = b3*0 
  b3 ge 10000: br(*,2,*)=b3*1 
  else br(*,2,*)=b3*foat(b3)/10000 
ENDCASE 

envi_write_envi_file, br, map_info=map_info, out_name='D:\Quick\test', r_fid=fid 
END 

1 个答案:

答案 0 :(得分:1)

你错过了一个":"在第三个ELSE语句的CASE子句中。那是语法错误显示的地方吗?