0

JavaでBufferedImageにノイズを追加しようとしていますが、Javaやその他の言語固有の実装ではなく、画像にノイズを追加するために使用されるアルゴリズムに興味があります。

Webを検索してガウスノイズについて調べましたが、チュートリアル/記事には、あまり役に立たないコードサンプルのみが表示されているか、複雑な数学的説明が示されています。

4

1 に答える 1

1

あなたの質問が何であるかは明確ではありませんが、役立つ場合に備えて、いくつかのランダムな観察結果を以下に示します。

  • 画像が比較的未処理の場合 (サイズが調整されていない場合)、各ピクセルのノイズはほぼ独立しています。したがって、各ピクセルを順番にループし、新しいノイズ値を計算して追加することで、それをシミュレートできます。

  • 画像が処理された場合でも、上記のアプローチは多くの場合、合理的な近似値です。

  • 画像のノイズの量は、多くの要因に依存します。デジタル センサーによって生成される典型的な画像の一般的な近似値は、各ピクセルのノイズがほぼ同じであるというものです。つまり、標準偏差 (SD) を選択し、上記のループで、その SD を使用してガウス分布から値を選択します。

  • 天体画像 (およびその他の低ノイズ電子画像) の場合、SD がピクセルの明るさの平方根に比例するノイズ成分があります。

おそらくあなたがやりたいことは次のとおりです。

  • SD を選択します (画像のノイズをどの程度にするか)

  • ループ内で、各ピクセルに対して:

    • 指定された SD (およびゼロの平均) を使用してガウス分布から乱数を生成し、それをピクセルに追加します (グレースケール イメージを想定)。カラー画像の場合、3 つの値を生成し、それぞれ赤、緑、青に追加します。

更新暗視は天体画像のようなものになると思います。その場合、明るさの平方根に依存する定数と何かが含まれるように、各ピクセルの SD を変更してみてください。たとえば、ピクセルに明るさがある場合は、SD としてb使用できます。100 + 10 * sqrt(b)値をいじる必要がありますが、それはより現実的に見えるかもしれません。

于 2012-07-08T12:51:41.103 に答える