1. 程式人生 > >matlab 三維高程根據圖片顏色給對應點賦予顏色

matlab 三維高程根據圖片顏色給對應點賦予顏色

用到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的人,包括我自己一個勉勵:路漫漫其修遠兮,吾將上下而求索