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 行目の代わりに使用して行列にインデックスを付けようとしています()。これは機能しません。
  • 「画像のコンテンツの割合」の意味を定義する必要があります。各ピクセルで?最大で言えば?

画像にランダム ノイズを追加する 1 つの方法を次に示します。

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 に答える