MATLAB读取figure图像二维数据然后输出三维

MATLAB读取figure图像中二维数据

背景

笔者做边坡雷达数据处理方向,雷达的形变图是由前人编写的matlab pcode加密过的。不会形成过程数据,运行程序后MATLAB只会弹出figure图,处理起来非常不方便。这时,就需要编写程序将figure图的“数据”读出来。在网络上搜索、整理后形成的代码,给需要的人以供参考。

环境配置

  • matlab 2016b

生成图像数据的代码

 data = '2018_03_27_10_50_36';    % 图像文件名
 %% 查看相干结果
 file2 = [data,'.AfterFilter'];
 fun_show(file2,2)                % pcode文件调用函数fun_show生成图形

显示图像如下:

 %% 读取图像中数据的代码
 xianggan = findobj(gcf,'type','image');  
 zz = get(xianggan,'cdata');
 close(figure(gcf));
 figure;
 imagesc(-xx,yy,zz);colorbar;axis xy;colormap hot;
 title(strrep(data,'_','\_'));xlabel('方位向(m)');ylabel('距离向(m)');
 title([strrep(data,'_','\_'),'数据']);

在变量空间就可以找到图像中的数据、坐标轴
在这里插入图片描述

将读取的数据输出为三维数据

方法一

根据二维图像像素排列方式,图像左上角为起始像素,逐一存储。

[M,N] = size(zz);
img = zeros(M*N,3);
%=========================================
%像素点的形变值及像素点的对应的横纵坐标
%img(k+j,1)=d(i,j);%%如果不要像素值
%img(k+j,2)=j;%横坐标,对应原图像列
%img(k+j,3)=i; %纵坐标,对应原图像行
%=========================================
for i=1:M
    for j=1:N
        k=N*(i-1);
       img(k+j,1)=zz(i,j);%如果不要像素值
       img(k+j,2)=xx(j);%方位向坐标
       img(k+j,3)=yy(i);%距离向坐标
    end
end

% 保存形变图像中的数据到mat文件
save img.mat img;

% 保存形变图像中的数据到txt文件
save img_txt.txt img;

方法二

简便方案,同时生成X坐标和Y坐标空间网格,缺点是MATLAB的网格点数不能过多,网格点数多的情况建议选择方法一。

[M,N] = size(zz);
img = zeros(M*N,3);
[meshY,meshX] = meshgrid(yy,xx);
img = [meshX(:) meshY(:) zz(:)];

% 保存形变图像中的数据到mat文件
save img.mat img;

% 保存形变图像中的数据到txt文件
save img_txt.txt img;

参考

[1]matlab之读取fig图像里的数据

  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值