我有一个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
答案 0 :(得分:1)
你错过了一个":"在第三个ELSE
语句的CASE
子句中。那是语法错误显示的地方吗?