matlab 三维高程根据图片颜色给对应点赋予颜色

版权声明:路漫漫其修远兮,吾将上下而求索 https://blog.csdn.net/weixin_41649786/article/details/82780980

用到mesh函数就可以了,mesh(_,C);其中C表示颜色矩阵

代码如下:

clear; close all; clc;
%% 导入光学图片

picture_data = imread('test.jpg');
picture_data = rgb2gray(picture_data);
picture_data = double(picture_data);
figure('name','颜色图像');
image(picture_data)
colormap(gray(256)); colorbar
%% 画山峰,赋予高程信息,可以看做实际的位置坐标
[x,y]=meshgrid(-4.99:0.01:5,-2.99:0.01:3);
z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2)- 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2)- 1/3*exp(-(x+1).^2 - y.^2);
z = 100 * abs(z);
x = 100*(x+5);
y = 100*(y+3);
%% 画图
figure('name','高程图')
mesh(x, y,z);
colormap(gray(256)); 
colorbar
figure('name','带有颜色的高程图')
mesh(x, y,z, picture_data);%需要注意的是,颜色矩阵必须和z矩阵一样大。
colormap(gray(256)); 
colorbar

结果如下:

颜色图(灰度图)

 三维图(不带颜色的)

三维图(带有颜色渲染的)

 最后给一张我的颜色图,是我随意找的,截取的,像素转化为600*1000的矩阵

 最后需要说明的是:彩图也可以直接渲染,只不过效果不好,就没有展示。可以直接将rgb2gray()那一行代码注释掉就能实现。

                                                                                             给学matlab的人,包括我自己一个勉励:路漫漫其修遠兮,吾將上下而求索

猜你喜欢

转载自blog.csdn.net/weixin_41649786/article/details/82780980