Image Processing Noise differences

5 次查看(过去 30 天)
Hi,
Suppose I want to add white gaussian noise to an image. I propose to do by following means :-
a) imnoise(I,'gaussian',0,0.25);
b) I = awgn(I,var(I(:))/0.25);
c) I = I + 0.25*randn(size(I));
Here I is a certain image.
What is difference between using the above statements ??

采纳的回答

Wayne King
Wayne King 2011-12-19
J = imnoise(I,'gaussian',0,0.25);
J = I+0.5*randn(size(I));
For awgn(), your function syntax assumes the power of the input is 0 dBW, so you would need to do.
denom = -(var(I(:))/(10*log10(0.25)));
I = awgn(I,var(I(:))/denom);

更多回答(2 个)

Wayne King
Wayne King 2011-12-19
Hi, in
I = I +0.25*randn(size(t));
you get noise with a standard deviation of 0.25, not variance. If you want noise with a variance of 0.25, then you must do
I = I +0.5*randn(size(t));
that would be equivalent to:
imnoise(I,'gaussian',0,0.25);
The variance of a constant times a random variable is the constant squared times the variance of the random variable.
Finally, the actual variance of the additive Gaussian noise in:
I = awgn(I,var(I(:))/0.25);
depends on I, so it's not clear that you are really getting a variance of 0.25. For example:
I = randn(256,256);
Because var(I(:)) = 1.0551 (in this particular example)
Your call of
I = awgn(I,var(I(:))/0.25);
results in an additive WGN process with variance:
10^(-4.2203/10) = 0.3784
which is greater than you think.
  1 个评论
UJJWAL
UJJWAL 2011-12-19
移动:DGM 2023-2-20
Ok . So suppose the problem is to add a noise with a variance of 0.25 and mean of 0 and the noise is gaussian and additive.
What are the equivalent statements using imnoise, awgn and the first one to introduce such a noise ??

请先登录,再进行评论。


Shaveta Arora
Shaveta Arora 2016-2-24
How to add gaussian noise of variance 10 by both methods?
  1 个评论
Image Analyst
Image Analyst 2016-2-24
Hint from the help:
Create a vector of 1000 random values drawn from a normal distribution with a mean of 500 and a standard deviation of 5.
a = 5;
b = 500;
y = a.*randn(1000,1) + b;
For you, a would be sqrt(10) and b would be 0, so
[rows, columns] = size(grayImage);
noisyArray = sqrt(10)*randn(rows, columns);
output = double(grayImage) + noisyArray;

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Image Processing Toolbox 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by