2011-10-24 73 views
3

我有一個海王星表面的jpg圖像文件。我的意圖是構建紋理映射(請參閱Matlab help about this topic)。我已經使用了命令imread和文件,但jpg文件沒有色彩映射(通常,命令imread生成MxNx3矩陣,色彩映射是Mx3矩陣)。我想知道我該怎麼做。如何從MATLAB中的JPEG文件獲取顏色映射?

像圖像比1000字(有時)更有價值,我的目的是做類似的事情,但是對於海王星而言。

+1

注:一張圖片可能會值0字:http://spikedmath.com/168.html – Jonas

+0

@Jonas:哈,哈,非常好觀察。 – julian

+0

@ kigurai:非常感謝您編輯此問題。 – julian

回答

6

MxNx3數組是RGB數組,即在位置(x,y)處,第三維對應於紅色,綠色和藍色值的三元組。

要從RGB圖像與顏色表更改爲索引圖像,使用功能RGB2IND

[indexedImage,colorMap] = rgb2ind(rgbImage, nColors); %# set nColors to e.g. 128 
+0

非常感謝您的回答,這可以讓我與Matlab的紋理貼圖幫助一起解決我的問題。 – julian

+0

@Jonas如果圖像已經被索引,你能告訴我如何獲得彩色地圖? –

+1

@LakshmiNarayanan:如果您擁有的只是索引圖像,則無法知道顏色圖是什麼,因爲所有包含索引的圖像都是指向定義顏色的單獨數組的索引。 – Jonas

1

這是基於喬納斯的回答我的問題的解決方案:

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