ENVI 監督分類Max stdev from Mean 參數IDL中的設置

通過設置class_doit 的參數 std_mult=3.0 即可。
完整代碼如下:
參考引用:http://hi.baidu.com/dyqwrp/item/c8318cea9cec732c5a7cfbab

pro Parallelpiped_method
    COMPILE_OPT idl2
    ;恢復ENVI_SAVE文件
     ENVI,/restore_base_save_files
    ;開始批處理模式
     ENVI_BATCH_INIT,log_file='batch.log'
    ;編寫批處理過程
    ;選擇文件
   
      inputfile=   'E:\海二相關\掩膜\jpproject.img'
   
     CATCH, Error_status
     errorshow = 'Sorry to see the error,'+ $
     ' please send the error Information to "[email protected]"'
     IF Error_status NE 0 THEN BEGIN
     tmp = DIALOG_MESSAGE(errorshow+STRING(13b)+$
     !ERROR_STATE.MSG,/error,title = '錯誤提示!')
     return
     ENDIF
     ;輸入數據預處理
     ENVI_OPEN_FILE, inputfile, r_fid=fid
     IF (fid EQ -1) THEN BEGIN
     RETURN
     ENDIF
     ;獲取輸入文件信息
     ENVI_FILE_QUERY, fid, dims=dims, nb=nb
     pos  = LINDGEN(nb)
;     輸出分類圖像名稱
     outputfile='d:\result.img'
     out_name = outputfile
     ;-平行六面體分類  0
      ENVI_RESTORE_ROIS, 'E:\海二相關\掩膜\11.roi'
;      獲取感興趣區文件信息
      roi_ids = ENVI_GET_ROI_IDS(fid=fid, $
      roi_colors=roi_colors, roi_names=class_names)
      class_names = ['Unclassified', class_names]
      num_classes = N_ELEMENTS(roi_ids)
      ; Set the unclassified class to black and use roi colors
      lookup = BYTARR(3,num_classes+1)
      lookup[0,1] = roi_colors
      ; 計算類ROI的基本統計信息
      mean = FLTARR(N_ELEMENTS(pos), num_classes)
      stdv = FLTARR(N_ELEMENTS(pos), num_classes)
      cov = FLTARR(N_ELEMENTS(pos),N_ELEMENTS(pos),num_classes)
      FOR j=0, num_classes-1 DO BEGIN
        ;
        roi_dims=[ENVI_GET_ROI_DIMS_PTR(roi_ids[j]),0,0,0,0]
        ENVI_DOIT, 'envi_stats_doit', fid=fid, pos=pos, $
          dims=roi_dims, comp_flag=4, mean=c_mean, $
          stdv=c_stdv, cov=c_cov
        MEAN[0,j] = c_mean
        stdv[0,j] = c_stdv
        cov[0,0,j] = c_cov
      ENDFOR
      ;設定閾值
      thresh=REPLICATE(0.1,num_classes)
      out_bname = 'parallelepiped'
;      分類
      ENVI_DOIT, 'class_doit', fid=fid, pos=pos, dims=dims, $
        out_bname=out_bname, out_name=out_name, method=0, $
        mean=mean, stdv=stdv, std_mult=3.0, $
        lookup=lookup, class_names=class_names, $
        r_fid=r_fid,in_memory=0
   
; 
      
;      退出批處理模式
    ;envi_batch_exit
end
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章