Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

imnoise

イメージにノイズを付加

説明

J = imnoise(I,'gaussian') は、グレースケール イメージ I にゼロ平均、分散 0.01 のホワイト ガウス ノイズを加えます。

J = imnoise(I,'gaussian',m) は平均 m と分散 0.01 を持つホワイト ガウス ノイズを加えます。

J = imnoise(I,'gaussian',m,var_gauss) は平均 m と分散 var_gauss を持つホワイト ガウス ノイズを加えます。

J = imnoise(I,'localvar',var_local) はゼロ平均、局所分散 var_local を持つホワイト ガウス ノイズを加えます。

J = imnoise(I,'localvar',intensity_map,var_local) はゼロ平均のホワイト ガウス ノイズを加えます。ノイズの局所分散 var_local は、I 内のイメージ強度値の関数です。イメージ強度値のノイズ分散へのマッピングは、ベクトル intensity_map によって指定されます。

J = imnoise(I,'poisson') は、データに人工的なノイズを追加する代わりに、データからポアソン ノイズを作成します。詳細については、アルゴリズムを参照してください。

J = imnoise(I,'salt & pepper') は、既定のノイズ密度 0.05 のごま塩ノイズを追加します。これは、約 5% のピクセルに影響を与えます。

J = imnoise(I,'salt & pepper',d) は、ごま塩ノイズを追加します。ここで、d はノイズ密度です。これは、約 d*numel(I) 個のピクセルに影響を与えます。

J = imnoise(I,'speckle') は乗法性ノイズを追加します。ここでは、式 J = I+n*I を使います。ただし、n は、平均が 0、分散が 0.05 の一様分布のランダム ノイズです。

J = imnoise(I,'speckle',var_speckle) は乗法性ノイズに分散 var_speckle を追加します。

すべて折りたたむ

グレースケール イメージを読み取り、それを表示します。

I = imread('eight.tif');
imshow(I)

Figure contains an axes object. The axes object contains an object of type image.

イメージにノイズ密度 0.02 のごま塩ノイズを追加します。結果を表示します。

J = imnoise(I,'salt & pepper',0.02);
imshow(J)

Figure contains an axes object. The axes object contains an object of type image.

入力引数

すべて折りたたむ

グレースケール イメージ。任意の次元の数値配列として指定します。

imnoise では、データ型 double および single のピクセル値が [0, 1] の範囲内にあると想定しています。関数 rescale を使用して、想定される範囲にピクセル値を調整できます。イメージが、[0,1] の範囲外の値をもつ double 型または single 型の場合、imnoise は、ノイズを追加する前に入力ピクセル値を [0, 1] の範囲にクリッピングします。

メモ

ポアソン ノイズでは、imnoise はデータ型 int16 のイメージをサポートしていません。

データ型: single | double | int16 | uint8 | uint16

ガウス ノイズの平均。数値スカラーとして指定します。

ガウス ノイズの分散。数値スカラーとして指定します。

ガウス ノイズの局所分散。以下のいずれかとして指定します。

  • I と同じサイズの数値行列。

  • intensity_map と同じ長さの数値ベクトル。

ガウス ノイズ分散にマップされる強度値。数値ベクトルとして指定します。値は、[0, 1] の範囲に正規化されます。

コマンド plot(intensity_map,var_local) を使用して、ノイズ分散 var_local とイメージ強度の関数関係をプロットできます。

ごま塩ノイズのノイズ密度。数値スカラーとして指定します。ノイズは、約 d*numel(I) 個のピクセルに適用されます。

乗法性ノイズの分散。数値スカラーとして指定します。

出力引数

すべて折りたたむ

ノイズを含むイメージ。入力イメージ I と同じデータ型の数値行列として返されます。データ型 double または single のイメージの場合、関数 imnoise は、ノイズを追加した後に出力ピクセル値を [0, 1] の範囲にクリッピングします。

アルゴリズム

  • 'gaussian''localvar''speckle' のノイズ タイプに対する平均と分散パラメーターは、常に、イメージが [0, 1] の範囲の double クラスであるものとして指定されます。入力イメージが異なるクラスの場合に、関数 imnoise は、イメージを double になるよう変換し、指定されたタイプとパラメーターによってノイズを追加します。さらに、ピクセル値を [0, 1] の範囲にクリッピングし、ノイズを付加されたイメージを入力と同じクラスに再変換します。

  • ポアソン分布は、入力イメージ I のデータ型によって次のように異なります。

    • I が倍精度の場合、入力ピクセル値は 1e12 でスケーリングされたポアソン分布の平均として解釈されます。たとえば、入力ピクセルが 5.5e-12 の値を持つ場合、対応する出力ピクセルは 5.5 の平均を持つポアソン分布から生成され、1e12 でスケール ダウンします。

    • I が単精度の場合、倍率は 1e6 を使用します。

    • Iuint8 または uint16 の場合、入力のピクセル値は、スケーリングなしで直接使用されます。たとえば、uint8 の入力のピクセルが 10 の値をもつ場合、対応する出力ピクセルは、平均 10 のポアソン分布から生成されます。

  • 'salt & pepper' ノイズを密度 d でイメージに追加するために、imnoise は、最初に開区間 (0, 1) の標準一様分布からランダムな確率値を各ピクセルに割り当てます。

    • 確率値が (0, d/2) の範囲のピクセルの場合、ピクセル値は 0 に設定されます。0 に設定されるピクセルの数は、約 d*numel(I)/2 個です。

    • 確率値が [d/2, d) の範囲のピクセルの場合、ピクセル値はイメージ データ型の最大値に設定されます。最大値に設定されるピクセルの数は、約 d*numel(I)/2 個です。

    • 確率値が [d, 1) の範囲のピクセルの場合、ピクセル値は変更されません。

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する

参考

|