Write a function to add random noise to an image in matlab

11 次查看(过去 30 天)
How do I create a function to add random noise without using imnoise? I am trying to figure out how to do it without using the built-in matlab functions. I know I have to add a random integer to every pixel...
function output=randomnoise(current_img)
for current_img(n)
current_img(n)=current_img(n)+ randi([-255 255],1)
n=n+1
end
This is what I am coming up with right now, but I don't think my loop is visiting each value. How do I visit each pixel and how do I add random noise to it?

采纳的回答

Image Analyst
Image Analyst 2015-10-10
Try this:
function output=randomnoise(current_img)
% Cast to double;
current_img = double(current_img);
[rows, columns] = size(current_img)
for col = 1 : columns
for row = 1 : rows
output(row, col) = current_img(row, col)+ randi([-255 255],1)
end
end
Or you could do away the the two loops and just vectorize it
noise = randi([-255, 255], rows, columns);
output = current_img + noise;

更多回答(2 个)

Walter Roberson
Walter Roberson 2015-10-9

Arifaa A
Arifaa A 2019-9-18
function output=randomnoise(current_img)
% Cast to double;
current_img = double(current_img);
[rows, columns] = size(current_img)
for col = 1 : columns
for row = 1 : rows
output(row, col) = current_img(row, col)+ randi([-255 255],1)
end
end
noise = randi([-255, 255], rows, columns);
output = current_img + noise;

Community Treasure Hunt

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

Start Hunting!

Translated by