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

12 ビュー (過去 30 日間)
Krish Desai
Krish Desai 2015 年 10 月 9 日
コメント済み: Image Analyst 2019 年 9 月 18 日
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?
  1 件のコメント
Walter Roberson
Walter Roberson 2015 年 10 月 9 日
The distribution of random value you add to the pixel is important.

サインインしてコメントする。

採用された回答

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;
  1 件のコメント
Image Analyst
Image Analyst 2019 年 9 月 18 日
How is that different than my code? It looks identical.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeImages についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by