2011-06-20 4 views
1
私は基本的には画像内の全ての画素を構成するRGBのカラーサンプルの値が含まれ、3Dマトリックスを取得していMATLABに次の画像を読み取る

MATLABは、 - RGB色にスカラー値を取り付ける

enter image description here
Iの間のスカラー値をRGB値に基づいて、画像内の画素毎に[-10、10]を言うことができます割り当てるために使用できる任意のMATLAB関数はありますか?純粋な赤は10のように、黄は5に、緑は0に、青は-8のように、シアンは-10のようにすべきです。

+0

他の色はどうですか? (例えば、「純粋」でない色)。 –

+0

私のイメージでは、私はこの色のスペクトルしか持っていません。 – Simon

+2

[rgb2ind](http://www.mathworks.com/help/techdoc/ref/rgb2ind.html)を参照してください。 – Aabaz

答えて

0

あなたは上で定義されはあなたが興味のある色に対応し

colorlist=[1 0 0;1 1 0;0 1 0; 0 0 1; 0 1 1]; 
valuelist=[10 5 0 -8 -10]; 
figure; 
hold all; 
for i=1:10 
    bar(i,i,'FaceColor',colorlist(i,:)) 
end; 

を実行しているから見ることができるように。

があなたの画像の各ピクセルのために、あなたの質問を解決するために、あなたが希望どちらのペアを補間するかを決定するために、どのRGB値が正確にゼロであり、どのRGB値が正確に1であるかを決定する必要があります。

if ((image(x,y,:)==0)==[0 0 1]) && ((image(x,y,:)==1)==[1 0 0]) 
    %# interpolate between red and yellow 
    result(x,y)=10 - 5*image(x,y,2); %# pure red gives 10, pure yellow gives 5 
elseif ((image(x,y,:)==0)==[0 0 1]) && ((image(x,y,:)==1)==[0 1 0]) 
    %# interpolate between yellow and green 
    result(x,y)=5*image(x,y,1); %# pure yellow gives 5, pure green gives 0 
elseif 
    %# ... 
end 

このソリューションは、ベクトル化されていないが、それはなんとか実現のために右のトラックにあなたを取得する必要があります。たとえば、size(image)==[100,100,3]およびすなわちmax(image(:))==1image=im2double(imread(myfilename))を想定しました。あなたはRGBとして多色ルックアップテーブルを用いてデータを保存しないようではなく、生の値を保存することができれば、あなた自身にいくつかの手間を救うことができるもちろん、...

関連する問題