MSTAR是陆地目标的雷达图像数据集,但给出的文件是二进制格式的文件,在下载数据集是说明中给了一个地址可以下载到转换工具(https://www.sdms.afrl.af.mil,需翻墙),我用的不是很明白。

README中对MSTAR数据格式说明如下:

FILE FORMAT

Each file is constructed with a prepended, variable-length,

Phoenix formatted (ASCII) header which contains detailed ground

truth and sensor information for the specific chip.  Following

the Phoenix header is the data block.  The data block is written

in Sun floating point format and is divided into two blocks, a

magnitude block followed by a phase block.

用记事本任意打开一个文件可以看到文件的PhoenixHeader,中间我们需要的信息是NumberOfColumns和NumberOfRows这两个变量,PhoenixHeader以单独一行“[EndofPhoenixHeader]”结束,后面跟的是模值块与相位块(SAR图像是一个复矩阵),我们需要提取模值块并保存为图片。

下面是代码:

  1. clear
  2. ReadPath = 'D:\Document\Graduation Project\MSTAR\DAA7B02AA\TARGETS\TEST\15_DEG\T72\SN_S7\';
  3. SavePath = 'D:\Document\Graduation Project\MSTAR\DAA7B02AA\TARGETSJPG\TEST\15_DEG\T72\SN_S7\';
  4. FileType = '*.017';
  5. Files = dir([ReadPath FileType]);
  6. NumberOfFiles = length(Files);
  7. for i = 1 : NumberOfFiles
  8. FileName = Files(i).name;
  9. NameLength = length(FileName);
  10. FID = fopen([ReadPath FileName],'rb','ieee-be');
  11. ImgColumns = 0;
  12. ImgRows = 0;
  13. while ~feof(FID) % 在PhoenixHeader找到图片尺寸大小
  14. Text = fgetl(FID);
  15. if ~isempty(strfind(Text,'NumberOfColumns'))
  16. ImgColumns = str2double(Text(18:end));
  17. Text = fgetl(FID);
  18. ImgRows = str2double(Text(15:end));
  19. break;
  20. end
  21. end
  22. while ~feof(FID) % 跳过PhoenixHeader
  23. Text = fgetl(FID);
  24. if ~isempty(strfind(Text,'[EndofPhoenixHeader]'))
  25. break
  26. end
  27. end
  28. Mag = fread(FID,ImgColumns*ImgRows,'float32','ieee-be');
  29. Img = reshape(Mag,[ImgColumns ImgRows]);
  30. imwrite(uint8(imadjust(Img)*255),[SavePath FileName(1:NameLength-3) 'jpg']); % 调整对比度后保存
  31. fclose(FID);
  32. end

更新一下

最近又用到了这个小脚本,不过要自己建文件夹挺麻烦的,把它改了一下,写成了函数形式。当目标文件夹不存在时可以自动建立目标文件夹,并且支持递归建立子文件夹并将生成文件保存至对应的子文件夹。

以下是代码:

  1. function MSTAR2JPG(sourcePath, targetPath)
  2. if ~exist(targetPath,'dir')
  3. mkdir(targetPath);
  4. end
  5. Files = dir(sourcePath);
  6. for i = 1:length(Files)
  7. if Files(i).isdir == 0
  8. FID = fopen([sourcePath '\' Files(i).name],'rb','ieee-be');
  9. while ~feof(FID) % 在PhoenixHeader找到图片尺寸大小
  10. Text = fgetl(FID);
  11. if ~isempty(strfind(Text,'NumberOfColumns'))
  12. ImgColumns = str2double(Text(18:end));
  13. Text = fgetl(FID);
  14. ImgRows = str2double(Text(15:end));
  15. break;
  16. end
  17. end
  18. while ~feof(FID) % 跳过PhoenixHeader
  19. Text = fgetl(FID);
  20. if ~isempty(strfind(Text,'[EndofPhoenixHeader]'))
  21. break
  22. end
  23. end
  24. Mag = fread(FID,ImgColumns*ImgRows,'float32','ieee-be');
  25. Img = reshape(Mag,[ImgColumns ImgRows]);
  26. imwrite(uint8(imadjust(Img)*255),[targetPath '\' Files(i).name(1:end-3) 'JPG']); % 调整对比度后保存
  27. clear ImgColumns ImgRows
  28. fclose(FID);
  29. else
  30. if strcmp(Files(i).name,'.') ~= 1 && strcmp(Files(i).name,'..') ~= 1
  31. if ~exist([targetPath '\' Files(i).name],'dir')
  32. mkdir([targetPath '\' Files(i).name]);
  33. end
  34. MSTAR2JPG([sourcePath '\' Files(i).name],[targetPath '\' Files(i).name]);
  35. end
  36. end
  37. end
  38. end

MSTAR 数据转格式相关推荐

  1. R语言ggplot2可视化:应用pivot_longer函数将数据从宽格式转换为长格式、为dataframe的每一列绘制密度图和直方图(堆叠)

    R语言ggplot2可视化:应用pivot_longer函数将数据从宽格式转换为长格式.为dataframe的每一列绘制密度图和直方图(堆叠) 目录 R语言ggplot2可视化:应用pivot_lon ...

  2. R语言dataframe数据列格式转换(从整型integer转化为浮点型float)

    R语言dataframe数据列格式转换(从整型integer转化为浮点型float) 目录 R语言dataframe数据列格式转换(从整型integer转化为浮点型float)

  3. 常用的数据交换格式有哪些_Linux后台开发6大常用的开源库,让你在同行中脱颖而出...

    后台开发,语言主要是 c 和 c++ , 这里简单罗列一下工作中用的很频繁的那些开源软件 1. OpenSSL openssl OpenSSL 是一个安全套接字层密码库,囊括主要的密码算法.常用的密钥 ...

  4. XML和JSON 数据交换格式

    为什么80%的码农都做不了架构师?>>>    一.什么是数据交换格式? 客户端与服务器常用数据交换格式xml.json.html 二.数据交换格式应用场景 移动端(安卓.IOS)通 ...

  5. python 表格格式输出_利用python对excel中一列的时间数据更改格式操作

    问题场景:需要将下列的交期一列的数据格式更改成2019/05/10 存货编码 尺寸 数量 交期 0 K10Y0190000X B140 200 2019-05-10 00:00:00 1 K10Y01 ...

  6. 【FPGA】SRIO中的关键问题总结(一)SRIO中的关键数据包格式总结

    目录 1 SRIO事务及其类型 2 常用的I/O逻辑操作事务 3 HELLO包格式(重点) 4 SRIO数据包包格式 5 控制符号数据包格式 1 SRIO事务及其类型 SRIO(Serial Rapi ...

  7. I2C总线学习(二)--数据传送格式

    数据传送格式 (1)字节传送与应答 每一个字节必须保证是8位长度.数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位). (2)数据帧格式 在起始信号后必须 ...

  8. 计算机网络数据分析报告,贵州大学计算机网络实验报告-实验四-分析IP协议数据包格式...

    贵州大学计算机网络实验报告-实验四-分析IP协议数据包格式 (7页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 贵州大学GUIZHOU UN ...

  9. (POST请求中的三种数据请求格式.application/x-www-form-urlencoded和multipart/form-data和application/json)

    (POST请求中的三种数据请求格式.application/x-www-form-urlencoded和multipart/form-data和application/json) applicatio ...

  10. iBeacon的数据包格式

    Ibeacon 是apple开发的基于BLE(Bluetooth low energy)的精确定位技术.常常用来做室内定位. 这里简单讲解下ibeacon的数据包格式 这里以UUID为B9407F30 ...

最新文章

  1. java通过kerberos认证连接hdfs并写数
  2. ArchLinux下LXDE的安装与设置心得
  3. VC嵌入断点中断INT3
  4. android 点击外部接收事件,Android Dialog外部点击事件
  5. ServiceComb微服务开发框架介绍
  6. 计算机音乐至少还有你,至少还有你-林忆莲
  7. 【图像处理】MATLAB:亮度变换
  8. 拯救天使 (BFS)
  9. Asp.net 在线转Flv
  10. 1022. Genealogical Tree(topo)
  11. poi 获取删除线_Houdini 删除相机看不到的点背面的点或面
  12. windows 超简单实现多用户远程桌面,RDP WRAPPER
  13. 熵增定律:企业和个人发展的终极规律
  14. matlab 三维立方体,使用matlab函数构建三维立方体的几种方法
  15. 运营之光2.0 我的互联网运营方法论与自白
  16. python-大智慧price_oscillator指标
  17. Error from server: Get “https:IP:10250/*“:dial tcp IP:10250: connect: no route to host
  18. 黑苹果常见问题博文及网页部分集锦
  19. Linux常用系统工作命令、管理输入输出以及vim、管道的相关用法
  20. 【入门】人见人爱A+B:时间相加

热门文章

  1. win10通过ping命令来检测网速
  2. Excel制作增长趋势图
  3. allure报告本地执行,显示趋势图
  4. centos7无法上网问题
  5. 张孝祥正在整理Java就业面试题大全
  6. 监控系统 服务器配置,监控系统服务器配置
  7. 湖北大学98届计算机网络,我校学子在“H3C”杯全国大学生网络技术大赛中获一等奖...
  8. iphone 最具人气的论坛,网站,博客等
  9. php添加背景图及设置格式,word文档背景图片怎么设置
  10. 利用echart和echart-gl绘制江苏省的地图之二