Как получить цветовую карту из файла JPEG в MATLAB? - PullRequest
4 голосов
/ 24 октября 2011

У меня есть файл изображения jpg поверхности Нептуна.Мое намерение состоит в том, чтобы создать наложение текстуры (см. Справка Matlab по этой теме ).Я использовал команду imread с файлом, но у файлов jpg нет цветовой карты (в общем случае, команда imread создает матрицу MxNx3, а цветовая карта - матрицу Mx3).Я хотел бы знать, как я могу это сделать.

Как изображение более ценное, чем 1000 слов (иногда), моя цель - сделать что-то подобное пример , но для Нептуна.*

Ответы [ 2 ]

7 голосов
/ 24 октября 2011

Массив MxNx3 является массивом RGB, т.е. в позиции (x, y) третье измерение соответствует триплету значений красного, зеленого и синего.

Чтобы изменить изображение RGB на индексированное изображение с цветовой картой, используйте функцию RGB2IND

[indexedImage,colorMap] = rgb2ind(rgbImage, nColors); %# set nColors to e.g. 128 
2 голосов
/ 24 октября 2011

Вот решение моего вопроса, основанное на ответе Йонаса:

[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]);
...