ALOS PALSAR-2数据读取与格式转换

  最近有一景ScanSAR模式双极化PALSAR-2数据,数据级别为L1.1,想要转换成MATLAB能读取的格式进行处理。由于网上资料很零碎折腾了好久,可能是做这行又像我这么菜的实在没几个,这里就记录一些折腾的经验,希望后来者上手的时候不用再这么麻烦。

  其实如果数据不大的话,ALOS数据整个压缩包导入SNAP软件中即可,但由于该数据太大(100G+),直接整幅导入会内存不足卡死。依据我为数不多的使用经验PolSARpro也不支持ALOS的某些格式,而根据原始数据格式直接编程读取难度过大又容易出错。多方求助后找到一个可行又成本不太高的方案,ENVI+SARscape导入,转为Tiff后用MATLAB读取。

  原始数据解压后内容大致如下,名为IMG-xxx的数据文件,分为2个极化5个条带;名为BRS-xxx的预览图;summary.txt是对整个产品的简介(特别简略);LED-xxx、TRL-xxx和VOL-xxx大概是各种格式的头文件,但直接用写字板等文本工具打开也是看不太看得懂的,虽然不是完全乱码,但各参数名称都没写,可能得了解参数存储格式才能明白。

  经过了解,能够逐条带读取PALSAR数据的常用软件有GAMMA和SARscape,GAMMA是商业软件之前没用过也没有获取渠道,而后者获取相对容易。SARscape是基于ENVI开发的一款SAR处理软件,网上安装教程也相对较多,我用的是ENVI 5.3+SARscape 5.2.1,链接如下
链接:https://pan.baidu.com/s/10o08HIh0Ub8izG4-PonYmg
提取码:9dnp

1. 数据导入

  软件安装过程不再赘述,按照教程一步步来即可。安装完成后直接打开ENVI 5.3(64bit),安装成功的话可以在右边的Toolbox中找到SARscape的一栏(在ENVI classic里也可以操作,界面稍有不同,个人比较喜欢新的面板)。找到SARscape => Import Data => SAR Spaceborne => ALOS PALSAR-2,导入数据

  Imput Files选择任一极化的一个条带或多个条带均可,根据经验软件会自动识别并为一个极化生成一组文件(输入1个条带也会得到5个条带的结果)。

  对于ALOS,Parameters中需要手动选择Data Type,并且可以将Rename the Files Using Parameters设为True,其他参数可以暂时不管。最后在Output Files中选择合适的路径,最好是一个足够大且没有其他杂物的文件夹,方便后续整理。有时直接在Output Files中更改路径不好使,那么可以直接设置ENVI – File – Preferences – Directories里面的Output Directory。设好参数后点击Exec,耐心等待直到弹出End的提示框即为成功导入。虽然两个极化通道一起导入理论上也可以,但为了保险起见以及整理方便,还是逐个极化通道进行处理,各通道生成的文件整理到一个文件夹中以便后续处理。

  一个极化通道导入后生成的文件如下所示,一堆参数文件和一个文件夹。外面的参数文件意义还没搞明白,目前已知.sml文件是数据的一些详细参数,可以用记事本打开查看,其他格式的文件可能是方便另外某些软件读取吧。

  而数据的主体在文件夹里,也是我们要用到的部分,文件夹内容如下图所示。每个条带(burst)会对应生成三个文件:无后缀名的数据文件、条带信息.sml(非常详细,据说包含处理所需的所有信息)以及ENVI读取的头文件.hdr。

2. ENVI读取

  接下来用ENVI打开生成的文件夹中的数据,File => open,选择无后缀的数据文件或ENVI头文件.hdr均可,在主面板上方的下拉框中选择合适的拉伸模式即可预览图像(默认是Linear 2%)。双击左侧Layer Manager中的数据名可以看到数据的一些信息,发现数据是单通道的而Data Type是复数,虽然这不是什么新奇的发现,但可能是由于这个原因,数据无法直接保存为Tiff格式(可太要命了,这里折腾了好久)。

  因此,考虑将复数据的实部和虚部拆开,转换成两通道的图像。在右侧Toolbox面板中找到Raster Management => Convert Complex Data,选择刚刚导入的数据作为输入,OK,然后在弹出的框里选择输出的波段。这里只要实部和虚部,当然有需要也可自行选择其他的能量幅度相位等。选择Output Result to File并选择合适路径(还是注意空间要足够大,数据大的话很容易跑着跑着盘就满了,建议逐条带处理并及时删除中间文件,特别是ENVI自动生成的索引.enp很占地方,删掉不会损害文件,只是下次打开会重新建稍微慢一点罢了),点击OK。


  生成的结果就是实部和虚部分别存在两个通道的图像,第一个通道为实部,第二个为虚部,数据类型为float(不同数据不一定,自行查看)。

3. 保存为Tiff格式

  下面即可按常规方法将其保存为tiff格式,File => Save as => Save as… (ENVI, NITF, TIFF, DTED),选择刚刚生成的两波段图像(注意这个界面看不到导入的原始图像,也就是为何不能直接保存为tiff),选择Output Format为TIFF,输入合适的路径,OK。


  这里生成的TIFF通常来说可以直接在MATLAB中用imread()读取了,但因为并非正常的tiff图像,一般的照片查看器是打不开的。如果MATLAB里也无法读取,那么有可能是未生成成功,注意一下保存的时候ENVI面板右下角的进度条,一定等它完成之后才能关,否则可能没处理完导致文件受损无法打开。

