パストレースから高周波ノイズを除去するアルゴリズム


8

私はしばらく自分のレンダラーに取り組んでいますが、収束するまで長時間待つ以外に、レンダリングされた画像からモンテカルロノイズを削除する方法はあるのでしょうか。

私が見つけた方法は、画像の品質/シャープネスを大幅に低下させるため、画像をぼかすことですが、これはあまり役に立ちません。さらに、サンプル数の多い小さな画像をレンダリングしてから拡大することで、同じことを実現できます。

パストレースで画像のノイズに対処するために設計されたアルゴリズムはありますか?


ノイズを隠すための後処理にもっと興味がありますか、それともノイズが少なくなるように収束を高速化する方法ですか?
trichoplax

1
FWIW、Benedictt Bitterliは最近 、彼のノイズ除去ペーパーに基づいて、次のtwitter.com/tunabrain/status/872174108385136640をリリースしました。
Simon F

エリアを後処理では、バイラテラルフィルタと呼ばれる素敵なアルゴリズムがありshadertoy.com/view/4dfGDH
ナルテックス

回答:


6

あります。他の回答の詳細を確認することを楽しみにしていますが、これに対処する1つの方法は、元のソースデータにノイズ(または同じくらい多くのノイズ)を含めないことです。

ノイズは、レンダリングに大きな変動があるという事実から来ています-取得したサンプルの数は、積分の実際の正しい答えに十分に収束していないため、一部のピクセルが高すぎる/明るい低すぎる/薄暗い(各カラーチャネルで)。

問題は次のとおりです。サンプリングにホワイトノイズ乱数を使用すると、下の画像のようにサンプルがまとまってしまう場合があります。十分なサンプルがあれば収束しますが、サンプリングスペース全体に十分なカバレッジが得られるまでには時間がかかります。下の画像(右下など)で空の領域を見つけて、そこに小さな明るい光があり、シーンが他のどこでも暗いと想像してください。サンプルがないとレンダリングで問題が発生することがわかります。

ここに画像の説明を入力してください

あるいは、以下のように等間隔でサンプリングすることもできますが、ノイズの代わりにエイリアシングアーティファクトが発生します。

ここに画像の説明を入力してください

1つのアイデアは、矛盾の少ないシーケンスを使用して、準モンテカルロ統合を行うことです(https://en.wikipedia.org/wiki/Quasi-Monte_Carlo_method)。低不一致シーケンスは、高周波成分のみを持つブルーノイズに関連しています。これらのルートを進むと、ではなく収束が速くなります。これらにより、サンプル空間のカバレッジが向上しますが、ランダム性(または品質のようなランダム性)があるため、定期的に間隔をあけたサンプリングのようなエイリアシングの問題はありません。O(1/N)O(N)

これはグリッドでサンプリングする「ジッターグリッド」ですが、セルサイズ内で小さなランダムオフセットを使用します。これはpixarによって発明され、しばらくの間特許を取得していましたが、現在はそうではありません。 ここに画像の説明を入力してください

以下は、Haltonシーケンスと呼ばれる一般的な低差異シーケンスです(基本的にはヴァンデルコーパスの2Dバージョン)。

ここに画像の説明を入力してください

そして、ミッチェルの最良の候補アルゴリズムを使用したポアソンディスクサンプリングを以下に示します。ここに画像の説明を入力してください

これらの画像を生成したソースコードを含む詳細情報は、https//blog.demofox.org/2017/05/29/when-random-numbers-are-too-random-low-discrepancy-sequences/にあります。


3

使用できる手法の1つは、画像をブロックに分割し、各ブロックの分散を測定することです。これにより、分散の大きいブロックに多くのサンプルを適用できます。

分散は、1の代わりに2つの累積バッファーを使用して推定できます。各パスを代替バッファーにレンダリングします。これらのバッファ間の絶対差(各ブロックに関して)は、分散に比例します。画面に表示されたら、2つのバッファーを一緒に追加して、蓄積バッファーを完全に戻すことができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.