matlab,图像像素和实际距离的多轴或尺度

matlab, multiple axes or scales for image pixels and real distance

在 matlab 中,我创建了一个 64x64 像素的图像,每个像素的值都不同。

但我还想在绘图上显示图像的真实比例。实际尺寸是 1 米,我想要两个 x 轴刻度和两个 y 轴刻度来显示像素位置和实际距离。

我该怎么做?

这是一个示例,使用 中的方法来解决之前关于 SO 的问题。这是一些每个维度上有 64 像素的随机图像的输出:

以下代码创建一个包含三个轴的正方形 figure。宽度和高度手动设置为相等。这是轴正确对齐所必需的。在此之后,使用 imshow 在新轴 a 中绘制实际图像。请注意,我们需要提供 'Parent'-属性 以在特定轴上绘制。 然后我们在底部 b 和左侧 c 添加现实世界轴。它们的 'position' 属性分别设置为几乎为零的高度或宽度。通过查看定位的使用值,我们看到轴 a 被设置在其他两个轴的 top/right 侧。

完整代码如下:

% some image data
img = rand(64);

% define variables
imgsize = 500;  % size on screen
xreal = 1;      % meter
yreal = 1;      % meter

% create square figure
figure('Position',[0,0,imgsize,imgsize]);

% pixel axes and actual plot
a=axes('Position',[.2 .2 .7 .7]);
set(a,'Units','normalized');
iptsetpref('ImshowAxesVisible','on');
imshow(img,'Parent',a);

% real world axis (below)
b=axes('Position',[.2 .1 .7 1e-12]);
set(b,'Units','normalized');
set(b,'Color','none');
set(b,'xlim',[0 xreal]);

% real world axis (left)
c=axes('Position',[.1 .2 1e-12 .7 ]);
set(c,'Units','normalized');
set(c,'Color','none');
set(c,'ylim',[0 yreal],'YDir','reverse');

% set labels
xlabel(a,'Pixels')
xlabel(b,'Real distance (m)')
ylabel(a,'Pixels');
ylabel(c,'Real distance (m)');
title(a,'A nice title to this noisy image');