1

MATLAB のimnoise()関数では、ノイズのタイプが「スペックル」の場合、ドキュメンテーションには、それが乗算ノイズであることが明確に記載されており、基礎となる方程式が記載されています。

J = imnoise(I,'speckle',v) は、方程式J = I+n*I を使用してイメージ I に乗算ノイズを追加します。ここで、n は平均 0 および分散 v をもつ一様分布ランダム ノイズです。v の既定値は次のとおりです。 0.04。

ただし、ガウス オプションの場合、そのような方程式は提供されません。そして、「localvar」と呼ばれる別のタイプがあります。したがって、使用時の式imnoise(I, gaussian, mean_noise, variance_noise)

J(x,y) = I(x,y) + g(平均ノイズ, sqrt((分散ノイズ))

さらに、私の仮定:

  1. このノイズgは、画像の空間座標と相関していません
  2. このノイズgは、それらの空間座標での強度と相関していません
  3. gmean_noise平均と標準偏差のガウス分布から生成されたガウス乱数sigma = sqrt(variance_noise)

私は正しいですか?


主要な更新いくつかの混乱を解消するために、以前の回答を受け入れていません。そのため、matlab で「imnoise」のコードを確認したところ、次のようになりました

b = a + sqrt(p4)*randn(sizeA) + p3; ここで、
b - ノイズが追加された画像
a - 元の画像
p4 - 分散
p3 - 平均

randn() の範囲は? ランダムにチェックしたところ、1.85 などの 1 より大きい値が生成されました。また、 randn() のドキュメントには、範囲について何も言及されていません。これはかなり奇妙です。

4

2 に答える 2

0

関数 imnoise(I, 'ガウス', 平均, 分散) には、[0 1] の間で正規化された分散が必要です。したがって、画像のタイプが「uint8」の場合、パラメーター分散を 255² で割る必要があります。

また、分散は標準偏差シグマとは異なることに注意してください。シグマを使用する場合は、分散パラメーターとして (sigma²/255²) を入力する必要があります (分散 = sigma² であるため)。

于 2014-10-14T20:02:42.870 に答える