前言
程序转载于: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