how to extract rgb color image from surface height colormap

7 ビュー (過去 30 日間)
Itzik Ben Shabat
Itzik Ben Shabat 2015 年 3 月 11 日
コメント済み: Itzik Ben Shabat 2015 年 3 月 11 日
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);

採用された回答

Guillaume
Guillaume 2015 年 3 月 11 日
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);

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeRed についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by