IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> MSTAR数据集处理 -> 正文阅读

[游戏开发]MSTAR数据集处理

1.原始MSTAR转换工具的使用

参考链接:

(1) MSTAR数据集下载地址及处理方法:

https://blog.csdn.net/qq_34277608/article/details/87884021

(2)工具箱readme文件

mstar_conv_tools\mstar2jpeg

2. Ubantu使用

2.1 常见问题解决

ubantu系统下报错:

#include “/usr/include/jpeglib.h”

解决方法1:

sudo apt-get install libjpeg-dev

解决方法2:(可以解决后续问题)

1 :configure: error: jpeglib.h not found.
解决如下:
在终端依次输入

rpm -qa | grep libjpeg
yum -y install libjpeg-devel
yum list installed | grep libjpeg
rpm -ql libjpeg-turbo

再次编译即可

2.2 结果展示

官方数据库给的结果

128*128,3.56 KB (3,650 字节)

./mstar2jpeg -i HB03333.003 -o HB03333-1.jpg

./mstar2jpeg -i HB03333.003 -o HB03333-2-1.jpg [-e]

HB03333-2

./mstar2jpeg -i HB03333.003 -o HB03333-2-1.jpg -e

4.97 KB (5,092 字节)

HB03333-2-2

./mstar2jpeg -i HB03333.003 -o HB03333-3-1.jpg -e -q 95

10.4 KB (10,735 字节)

HB03333-3

./mstar2jpeg -i HB03333.003 -o HB03333-3-2.jpg -e -q 5

765 字节 (765 字节)

HB03333-3-2

./mstar2jpeg -i HB03333.003 -o HB03333-3-3.jpg  -q 95

HB03333-3-3

./mstar2jpeg -i HB03333.003 -o HB03333-4-1.jpg  -e -h

会产生头文件说明,其他无不同。

./mstar2jpeg -i HB03333.003 -o HB03333-5.jpg  -e -v

会产生以下提示说明,其他无不同

MSTAR to JPEG conversion: started!
Determining input image/hdr information...
==> MSTAR target chip image detected...
==> Little-Endian CPU detected: Will byteswap before scaling data!
Reading MSTAR Chip magnitude data...
Performing auto-byteswap...
Scaling MSTAR Chip magnitude data to 8-bit...
Contrast-Adjusting 8-bit data..
Setting up JPEG parameters....1

3.Matlab 复原

Maltab代码是当时合作的大佬同学基于linux代码重构的,基本逻辑比较简单,但是这里公开让大家欣赏一下。

% 这个程序可以把MSTAR车辆目标文件转为jpg,但是大场景图像数据格式不同,要稍微改一改
% MSTAR车辆目标文件前1606字节是头文件信息,记录了文件名、图像长宽等数据
% 后面131072=128*128*4*2字节是幅度+相位信息(所以*2),对应128*128个像素,每个像素值为占据4个字节的浮点数

function mstar2jpg()
    clc;clear;
    
    f3 = fopen('HB03333.003','r');              % 以只读方式打开二进制文件HB03333.003
    answer3 = fread(f3);                        % 数据读入answer3
    
    answer4 = answer3( 1607:132678 );           % 前1606字节是文件头,我们不需要 1607 + 131072 
    fid = fopen('临时文件HB03333.003', 'wb');   % 将出文件头外的所有数据写入临时文件HB03333.003
    fwrite(fid, answer4);
    
    f = fopen('临时文件HB03333.003', 'r');       % 以只读方式打开二进制文件 '临时文件HB03333.004'
    amplitude = fread(f,[128*128,1], '*float', 'ieee-be.l64');% 数据读入amplitude
    % HB03333.004一共131072字节,每4个字节表示一个浮点数(float)
    % 所以一共有32768=128*128*2个浮点数,其中前128*128个浮点数表示幅度,后128*128个表示相位
    % 这里只读取幅度信息,所以amplitude为(128*128,1)的向量
    fclose(f3);fclose(f);
    
    % 下面是幅度值转灰度值的线性变换,最大幅度对应灰度值255,最小幅度对应灰度值0
    max_pixel = max(amplitude);                   % 图像中最大的幅度值
    min_pixel = min(amplitude);                   % 图像中最小的幅度值
    pixel_range = max_pixel - min_pixel;
    pixel_scale = 255.0 / pixel_range;            % 变换比例
    amplitude1=amplitude;amplitude2=amplitude;amplitude3=amplitude;
    for i = 1 : 128*128
        amplitude1(i) = amplitude(i) - min_pixel;
        amplitude2(i) = amplitude1(i) * pixel_scale;
        amplitude3(i) = round(amplitude2(i)+0.5);  
    end
    pic = amplitude3;
    
    I = reshape( pic, 128, 128 );                 % 向量转矩阵
    I = mat2gray( I');                            % 矩阵转灰度图
    imwrite(I, 'HB03333.jpg');
    figure('name','灰度增强前的图像'); imshow(I)%显示图像
    
    enhanced_img = enhancement(pic);%灰度增强
    enI = reshape(enhanced_img, 128, 128);%向量转矩阵
    enI = mat2gray(enI');%矩阵转灰度图
    imwrite(enI, 'enHB03333.jpg');
    figure('name','灰度增强后的图像'); imshow(enI)%显示灰度增强后的图像
end

%灰度增强函数
function enhanced_img = enhancement(img)
% 统计图像中出现次数最多和最少的灰度值(max_count和min_count)
% 如果min_count>max_count
%     灰度 = 原灰度 * 255 /(min_count - max_count)
% 否则
%     灰度 = 原灰度*3
% 大于255的灰度记为255
    pixel_count = zeros(256,1);
    for i=1:255
        pixel_count(i) = sum(img==i);%统计图像中灰度i出现的次数
    end
    [~,max_count] = max(pixel_count); % 灰度i出现的次数最大值的下标,即此时的i
    [~,min_count] = min(pixel_count); % 灰度i出现的次数最小值的下标,即此时的i
    if min_count > max_count
        threshVal = min_count - max_count;
        img = 255.0 /threshVal*img;   % 灰度 = 原灰度 * 255/threshVal
    else
        img = 3*img;                  % 灰度 = 原灰度 * 3
    end
    img(img > 255) = 255;             % 大于255的灰度记为255
    img(img < 255) = img(img < 255) + 0.5;
    enhanced_img = round(img);
end

enHB03333

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:59:49  更:2022-03-30 19:01:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:36:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码