2014-06-25 126 views
1

我有一個邏輯圖像。我想將黑色像素轉換爲其他顏色。將黑色像素轉換爲其他顏色

我可以將它們轉換爲黑綠色和藍色,但我不知道我怎麼可以把他們像橙,紫,粉紅等色......

有什麼辦法,使這個?

我使用此代碼

RGB = zeros(3072, 4080, 1); 
RGB(:, :, 3) = 1-BW; 
imshow(RGB); 

問候

回答

0

代碼

BW = logical(round(rand(5,6))) %// random logical image as input for demo 
color1 = [129 52 168]; %// random color to be superimposed on the black pixels 

%// Create a 3D double array with zeros from BW replaced by color1 values 
%// and ones by zeros 
RGB1 = bsxfun(@times,double(~BW),permute(color1,[1 3 2])); 

%// Replace the zeros created from the previous step to 255s, as they 
%// denote ones in the input logical image 
RGB = uint8(RGB1+(RGB1==0).*255); %// desired output RGB image in UINT8 format 
imagesc(RGB),axis off %// display the RGB image for verification 

輸出(上運行的代碼)

BW = 
    1  0  1  1  0  1 
    0  0  1  0  0  1 
    0  1  1  1  1  0 
    0  0  1  1  1  1 
    0  1  0  0  0  0 

enter image description here

希望這會爲你工作!讓我知道。

+0

它完美的作品 – ffttyy

+0

@sigara真棒!很高興它對你有效。 – Divakar

1

要得到非原色它們轉換爲藍色,你需要編輯的顏色層的一個以上的值 - 每個像素由紅色,綠色和藍色子像素(即RGB)組成。基本上你需要找到強度的組合來使你的色彩更上一層樓。

如果你想設置顏色爲亮黃色,下面應該工作:

RGB(:, :, 3) = blue_intensity; 
RGB(:, :, 2) = green_intensity; 

的黃色光從藍色和綠色製造。如果你想要比其他顏色更多的顏色,只需要使一個亮度數字高於另一個。

如果您發佈了您正在嘗試實現的內容,我可以發佈更清晰的答案。

此外,我相信你的拳頭行應爲RGB = zeros(3072, 4080, 3);,使得3D矢量,3深,只要適合於RGB圖像

+0

我想將黑色像素轉換爲我自己的顏色,它是[R G B] = [129 52 168] – ffttyy

0

你可能想使用ind2rgb該轉換索引(索引圖像)的二維矩陣根據一個特定的顏色表

rgb是三個值(在範圍[0..1]),表示新的顏色要分配到針對BWfalse然後像素的RGB圖像

RGB = ind2rgb(BW, [ r, g, b; 1 1 1]); 

將全部黑色轉換爲[r,g,b],並將true像素保留爲白色。


這裏有一個例子:

BW = rand(10) < .5; 
RGB = ind2rgb(BW, [100/255 10/255 50/255; 1 1 1]); 
figure; 
imshow(RGB); 

而且結果應該是(高達BW隨機性):
enter image description here

+0

嗨,當我運行你的代碼時,它給了我一個白色的圖像。 – ffttyy

+0

I = imread('1.jpg'); Ig = rgb2gray(I); BW = im2bw(1g,85/255); RGB = ind2rgb(uint8(BW)+ 1,[100,10,50; 111]); imshow(RGB); – ffttyy

+0

@sigara'r'' g'和'b'的值應該在** [0..1]範圍內爲** double **,在範圍爲[[0..255]的範圍內爲** not ** uint8) '!嘗試顏色表'[100/255 10/255 50/255; 1 1 1]' – Shai

0

也許這FEX代碼可能會幫助 - Color brewer。根據您在彩色啤酒機網頁中選擇的顏色,該功能將在MATLAB中顯示。您所要做的就是使用這些數字來表示單個像素。

相關問題