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