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生成图形

显示图像如下:
MATLAB读取figure图像二维数据然后输出三维

 %% 读取图像中数据的代码
 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,'_','\_'),'数据']);

在变量空间就可以找到图像中的数据、坐标轴
MATLAB读取figure图像二维数据然后输出三维

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

[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;

参考

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