how to extract rgb color image from surface height colormap

2 vues (au cours des 30 derniers jours)
Itzik Ben Shabat
Itzik Ben Shabat le 11 Mar 2015
Hi all, I wrote the code attached below. what i wish to do now (and not sure how) is create an RGB image from the colors that are defined by the Z values. so lets say that in the given example the color at each point will translate to a pixel then i will have a 61X61 RGB color image. how can i do that ?
[X,Y] = meshgrid(-3:0.1:3,-3:0.1:3);
Z=peaks(X,Y);
%Geneating the colors for the colormap
colors=[0,0.6,1;
0,0.6,1;
0.95,0.95,0.95;
0.953,0.64,0.375;
0,1,0;
1,1,1;
1,1,1];
colors_number=size(colors,1);
colors_interp = interp1(1:colors_number,colors,1:0.1:colors_number);
% Draw the surface
h=surf(X,Y,Z,'edgecolor','none');
colormap(colors_interp);

Réponse acceptée

Guillaume
Guillaume le 11 Mar 2015
See the tip section of caxis for an explanation of how matlab maps the Z values to a colour map index. So:
mapbounds = caxis;
numcolours = size(colors_interp, 1);
mapindex = fix((Z-mapbounds(1)) / (mapbounds(2) - mapbounds(1)) * numcolours) + 1;
mapindex(mapindex < 1) = 1;
mapindex(mapindex > numcolours) = numcolours;
img = ind2rgb(mapindex, colors_interp);
imshow(img);

Plus de réponses (0)

Catégories

En savoir plus sur Red dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by