前言
程序转载于:https://user.qzone.qq.com/1172113468/2/1451537768?_t_=0.48380886774003073
之前写过一个Matlab版本的,自认为代码很烂没公开源代码,并且无法有效处理投影的问题,所以条带取出后依旧有很多问题(PS:谁让我当时不会IDL呢)。地址:https://www.ixxin.cn/2017/02/14/matlabhsiwutiaodai/
源代码
PRO stripe_remove1
ENVI,/Restore_Base_Save_Files
ENVI_Batch_init
file = DIALOG_PICKFILE(/READ, FILTER = '*.img')
print,file
ENVI_OPEN_FILE,file,r_fid=fid
ENVI_FILE_QUERY, fid, dims=dims, ns=ns, nl=nl, nb=nb
print,fid,dims,ns,nl,nb
fdata = fltarr(ns,nl,nb)
data=fltarr(ns,nl,nb)
for i=0,nb-1 do begin
fdata[*,*,i] = ENVI_GET_DATA(fid=fid, dims=dims, pos=i)
stdv1=Stddev(fdata[*,*,i])
avage1=Mean(fdata[*,*,i])
;print,stdv1,avage1
for k=0,ns-1 do begin
stdv2=Stddev(fdata[k,*,i])
avage2=Mean(fdata[k,*,i])
if stdv2 eq 0 then begin
stdv2=1
endif
print,k,i
data[k,*,i]= (float(stdv1)/stdv2)*fdata[k,*,i]+avage1-(float(stdv1)/stdv2)*avage2
endfor
endfor
OutName = "F:\\HJ\\"+file_basename(file,'.img')+'_remove.img'
mape_info=envi_get_map_info(fid=fid)
ENVI_WRITE_ENVI_FILE,data[*,*,*], out_name=OutName,MAP_INFO= mape_info
END



