2011-06-20 33 views
1

當我將以下圖像讀入Matlab時,我獲得了一個基本上包含組成圖像內每個像素的RGB顏色樣本值的3D矩陣。Matlab - 將標量值附加到RGB顏色

enter image description here
是否有我可以使用分配的標量值之間可以說,任何Matlab的函數[-10,10]至基於所述RGB值圖像內的每個像素?純紅應該像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值完全爲零,哪些是完全一個以確定要插入哪對之間。例如,假設size(image)==[100,100,3]image=im2double(imread(myfilename))max(image(:))==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 

這個解決方案不是矢量化,但它應該讓你在正確的軌道上了可行的實施。當然,如果你能避免多色查找表作爲RGB保存數據,但保存原始值而不是,你可以節省自己的一些麻煩......