阈值法批量生成二值化分类影像

这几天在弄一个阈值分类的事情。比如当NDVI大于0的时候是属于植被的,小于0为其他,以前做的时候就采用ENVI的决策树或者掩膜处理,之后就会生成一个二值化的影像。现在,想弄个程序,批量的得出分类之后的二值化影像。当然这个适用于一系列的影像的阈值分类。废话不说了,看程序。我是在IDL中实现的。

pro yuzhi_class
  ;输出阈值分类过的二值化影像
  compile_opt strictarr
  COMPILE_OPT idl2

  envi, /restore_base_save_files
  envi_batch_init, log_file='batch.txt',/NO_STATUS_WINDOW

  dir1='***************'  ;输入路径。比如说我这里是NDVI的影像(也可以是其他的指数的影像)
  out_dir='*************'  ;输出路径
  
  files1=file_search(dir1,'*.tif');我这里是tif影像,如果是其他的影像格式就可以写成其他的
  for i=0,n_elements(files1)-1 do begin
    ENVI_OPEN_FILE, files1[i], r_fid=fid,  /no_realize
    ENVI_FILE_QUERY, fid,  nl=nl, ns=ns,dims=dims,nb=nb
    mapinfo=envi_get_map_info(fid=fid)
    mapinfo1=mapinfo
    file1=ENVI_GET_DATA(fid=fid,dims=dims,pos=0)
    low_row=N_elements(file1[0,*]);获取行数
    low_col=N_elements(file1[*,0]);获取列数
    
    ndvi=make_array(low_col,low_row,value=0.0)
    for a=0,low_col-1 do begin;获取列数
      for b=0,low_row-1 do begin;获取行数,应该是先列后行
        if file1[a,b] GT 0.1 then begin;当影像大于0.1时,等于1,小于则等于0
         ndvi[a,b]=1
        endif else begin
        ndvi[a,b]=0
        endelse

      endfor
    endfor
    outfile8=out_dir+'\'+strmid(file_basename(files1[i]),0,49)+'.RF.tif'    
    ENVI_WRITE_ENVI_FILE,ndvi,r_fid=fid,map_info=MapInfo1,out_name=outfile8
  endfor
end

虽然不是复杂高级的代码,但是我个人认为这个还是很实用的。希望对各位有帮助!
长路漫漫…
唯有坚持…

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

低调的大耳朵图图

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值