2011-10-24 25 views
3

私は海王星の表面のjpgイメージファイルを持っています。私の意図は、テクスチャマッピングを構築することです(Matlab help about this topic参照)。私はファイルとコマンドimreadを使用しましたが、jpgファイルはカラーマップを持っていません(一般的には、imreadはMxNx3行列を生成し、カラーマップはMx3行列です)。私はそれをどうやってできるのか知りたい。MATLABでJPEGファイルからカラーマップを取得するにはどうすればよいですか?

画像が1000ワード(時には)よりも価値があるように、私の目的はそのようなものをexampleしかし、ネプチューンのためにしています。

+1

注:画像は0単語の価値があるかもしれません:http://spikedmath.com/168.html – Jonas

+0

@ジョナス:ha、ha、非常に良い観察。 – julian

+0

@kigurai:この質問を編集していただきありがとうございます。 – julian

答えて

6

MxNx3配列はRGB配列、つまり位置(x、y)にあり、3番目の次元は赤、緑、青の3つの値に対応します。

あなたはここでRGB2IND

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

Matlabのテクスチャマッピングに関する助けを借りて私の問題を解決してくれてありがとうございました。 – julian

+0

@Jonas画像がすでに索引付けされている場合は、教えてください。カラーマップはどのように取得できますか? –

+1

@LakshmiNarayanan:もしあなたが持っているものがインデックス画像であれば、インデックス画像には色を定義する別の配列へのインデックスが含まれているので、カラーマップの内容を知る方法はありません。 – Jonas

1

機能を使用し、カラーマップでインデックス付きイメージにRGB画像から変更するには、ジョナスの回答に基づいて、私の質問のためのソリューションです:

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