# Adding noise into an image manually instead of using imnoise

217 views (last 30 days)

Show older comments

I am to trying to understand the algorithms behind matlab way of adding noise into an image,

The algorithm which Matlab use to add Gaussian noise is this,

b = a + sqrt(p4)*randn(sizeA) + p3;

When I tried to implement this algorithm manually it worked successfully however it doesn't work unless i changed the image class to double. Why is that so ? Why should i suppose to change the class to double when adding gaussian noise ?

Here is my code,

I = imread('2.jpg');

J = rgb2gray(I);

p3= 0;

p4 = 0.05;

J = im2double(J);

b = J + sqrt(p4)*randn(size(J)) + p3;

imshow(b)

Just like Gaussian Noise i tried adding the Salt n Pepper noise manually, here is the algorithm Matlab use to add Salt n Pepper noise,

b = a; <-- Assign b to the input image

x = rand(sizeA); <--- Generate random pixels from the image pixels

d = find(x < p3/2); <--- Find the pixels whose values are less than half of the mean value

b(d) = 0 <-- Implement minimum saturation to them

d = find(x >= p3/2 & x < p3) <--- Find the pixels whose values are greater than half of the mean value & less than mean value

b(d) = 1; <-- Implement maximum saturation to them

and I implemented it as below,

I = imread('2.jpg');

J = rgb2gray(I);

p3= 0.5;

x = rand(size(J));

d = find(x < p3/2);

J(d) = 0; % Minimum value

d = find(x >= p3/2 & x < p3);

J(d) = 1; % Maximum (saturated) value

imshow(J)

but the output Image doesn't show any Salt n pepper noise in the Image , I wonder where the final image is actually stored in my code?

##### 2 Comments

sravani honey
on 20 Apr 2018

### Accepted Answer

Walter Roberson
on 30 Aug 2012

Images read by imread() are often data class uint8(). The uint8() property will be retained in the rgb2gray() step. Your saturation assignments of 0 and 1 are, however, based upon the notion that the minimum and maximum are 0 and 1 instead of 0 and 255.

Also, the minimum value that a uint8 variable can be is 0, so there is no need to explicitly set 0 as the minimum.

### More Answers (2)

Image Analyst
on 31 Aug 2012

##### 3 Comments

Ameerah Omar
on 21 Nov 2015

how i can add noise in image it come from Cauchy distribution???

##### 1 Comment

Image Analyst
on 21 Nov 2015

### See Also

### Products

### Community Treasure Hunt

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

Start Hunting!