用IDL编写读取ROI样本点的方法
来源:互联网 发布:linux安装xwindows 编辑:程序博客网 时间:2024/05/18 02:21
IDL作为遥感界常用的语言,在图像处理方面相比于Python,Matlab等具有很大的优势。IDL语言在编译的过程中编译器自动将代码进行多线程的编译和执行。因此其对数据的处理速度是Python和Matlab望尘莫及的。
在遥感影像处理方面,经常需要读取ROI样本点,但是ROI每个类别中的样本点数量并不定相等,无法用长度不可变的数组来读取。在这里有两种解决方案,第一种,当用到某一类的ROI样本点时再用硬盘中读取,一个ROI文件分多次读取。第二种就是采用链表的形式,将所有ROI样本点数据全部读入内存。显然,第一种方法由于多次从硬盘读写数据,其速度相当慢;但是节省内存空间。第二种方法由于一次性将所有ROI数据全部读入内存,因此其速度较快,但是耗内存,但是链表的长度和维数是可变的,因此更加灵活多变。但是,一般在遥感图像处理方面,一个ROI文件的大小相对内存的大小,还是可以忽略不计的。因此本文只介绍第二种读取方法。以下为读取代码。
function ReadAllSample ;通过样本链表的形式读取样本,以适应不同类别样本量不同的情况 dataList=List() file=‘文件路径和名称' ;将file作为实参传入 if file_test(file) eq 0 then retrun temp = '' class = 0 ;类数 ;获取文件数据 openr,lun,file,/get_lun readf,lun,temp ;读取训练样本的类别数 readf,lun,temp reslt = strsplit(temp,/extract) class = long(reslt[n_elements(reslt)-1]) ;读取两行空 readf,lun,temp readf,lun,temp classnum = make_array(class,/LONG) ;读取每个样本的像元数大小和颜色值 for i = 0, class-1 do begin readf,lun,temp readf,lun,temp readf,lun,temp ;读取每一个样区中的样本数量 reslt = strsplit(temp,/extract) classnum[i] = long(reslt[n_elements(reslt)-1]) readf,lun,temp endfor ;读取数据 ;data = lindgen(196,50) classmean = make_array(class,4) for i = 0, class-1 do begin data = make_array(196,classnum[i],/Long) for j = 0, classnum[i]-1 do begin readf,lun,temp if temp eq '' then CONTINUE reslt = strsplit(temp,/extract) strreslt=size(reslt,/N_elements) for z=0,strreslt-6 do begin data[z,j] = reslt[z+5] ;data[1,j,i] = long(reslt[n_elements(reslt)-2]) ;data[2,j,i] = long(reslt[n_elements(reslt)-1]) endfor endfor dataList.Add,data endfor return,dataList end
0 0
- 用IDL编写读取ROI样本点的方法
- IDL文件的编写
- IDL学习笔记(5)-IDL中菜单的创建方法
- 数据样本的选择方法
- matlab 用鼠标取ROI区域边界点坐标的一个小程序
- 点云模型的读取方法
- 其他人提出的一些ROI编码方法
- 使用ROI的方法剪切图像
- IDL中生成等差/等比数列的方法
- IDl保存和恢复变量的方法
- opencv 图片ROI读取
- IDL读取Shapefile文件
- IDL读取hdf文件
- IDL中编写自定义Task需要注意的问题
- 关于LabVIEW视觉ROI的读取与存储
- IDL/C 二进制数据的读取和写入
- 人工神经网络训练样本的选择方法
- 样本不均衡的常见处理方法
- 递归TrieTree
- 不爱收尾
- 使用NSUserDefaults保存用户名和密码
- 3D变换动画精髓
- ImageView的属性android:scaleType作用
- 用IDL编写读取ROI样本点的方法
- 判断一个序列是否是栈的弹出序列
- jsp
- 查看Android应用包名package和入口activity名称
- Windows and GPT FAQ
- 记录
- TCL中的列表和数组
- 深入理解7816(3)-----关于T=0
- 如何检查Linux存储空间不足情况