根据一定量添加噪声到图像

时间:2013-04-07 15:32:54

标签: image matlab noise

您好我是Matlab初学者,我想通过添加一定量的随机噪声数据来询问有关降级图像文件的帮助。

噪声的百分比将在0-100的范围内,表明输出将如何:

0将不会修改, 25表示图像内容的75%和噪声的25%, 75表示图像内容的25%和75%的噪点, 100表示​​输出应与图像内容的大小相同,但包含所有随机噪声而不包含原始图像数据。

以下是我的代码:

function out_image = image_plus_noise( in_image, percent_noise )
in_image = imread('sample_image.png');
image_proportion = 0.25;
percent_noise = rand(0:100);
my_percent_noise = uint8(percent_noise);
out_image = in_image{in_image}*image_proportion + percent_noise{my_percent_noise}*(1-image_proportion);
imshow(out_image)

但是我无法正常运行,第6行有一个错误。 谁能告诉我我有什么样的错误? 我是在正确的轨道上吗?*

1 个答案:

答案 0 :(得分:0)

一对评论:

  • 您正在覆盖输入参数percent_noisein_image
  • rand(0:100)为您提供100个随机值,每个值的范围为0到1.您可能不需要所有这些值。
  • 您尝试在第6行使用{}而不是()来索引矩阵。这不起作用。
  • 您需要通过“图片内容的百分比”来定义您的意思。在每个像素?就最大值而言?

这是向图像添加一些随机噪声的一种方法:

scaledImage = in_image * (1-percent_noise / 100); %scale image so
                                              %its maximum
                                              %value is some
                                              %percentage of
                                              %the original 
maxOfImage = max(in_image(:));
noiseImage = (percent_noise/100) * maxOfImage * rand(size(in_image)); %create noise
                                                      %image
                                                      %relative to
                                                      %the maximum
                                                      %of the
                                                      %original image
out_image = scaledImage + noiseImage; %add noise to original image. 

如果您有权访问通讯工具箱,则可以使用awgn功能。