我有一个海王星表面的jpg图像文件。我的目的是构建纹理映射(参见Matlab help about this topic)。我已经使用命令imread和文件,但jpg文件没有colormap(一般来说,命令imread产生MxNx3矩阵,色图是Mx3矩阵)。我想知道如何做到这一点。
就像一张图像比1000字(有时候)更有价值,我的目的是做example之类的东西,但对于海王星来说。
答案 0 :(得分:7)
MxNx3阵列是RGB阵列,即在位置(x,y),第三维对应于红色,绿色和蓝色值的三元组。
要使用色彩图从RGB图像更改为索引图像,请使用函数RGB2IND
[indexedImage,colorMap] = rgb2ind(rgbImage, nColors); %# set nColors to e.g. 128
答案 1 :(得分:2)
根据Jonas的回答,这是我的问题的解决方案:
[X, map] = rgb2ind(imread('neptune.jpg'),128);
[x,y,z] = sphere(50);
x = 24764*x;
y = 24764*y;
z = 24764*z;
props.FaceColor= 'texture';
props.EdgeColor = 'none';
props.Cdata = flipud(X); % it is necessary to do this for getting the
% appropiate image on the sphere
surface(x,y,z,props);
colormap(map);
axis equal;
view([71 14]);