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

matlab,图像像素和实际距离的多轴或多尺度,matlab,scale,axis,Matlab,Scale,Axis,在matlab中,我创建了一个64x64像素的图像,每个像素的值都不同 但我也想在绘图上显示图像的真实比例。实际大小是1米,我想有两个x轴刻度和两个y轴刻度来显示像素位置和实际距离 我该怎么做呢?下面是一个例子,使用从到上一个问题的方法。这是每个维度上有64个像素的随机图像的输出: 下面的代码创建了一个包含三个轴的正方形图。宽度和高度手动设置为相等。这是正确对齐轴所必需的。之后,使用imshow在新轴a中绘制实际图像。请注意,我们需要提供'Parent'-属性来绘制特定轴。 然后我们在底部b和

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

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


我该怎么做呢?

下面是一个例子,使用从到上一个问题的方法。这是每个维度上有64个像素的随机图像的输出:

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

以下是完整的代码:


下面是一个例子,使用从到上一个问题的方法。这是每个维度上有64个像素的随机图像的输出:

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

以下是完整的代码:

% 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');