当前位置:   article > 正文

MSTAR 数据转格式_magnet:? xt=urn:btih:145b366d026b068f8d517b2172528

magnet:? xt=urn:btih:145b366d026b068f8d517b21725286b5a6b6e1b5&dn=%23 sdms-88

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



更新一下


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

以下是代码:


 
 
  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
  • 1


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/339345
推荐阅读
相关标签
  

闽ICP备14008679号