0
我有我的材料(南瓜的一些片段)周圍的綠色背景和一些陰影的圖像。我想刪除背景和陰影,然後將RGB顏色轉換爲l a b *並分開l *,a *,b *。最終得到平均L *,A *,B * values.these的是我的代碼:爲什麼使用MATLAB將RGB轉換爲l * a * b *顏色值時輸出錯誤?
I=imread('006.jpg'); %import image
I=double(I)./255; %convert to double
I=imresize(I,0.25); %resize image
G=I(:,:,2)-I(:,:,1)-I(:,:,3); %how green(2) compared to red(1) and blue(3)
L=I.*repmat(G < 0,[1,1,3]); %remove all values that are green
%convert rgb to lab
L=makecform('srgb2lab');
lab=applycform(I,L);
%separate l, a, b values
l=lab(:,:,1);
a=lab(:,:,2);
b=lab(:,:,3);
%calculate mean values
lm=mean(mean(l));
am=mean(mean(a));
bm=mean(mean(b));
最後,這些代碼給我L = 82,A = -31,B = 78。 但他們是錯誤的,因爲我用數字色度計檢查這些值的範圍,他們應該近似像l = 70,a = 17,b = 66。我認爲這些代碼顯示了我已經刪除的實驗室背景值,而不是材料的實驗室值! 我能做什麼?
您的解決方案非常好,謝謝。我使用MATLAB> R2015b。你能解釋一下使用'rgb2lab'而不是'makecform'和'applycform'的區別嗎? – parisa
我真的不知道區別,因爲我從未使用過任何這些功能。我剛剛引用了文檔。檢查文檔,我可以告訴你,默認的參考白點不同('d65' vs'icc)'''rgb2lab'還有幾個選項可用。如果我的答案沒問題,請點擊左邊的複選標記來接受它。 –