• 通过ENVI从遥感影像中随机取点

    作者:  • 2007 年 9 月 26 日 • 技术主义 • 暂无评论

    from Soe: IDL/ENVI 程序,在idl里面compile再运行。
    左边是256*256的图像,取500个点去除重复的随机位置
    window20070926.jpg

    程序如下:
    pro randompoints
     COMPILE_OPT IDL2 envi,/restore_base_save_files
     envi_batch_init

     envi_select,fid=fid,dims=dims,title=’打开影像文件’,/BAND_ONLY
     if fid eq -1 then return

     nl=dims[4]-dims[3]+1  & ns=dims[2]-dims[1]+1

     pic=envi_get_data(fid=fid, dims=dims,pos=0)
     window,XSIZE=ns*2, YSIZE=nl
     tv,pic,0

    ;设定点数量N
     N=500

    ;取图片的随机下标
     sample=round(RANDOMU(seed,N)*ns*nl)
    ;去除重复点
     sample=sample[sort(sample)]
     sample=sample[where(sample ne shift(sample,1),count)]

    ;点值
     samp_val=pic[sample]

     samp_loc=intarr(ns,nl)
     samp_loc[sample]=255
     tv,samp_loc,1

     file = DIALOG_PICKFILE(/WRITE, FILTER = ‘*.txt’, /OVERWRITE_PROMPT,DEFAULT_EXTENSION=’txt’)
     if file eq ” then return
     openw,outf,file,/get_lun
     printf, outf,”实取点数”,count
     printf, outf,”X”,sample mod ns
     printf, outf,”Y”,sample/ns
     printf, outf,”值”,samp_val
     free_lun,outf

     ENVI_BATCH_EXIT
    end

    相关文章:

    关于

    生于古城長安,求學金陵,輾轉赴美深造,現漂泊於長安與北京。

    http://www.yenching.org