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');
在 matlab 中,我创建了一个 64x64 像素的图像,每个像素的值都不同。
但我还想在绘图上显示图像的真实比例。实际尺寸是 1 米,我想要两个 x 轴刻度和两个 y 轴刻度来显示像素位置和实际距离。
我该怎么做?
这是一个示例,使用
以下代码创建一个包含三个轴的正方形 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');