Multivariate gaussian probability errors

1 view (last 30 days)
Sri
Sri on 17 Oct 2016
I am using multivariate Gaussian model to identify a yellow ball. I am given some training images with yellow balls. I have used these pixels to get the parameters of the model.
But when I am observing the probability values of the image with this model, I get the values of very low order (10^-8) and strangely I am finding the probability of foreground is lower than the background.
The code to get parameters are
mu = sum(Samples(:,:))/N;
Samples = double(Samples);
mu1 = repmat(mu, N, 1);
Sigma = ((Samples-mu1)'*(Samples-mu1))/N;
where Samples is N*3 matrix with RGB values. Using the following code, I am trying to get probability values
clc
clear al
close all
imagepath = './train';
D = 3;
load('parameters.mat', 'mu');
load('parameters.mat', 'Sigma');
dSigma = det(Sigma);
const = 1/(((2*pi)^(D/2))*((dSigma)^(1/2)));
thre = 1e-8;
for k=1:1
samples = [];
% Load image
I = imread(sprintf('%s/%03d.png',imagepath,k));
% You may consider other color space than RGB
R = I(:,:,1);
G = I(:,:,2);
B = I(:,:,3);
R = R(:);
B = B(:);
G = G(:);
samples = [samples; [R G B]];
samples = double(samples);
m = length(R);
p = zeros(m, 1);
for i = 1:m
p(i) = const*exp(-0.5*(samples(i)-mu)*pinv(Sigma)*(samples(i)-mu)');
end
end
I have attached parameters.mat and an image file. Could someone let me know, where I am going wrong

Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!