2016-09-11 20 views
0

私には160x64x3の画像があります。この画像には灰色の点や他の色があります。MATLAB:RGBから白黒画像へ

私が何をしたか

Image

は以下の通りですが、私はそれが理由かもしれ一定ではないと思います。私が欲しいのは、画像が下にある1

に0と他の部分にグレーの部分を変換することです赤、緑、青のすべてで同じ点がいくつかあります。これには特別な機能はありますか?

~((image(:,:,1)==image(:,:,2))&(image(:,:,1)==image(:,:,3))&(image(:,:,2)==image(:,:,3))) 
+0

は、あなただけのグレー色の輝度値を見つけると、0と1の残りの部分にそれを設定することができませんか? – roni

+0

確かに、彩度(灰色のピクセルではゼロになります)をゼロにして、グレーでないものをすべて白にします。 –

答えて

2

私は特別な機能を知らないが、溶液は非常に簡単である:上記溶液に

I = imread('sLUp2.png'); %Read source image. 

%Initialize all destination pixels to 1 
J = ones(size(I,1), size(I,2)); 

%Set to zero pixels which are gray in I (where Red==Green and Red==Blue). 
J((I(:,:,1) == I(:,:,2)) & (I(:,:,1) == I(:,:,3))) = 0; 

R = G = Bとすべてのソースグレースケール画素は、グレーであると考えられます。黒画素:例えば
(0,0,0)、白画素(255,255,255)と(X、X、X)グレーと考えられている...


あなただけ検索したい場合は単一の共通のグレーレベル(すべてではない「グレースケール」ピクセル)は、次のように(何かを)行うことができます:あなたのイメージで

R = I(:, :, 1); %Red color plane. 
Gray = R((I(:,:,1) == I(:,:,2)) & (I(:,:,1) == I(:,:,3))); %All values in which R=G=B. 
H = imhist(Gray, 256); %Collect histogram of Gray. 
common_gray = find(H == max(H)) - 1; %Find the most common gray value in histogram. 

%Now, set only common_gray pixels to zero in destination image J. 
J = ones(size(I,1), size(I,2)); 
J(R == common_gray) = 0; 

共通のグレーレベル(「グレーポイント」)に等しいです。

enter image description here

+0

明示的には述べられていませんが、灰色の「マスク」はわかりません。おそらく、解は正確なrgbタプルのフィルタリングと同じくらい簡単です。また、最高の解決策には、灰色の点とともに「黒色」も含まれていることを指摘しておく価値があります。例題のイメージは意図ではないようです。 –

+0

これは完璧な解決策ではありません。 http://i.stack.imgur.com/HNakC.pngを参照して、元の画像と比較してください:http://i.stack.imgur.com/LUVYL.png –

+0

@Sardar_Usamaおそらく右。私は、Toyganが意図したのは、(0,0,0)と(255,255,255)がグレーではない第2の解決策だと思います。 – Rotem

関連する問題