displaying RGB colours using SURF.

I am trying to display a rgb colour map on a gridded surface using surf.
I have grids of each rgb colour. How do I combine to give the surf(x,y,z,C)?
thanks

6 Comments

thanks all, solved. Created C as nx,ny,3(rgb) matrix.
For the benefit of others, could you provide a small demo?
I'm attaching mine (which is based Bruno's method below).
It should be "based on Ameer's method" :P
the issue was how to structure an image variable. i wasn't starting from an image, but a set of rgb points.
% x,y,z point cloud poitions in temp(:,1:3)
% rgb levels for points in temp(:,4:6)
% first grid the point data and the colour data.
x = temp(:,1);
y = temp(:,2);
z = temp(:,3);
%define grid
xmax = max(x);
xmin = min(x);
ymax = max(y);
ymin = min(y);
n = 1000;
m = 1000;
xs = (xmax-xmin)/n;
ys = (ymax-ymin)/m;
[gx,gy]= meshgrid(xmin:xs:xmax,ymin:ys:ymax);
gz = griddata(x,y,z,gx,gy);
gr = griddata(x,y,temp(:,4),gx,gy, "nearest");% red
gg = griddata(x,y,temp(:,5),gx,gy, "nearest");% green
gb = griddata(x,y,temp(:,6),gx,gy, "nearest");% blue
gc(:,:,1) = gr; % red
gc(:,:,2) = gg; % green
gc(:,:,3) = gb; % blue
%normalise colours
gcc= gc/256;
surf(gx,gy,gz,gcc);
Thanks for everyone's comments. The image is of a Scottish hill fort from drone data btw.
I suggest using warp()
Sorry Ameer, you're absolutely right. Sometimes I work on too many problems too close together. I must have gotten confused.

Sign in to comment.

Answers (1)

You can use texture mapping to display an RGB image on a surface(). See here: https://www.mathworks.com/matlabcentral/answers/91858-is-it-possible-to-perform-texture-mapping-within-matlab. For example
img = imread('pears.png');
z = peaks(100);
surf(z, ...
'FaceColor','texturemap',...
'EdgeColor','none',...
'Cdata',img)
view(3)

Categories

Find more on Read, Write, and Modify Image in Help Center and File Exchange

Tags

Asked:

on 27 Dec 2020

Commented:

on 29 Dec 2020

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!