注册 登录
  • 注册时,本站名称为:RGB空格3S博客,注意中间的空格。
  • 2018.8.14本站全面接入google广告
  • 2017.2.14今天收到45条恶意评论(全是外文),故评论时请填写必要信息,匿名评论全部拉黑,迫不得已而为之
  • 2017.1.27,2017年春节及至,我谨代表本人祝大家新春快乐,本人年终总结文章请访问:2016年终总结
  • 为防止恶意转载,本站全面禁止复制,并添加图片水印:RGB 3S博客www.ixxin.cn。
  • 本站正式更名为RGB 3S博客,本站将撤消所有非3S内容,其将转移到新博客江湖时代

IDL学习一之打开ENVI二进制文件

ID L admin 10570次浏览 已收录 0个评论
[隐藏]

前言

IDL是我学习的第三个解释性语言,包括之前的Matlab,Python,相对于Matlab来说就是针对于遥感影像的处理,因为遥感影像相对于普通图片来说,最大的两个区别就是波段更多(通常大于等于四个),有空间参考,Matlab虽然在新版本也支持这些特性,但是不好操作,所谓“术业有专攻”,前两者相对于Python来说,差的多了,Python大法好,绝不是说说而已。
想用IDL处理影像,第一步肯定就是打开数据了,这也是我学习的主思路,但是我发现,要想打开数据,还是需要学习IDL的基本语法以及基本函数,所以说这成了我学习语言的一个坏习惯,一心只想快速上手,快速应用,结果忽略了细节,忽略的基本的东西,所以说,人生苦短,我用python :lol:

5.26号更新

  file = dialog_pickfile(title = "Please choose ENVI file")
  dir = file_dirname(file)
  name = file.SPLIT('\\')
  name_1 = STRSPLIT(name[-1],".",/EXTRACT)
  hdrfile = dir+'\'+name_1[0]+'.hdr'

这样,这个代码就可以打开所有的ENVI标准文件了。

代码

主要实现功能就是打开ENVI的标准二进制文件,必须包含ENVI的hdr头文件,说一点,Matlab读取多光谱、高光谱数据也需要这种类似的头文件。

;作者:xxin
;时间:2017.3.7
;功能:打开ENVI标准二进制文件

pro read_envifile

  file = 'F:\Program Files\Exelis\ENVI53\classic\data\can_tmr.img'
  file1 = STRSPLIT(file,".",/EXTRACT)
  hdrfile = file1[0]+".hdr"
  
  
  openr,lun,hdrfile,/GET_LUN
  tmp = ""
  while(~EOF(lun))do begin
    readf,lun,tmp
    if STRCMP(tmp, 'samples', 7 , /FOLD_CASE) eq  1 then sa = tmp
    if STRCMP(tmp, 'lines', 5 , /FOLD_CASE) eq  1 then li = tmp
    if STRCMP(tmp, 'bands', 5 , /FOLD_CASE) eq  1 then ba = tmp
    if STRCMP(tmp, 'data type', 8 , /FOLD_CASE) eq  1 then ty = tmp  
  endwhile
  
  sa = fix(STRSPLIT(sa,"=",/EXTRACT))
  ns = sa[1]
  li = fix(STRSPLIT(li,"=",/EXTRACT))
  nl = li[1]
  ba = fix(STRSPLIT(ba,"=",/EXTRACT))
  nb = ba[1]
  ty = fix(STRSPLIT(ty,"=",/EXTRACT))
  typee = ty[1]
 
  data = MAKE_ARRAY(ns,nl,nb,type=typee)
  openr,lun,file,/GET_LUN
  readu,lun,data
  free_lun,lun
  
  rgb = data[*,*,[3,2,1]]
  i = image(bytscl(rgb),/order )
end

效果图:
IDL学习1

后语

最近在学习opencv与IDL,不定期更新,话说好久没收到打赏了, :grin: 打赏直接扫描二维码,打赏名单请看:https://www.ixxin.cn/about.html


xxin blog , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明IDL学习一之打开ENVI二进制文件
喜欢 (5)
支付宝[853060844@qq.com]
分享 (0)
admin
关于作者:
坐标山科大遥感系小鲜肉一枚。
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址