如何使用 surf 在 Matlab 中绘制高度信息?
How to plot height information in Matlab using surf?
我已经从 TIFF 图像中获取纬度、经度和高度信息并将其输入 Matlab,并使用 surfc
函数将其绘制为 surfc(X,Y,Z)
。
surfc
输出:
树的图片:
但是如何让 Z 显示为 轮廓(类似于圆锥体) 对应于图像中对象的 高度?
感谢您的回答
如果您将点作为笛卡尔坐标使用 plot3
plot3(X,Y,Z,'.');
如果 X 和 Y 是自变量,Z 是因变量(给定 X 和 Y 的相应高度),则使用 surf
或 mesh
surf(X,Y,Z);
mesh(X,Y,Z);
否则请放一些您的数据和结果样本,以便我们更好地理解您的问题。
编辑: 您实际上是在获取等高线图,但 surfc
还应该绘制曲面。
看一下surfc
的documentation,你会发现它在一张图中结合了两个图(曲面和等高线)
[X,Y,Z] = peaks(30);
figure
surfc(X,Y,Z)
您可以更改冲浪的颜色映射。示例:
clear;clc;close all
tif4 = imread('RzwK3.tif');
THeight = rgb2gray(tif4(:,:,1:3));
imshow(THeight)
x = 1:size(THeight,1); % can be changed to coordinates
y = 1:size(THeight,2);
[X,Y] = ndgrid(x,y);
% make contour color on the surface
M = 4; % # color in contour
Cvec = parula(M); % any Mx3 RGB triplet
hs = surf(X,Y,THeight,'EdgeAlpha',.1);
colormap(Cvec)
colorbar
如果您的 Matlab 版本没有 parula
或其他颜色生成函数,您可以手动分配 Cvec
。矩阵的每一行都是一个 RGB 颜色三元组,其值介于 0 和 1 之间(您可以将 Web RGB 颜色除以 256)并且矩阵中应该有 M
行。例子:下面是parula(4)
的输出,可以通过替换这行代码手动输入。
Cvec = [
0.2081 0.1663 0.5292; % R1 G1 B1
0.0265 0.6137 0.8135; % R2 G2 B2
0.6473 0.7456 0.4188; % R3 G3 B3
0.9763 0.9831 0.0538]; %R4 G4 B4
我已经从 TIFF 图像中获取纬度、经度和高度信息并将其输入 Matlab,并使用 surfc
函数将其绘制为 surfc(X,Y,Z)
。
surfc
输出:
树的图片:
但是如何让 Z 显示为 轮廓(类似于圆锥体) 对应于图像中对象的 高度?
感谢您的回答
如果您将点作为笛卡尔坐标使用 plot3
plot3(X,Y,Z,'.');
如果 X 和 Y 是自变量,Z 是因变量(给定 X 和 Y 的相应高度),则使用 surf
或 mesh
surf(X,Y,Z);
mesh(X,Y,Z);
否则请放一些您的数据和结果样本,以便我们更好地理解您的问题。
编辑: 您实际上是在获取等高线图,但 surfc
还应该绘制曲面。
看一下surfc
的documentation,你会发现它在一张图中结合了两个图(曲面和等高线)
[X,Y,Z] = peaks(30);
figure
surfc(X,Y,Z)
您可以更改冲浪的颜色映射。示例:
clear;clc;close all
tif4 = imread('RzwK3.tif');
THeight = rgb2gray(tif4(:,:,1:3));
imshow(THeight)
x = 1:size(THeight,1); % can be changed to coordinates
y = 1:size(THeight,2);
[X,Y] = ndgrid(x,y);
% make contour color on the surface
M = 4; % # color in contour
Cvec = parula(M); % any Mx3 RGB triplet
hs = surf(X,Y,THeight,'EdgeAlpha',.1);
colormap(Cvec)
colorbar
如果您的 Matlab 版本没有 parula
或其他颜色生成函数,您可以手动分配 Cvec
。矩阵的每一行都是一个 RGB 颜色三元组,其值介于 0 和 1 之间(您可以将 Web RGB 颜色除以 256)并且矩阵中应该有 M
行。例子:下面是parula(4)
的输出,可以通过替换这行代码手动输入。
Cvec = [
0.2081 0.1663 0.5292; % R1 G1 B1
0.0265 0.6137 0.8135; % R2 G2 B2
0.6473 0.7456 0.4188; % R3 G3 B3
0.9763 0.9831 0.0538]; %R4 G4 B4