MATLAB Answers

Normal distribution

14 views (last 30 days)
Jaanu
Jaanu on 2 Nov 2011
Hi, i need to calculate the normal distribution value for an image. for that,i used the following coding,
I=imread('image1.jpg');
K = double(I(:));
mu=mean(K);
sigma=std2(K);
P=normpdf(K, mu, sigma);
Z = norminv(P,mu,sigma);
when i use some images it is giving the values. but sometimes it is giving like 'NaN'.I don't know how to solve this problem. Please help me.

  0 Comments

Sign in to comment.

Answers (2)

Christopher Kanan
Christopher Kanan on 2 Nov 2011
Instead of casting the image as a zero, you might consider using im2double. Otherwise your image values may be very large causing a floating point problem.
You should check to see if any non-finite values ( see isfinite) are present in mu, sigma, P, or just Z. Since you are treating K as a vector, you could use std instead of std2 as well.
I=im2double(imread('image1.jpg'));
K = I(:);
mu=mean(K);
sigma=std(K);
P=normpdf(K, mu, sigma);
Z = norminv(P,mu,sigma);

  1 Comment

Jaanu
Jaanu on 10 Jun 2012
still i am getting NaN value. could you please suggest any other solution.

Sign in to comment.


Walter Roberson
Walter Roberson on 2 Nov 2011
Check to see whether the images that work (or do not work) are all RGB images and the others grayscale ?
Also, check to see if sigma is perhaps coming out 0.
Note: You might as well use std(K) instead of std2(K) as std2(K) is just std(K(:)) but K is already a column vector in your code.

  1 Comment

Jaanu
Jaanu on 10 Jun 2012
sometimes, why is mean value giving zero? even if i apply your hint too?

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!

Translated by