Variance and mean isn't calculated properly
조회 수: 1 (최근 30일)
이전 댓글 표시
Hello Everyone,
I am trying to calculate variance and mean of gaussian noise by adding it to uniform image using imnoise function as
image = rgb2gray(im2double(imread('flat_400.jpg')));
image(:,:) = 0.5;
noisy_image = imnoise(image,'gaussian',0,0.8);
and then am trying to calculate mean and variance using
mean_image = sum(sum(noisy_image))/(size(noisy_image,1)*size(noisy_image,2))
variance = sum(sum((noisy_image - mean_image).^2))/((size(noisy_image,1)*size(noisy_image,2)) - 1)
but the variance and mean are far from the added noise. Can anyone please tell me what's the reason of it?
댓글 수: 0
답변 (2개)
Iman Ansari
2013년 4월 23일
편집: Iman Ansari
2013년 4월 23일
Hi. Your noise is very large and the output image must be between 0 and 1, so the values greater than 1 became 1 and values less than 0 became zero.
Gaussian noise can be defined:
Mean=0;
Variance=0.8;
Noise=Mean+sqrt(Variance).*randn([256 256]);
mean(Noise(:))
var(Noise(:))
댓글 수: 0
Sajid Khan
2013년 4월 23일
댓글 수: 2
Jan
2013년 4월 23일
편집: Jan
2013년 4월 23일
Please post comments in the comment section. Otherwise the connection top the realted message will get lost soon.
Even with a variance of 0.2 the saturation at 0.0 and 1.0 will matter. To narrow the problem down, please try this:
mean_image = mean(noisy_image(:));
var_image = var(noisy_image(:));
Iman Ansari
2013년 4월 23일
편집: Iman Ansari
2013년 4월 23일
imnoise default variance is 0.01. For this value, the output noise would be became between
[mean-3*sqrt(0.01) mean-3*sqrt(0.01)]
or
[mean-0.3 mean+0.3].
but for 0.2 ====> [mean-1.3416 mean+1.3416]
참고 항목
카테고리
Help Center 및 File Exchange에서 Read, Write, and Modify Image에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!