目录
1. 问题分析
2. 技术分析
3. 程序代码
4. 代码运行结果
1. 问题分析
日常工作尤其是测绘、地质、遥感行业,需要画DEM模型,并在这个模型的基础上,进行着色、渲染。比如,地质分析地面三维地表形变之时,需要根据DEM数据画出目标区域的三维模型,然后根据地基雷达、星载雷达计算出来的形变值,并对目标点(区域)进行作色,效果如下图所示;
2. 技术分析
本功能需要先将DEM数据画出来,然后在所需区域(位置)进行作色渲染,其中话三维模型 用到mesh函数就,mesh(_,C);其中C表示颜色矩阵,也可以先将图片话出来,然后根据figure的color属性进行着色。
3. 程序代码
根据上述技术问题,进行编程,代码如下:
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
4. 代码运行结果
4.1 颜色图(灰度图)
4.2 三维图(不带颜色的)
4.3 三维图(带有颜色渲染的)
最后给一张我的颜色图,是我随意找的,截取的,像素转化为600*1000的矩阵
最后需要说明的是:彩图也可以直接渲染,我写的效果不好,就没有展示。可以直接将rgb2gray()那一行代码注释掉就能实现。最好看到一个很不错的博客,可以参考:MATLAB 制作抖音同款 立体人物文字海报_slandarer的博客-CSDN博客_matlab立体字,这个博主写的很不错
不足之处,敬请斧正!
转载请说明出处!
给学matlab的人,包括我自己一个勉励:路漫漫其修遠兮,吾將上下而求索