2016-06-20 8 views
0

です。画像上で最尤推定を行うことです。 黄色のボールがどこにあるのかを知りたいので、15枚の画像を開き、R、G、Bの値を取得し、その平均値と共分散行列を取得します。 他のテスト画像でこのパラメータを使用して、黄色のボールを取得します。 私は、私はこれを得たコーセラの代入の一部としてこれをやって何のMATLABの専門家のIAM午前、各列は、[RGB] とシグマ= 3×3 ある= 1×3ムーを意味し、このような多変量ガウス分布 の平均と分散を見つけました私に提供された、ここでのコードは `イメージ行列をnx3に変換する方法。nは#ピクセル、R、G、Bの各列の値は

imagepath = './train'; 
Samples = []; 
for k=1:15 
% Load image 
I = imread(sprintf('%s/%03d.png',imagepath,k)); 
% I = im2double(I);%edited 
% You may consider other color space than RGB 
R = I(:,:,1); 
G = I(:,:,2); 
B = I(:,:,3); 

% Collect samples 
disp(''); 
disp('INTRUCTION: Click along the boundary of the ball. Double-click when you get back to the initial point.') 
disp('INTRUCTION: You can maximize the window size of the figure for precise clicks.') 
figure(1), 
mask = roipoly(I); 
figure(2), imshow(mask); title('Mask'); 
sample_ind = find(mask > 0); 

R = R(sample_ind); 
G = G(sample_ind); 
B = B(sample_ind); 


Samples = [Samples; [R G B]]; 
disp(size(Samples)) 
disp(k) 
disp('INTRUCTION: Press any key to continue. (Ctrl+c to exit)') 
pause 
end 

このコードは私にNX3である行列を与え、私はこれからの平均と共分散行列を発見しました....これは今すぐ学習一部

です私はこの学習された平均とシグマをテスト画像に適用して多変量のガウス確率を求めて黄色のボールを見つけることができなければなりません。画像で(私の平均は、私は画像がcalcualtionを行うにはNX3にする必要が1×3の行列であるため) しかし、私は代わりに私は行列得た私にNX3行列を取得するために、同じコードに

R = I(:,:,1); 
G = I(:,:,2); 
B = I(:,:,3); 
Samples = [Samples; [R G B]]; 

を試してみました画像のサイズ...私はこれらのフォーラムを検索して読みましたが、このように考えています。 私はちょうど行列を取得する方法を知っておく必要があり、その後、私は

+0

色で分類したい場合は、HSV色空間を使いやすくします。 –

+0

はい、それは働いた...ありがとう –

+0

私のasnwerを受け入れることを検討;) –

答えて

1

あなたの問題は、あなたがあなたの変数をアンロールされていないことです。

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

は、R、G、およびBチャネルを抽出しますが、それでもNxMサイズです。あなたは彼らがコロン演算子を使用して「アンロール」へのWAN:セグメント色にも

Samples = [Samples; [R(:) G(:) B(:)]]; 

、最高の色空間は、HSV、RGBではないです。

0

を行うことができますreshapeコマンドを試してみてください。

[x,y,k] = size(I); % k will be 3 for an RGB-image 
    I_reshaped = reshape(I, x*y, k); 

    R = I_reshaped(:,1); 
    G = I_reshaped(:,2); 
    B = I_reshaped(:,3); 
関連する問題