2017-02-26 3 views

答えて

2

これは画像上のビットと、ピクセルが緑色であるかどうかを判断する基準に依存します。ピクセルは緑のみですが、青または赤はありませんか?もしそうなら、ここに一つの方法があります。画像をロードし、色を分離することにより、

スタート:

image = imread('your_image.jpg'); 
red = image(:,:,1); 
green = image(:,:,2); 
blue = image(:,:,3); 

その後、赤や青、緑ではなく、持っているピクセルを見つける:あなたは緑の異なる定義を持っている場合は

only_green = green & ~(red | blue) 

をこの2番目のステップを適宜変更することができます。

結果の行列を画像として表示するには、imshowを使用します。物事をより面白くすることについては

1

、私は以下のソリューション提案:

  1. は、RGBからHSVへの入力画像を変換します。
  2. HSV色空間の緑色のピクセルをマークします(HSV色空間では、黄色(他の色:赤、緑、青)以外の色を選択できます)。緑を強調するために

、私は、グレースケールに他の色を設定します。ここでは

は私のコードです:

RGB = imread('peppers.png'); 
HSV = rgb2hsv(RGB); %Convert RGB to HSV. 

figure;imshow(RGB);title('Original'); 

%Convert from range [0, 1] to [0, 255] (kind of more intuitive...) 
H = HSV(:, :, 1)*255; 
S = HSV(:, :, 2)*255; 
V = HSV(:, :, 3)*255; 

%Initialize to zeros.  
Green = zeros(size(H)); 

%Needed trial and error to find the correct range of green (after Google searching). 
Green(H >= 38 & H <=160 & S >= 50 & V >= 30) = 1; %Set green pixels to 1 

figure;imshow(Green);title('Mark Green as 1'); 

%Play with it a little... 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
Gray = rgb2gray(RGB); %Convert to gray-scale 

R = RGB(:, :, 1); 
G = RGB(:, :, 2); 
B = RGB(:, :, 3); 

Green = logical(Green); 

R(~Green) = Gray(~Green); 
G(~Green) = Gray(~Green); 
B(~Green) = Gray(~Green); 

RGB = cat(3, R, G, B); 

figure;imshow(RGB);title('Green and Gray'); 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 

結果:

オリジナル画像:
enter image description here

マークグリーンを1:
enter image description here

グリーンとグレー:
enter image description here

関連する問題