我不確定你的問題到底是什麼,但下面的代碼可能會幫助你實現結果。如果您發表評論,我可以改進答案。
0)以RGB格式讀入圖像。
第一種方法:分離出綠色和其他成分(分別繪製出每個成分),並將所有非綠色成分的最終圖表設置爲1.注意:由於所有成分都含有一定量的綠色。
第二種選擇:根據最大貢獻將圖像分爲紅色,綠色或藍色。最後一張圖顯示轉換爲黑白。注意:該算法不是矢量化的,所以如果處理大量/許多圖像,這將會很慢。
I = imread('autumn.tif');
IG = I; IG(:,:,[1 3]) = 0; % Green only
INoG = I-IG;
INoG1 = INoG; INoG1(abs(INoG1) > 0) = 1;
% Possibly what you want?
% Display resulting images
subplot(4,2,1)
imshow(I)
title('Original');
subplot(4,2,2)
imshow(INoG)
title('No Green');
subplot(4,2,3)
imshow(IG)
title('Only Green');
subplot(4,2,4)
imshow(INoG1)
title('No Green (all 1?)');
% Note: There is a bit of each color in every pixel...
% => Potential solution: Use major contributor
% Not vectorized => Slow for large images
IRGB = I*0;
for i = 1:size(I,1)
for j = 1:size(I,2)
[~,k] = max(I(i,j,:));
if (size(k) > 1)
k = k(1);
end
IRGB(i,j,k) = 255;
end
end
IRGBG = IRGB; IRGBG(:,:,[1 3]) = 0; % Green only
IRGBNoG = IRGB-IRGBG;
BandWNoG = IRGBG(:,:,2); % Possibly what you want?
% Display resulting images
subplot(4,2,5)
imshow(IRGB);
title('RGB - Original');
subplot(4,2,6)
imshow(IRGBNoG);
title('RGB - No Green');
subplot(4,2,7)
imshow(IRGBG);
title('RGB - Only Green');
subplot(4,2,8)
imshow(BandWNoG)
title('Black and White - No Green');
不能使用不同的顏色單一的通道,其原因,如果你認爲什麼樣的價值純白將在R,G和B顏色分割爲更通常的RGB沒有這樣做,這將成爲明顯的,但在另一個像HSV的色彩空間。 – nkjt
我明白了,所以在使用'rgb2hsv()'之前我已經轉換爲HSV colorspace,但問題仍然是,我需要在值通道上執行哪些操作來標記像素? –
最終圖像應該是什麼樣子?這聽起來像是你想創建一個新的圖像(最初)爲綠色像素爲0,否則爲1。以這種方式,你會得到一張黑白照片。 – Alessiox