Normal distribution
3 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
回答 (2 件)
Christopher Kanan
2011 年 11 月 2 日
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);
Walter Roberson
2011 年 11 月 2 日
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.
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!