0

嗨,我是一名 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 行有一个错误。谁能告诉我我有什么样的错误?我在正确的轨道上吗?*

4

1 回答 1

0

一些评论:

  • 您正在覆盖您的输入参数percent_noisein_image
  • rand(0:100)在 0 到 1 的范围内为您提供 100 个随机值。您可能不需要所有这些。
  • 您正在尝试使用{}而不是()第 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功能。

于 2013-04-07T20:25:29.367 回答