附:一些零碎的注意事项

  1. 很久之前好像也遇到过ENVI保存的TIFF格式有问题,哪都打不开,那时候是先存成IMG格式再用ERDAS转的。不过后来都没有出现了,要是存成TIFF有问题的话可以多试几次,说不定就好了。
  2. 如果ENVI安装后打不开,提示找不到idl.dll,多半是Windows Defender或者McAfee把这个东西当病毒隔离了。从隔离区找到它们并复原,或者从安装包重新复制一份到安装路径(比如C:\Program Files\Exelis\IDL85\bin的bin.x86或bin.x86_64文件夹下)。暂时关闭防火墙(比如McAfee的实时扫描),程序运行起来就可以重新打开了(一劳永逸的方法是添加到McAfee实时扫描=>已排除的文件中)。

ALOS PALSAR-2数据读取与格式转换相关推荐

  1. 语义分割数据标注、格式转换

    1. 数据准备 1.1 labelme标注数据 labelme标注完之后会生成json格式标注文件,与图像在同一文件夹下面,如图 1.2 labelme标注格式转换(json转voc格式) label ...

  2. SU数据新旧格式转换问题

    最近在用SU做处理,用本机的SU程序对甲方给的数据进行处理时,总是报道头有问题.查了一下,发现甲方给的数据使用低版本的SU生成的,所以需要转换成新版本的数据格式. SU旧格式转新格式的命令为:suol ...

  3. ALOS PALSAR卫星轨道参数读取

    文件记录了卫星的包含28个空间位置的信息轨道矢量信息,包括时间.时间间隔.瞬时位置及速度. 本次采用两种方式进行读取,一种是用字符串分割函数进行,过程比较繁琐,因为字符串不一致,而且数据的排布也不一致 ...

  4. 【OpenCV】将图像数据由YUV格式转换成JPG格式直接使用,而不保存成文件

    解决方法 使用OpenCV图像编码和解码函数:imencode.imdecode std::vector data_encode; imencode(".png", img_enc ...

  5. 如何提高三维模型OSGB格式转换3DTILES的转换速度和数据质量

    如何提高三维模型OSGB格式转换3DTILES的转换速度和数据质量 提高三维模型从OSGB格式转换为3DTILES格式的转换速度和数据质量,可以从以下几个方面进行优化: 1.选用高效的转换工具:选择高 ...

  6. 倾斜摄影超大场景的三维模型OSGB格式转换3DTILES,为什么数据文件大小会变大?

    倾斜摄影超大场景的三维模型OSGB格式转换3DTILES,为什么数据文件大小会变大? 在将倾斜摄影超大场景的三维模型从OSGB格式转换到3DTILES格式时,数据文件大小可能会比原始数据文件变大的原因 ...

  7. 通过输入流获取json格式数据转为map格式

    将通过输入流获取json格式数据转为map格式 转换代码: try {int length = 0;//通过输入流获取到json格式数据ServletInputStream inputStream = ...

  8. PIC单片机精通_ADC左对齐与右对齐的数据读取问题

    1.右对齐数据读取问题 其转换结果可以读取的语句为:     resualt=int(ADCH)*256+ADCL; 右对齐的时候,10位ADC的结果表示方式为ADCH:ADCL,ADCH是10bit ...

  9. 目标检测标注格式转换:labelme2yolo yolo2labelme

    <labelme2yolo & yolo2labelme>    训练 yolo 系列模型的时候需要用到 labelme 标注一些数据,或者用众包标注大量数据.有些时候目标检测的场 ...

最新文章

  1. oracle密码错误延迟验证,oracle密码错误验证延迟
  2. WLC HA-维护模式(Maintenance Mode)
  3. 补全一段jQuery代码
  4. display:inline-block
  5. 文献学习(part51)--逼近理想点的主成分分析法及其应用
  6. linux mysql定时增量备份_Mysql 日常备份和增量备份脚本(Linux)
  7. 零配置 之 Spring注解实现Bean定义
  8. python图片保存_python读取和保存图片5种方法对比
  9. ES6之let原理+回调函数等待队列——五个完全相同的按钮,点第i个按钮弹出i
  10. Web前端开发必备工具推荐
  11. sql union 和 union all
  12. log功能ASP.NET MVC能实现
  13. SEAndroid语法介绍
  14. java系统架构原则_Apache的架构师们遵循的30条设计原则
  15. Java Email-----使用Java程序实现收发电子邮件
  16. 【排序算法】基数排序:LSD 与 MSD
  17. QQ网页登陆密码加密方式(农场、空间、WebQQ等通用)(网摘)
  18. 图表背后的秘密 | 技术指标讲解:ATR指标
  19. 创建一个 PHP 程序来扫描主机名上的开放端口。
  20. 中标麒麟桌面操作系统龙芯版系统安装盘(U盘)制作方法

热门文章

  1. 美国计算机专业申请绿卡难不难,美国容易获得绿卡的专业
  2. ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file
  3. 蓝桥杯c语言难还是JAVA难_蓝桥省一难如猛虎?宝刀助你一战成名!
  4. DophinScheduler ui部分 核心代码详细解析——底层逻辑与具体实现
  5. 通付盾是谁?通付盾能做什么?在做什么?
  6. MySQL主从复制和读写分离实现(上)
  7. 关于血管、毛细血管、静脉动脉 |2021/1/25
  8. ES6 数组 some, every用法
  9. 微信小程序之动态添加、删除指定view和获取input值
  10. 如何使用foxmail邮箱登录其他邮箱