私はしばらく自分のレンダラーに取り組んでいますが、収束するまで長時間待つ以外に、レンダリングされた画像からモンテカルロノイズを削除する方法はあるのでしょうか。
私が見つけた方法は、画像の品質/シャープネスを大幅に低下させるため、画像をぼかすことですが、これはあまり役に立ちません。さらに、サンプル数の多い小さな画像をレンダリングしてから拡大することで、同じことを実現できます。
パストレースで画像のノイズに対処するために設計されたアルゴリズムはありますか?
私はしばらく自分のレンダラーに取り組んでいますが、収束するまで長時間待つ以外に、レンダリングされた画像からモンテカルロノイズを削除する方法はあるのでしょうか。
私が見つけた方法は、画像の品質/シャープネスを大幅に低下させるため、画像をぼかすことですが、これはあまり役に立ちません。さらに、サンプル数の多い小さな画像をレンダリングしてから拡大することで、同じことを実現できます。
パストレースで画像のノイズに対処するために設計されたアルゴリズムはありますか?
回答:
あります。他の回答の詳細を確認することを楽しみにしていますが、これに対処する1つの方法は、元のソースデータにノイズ(または同じくらい多くのノイズ)を含めないことです。
ノイズは、レンダリングに大きな変動があるという事実から来ています-取得したサンプルの数は、積分の実際の正しい答えに十分に収束していないため、一部のピクセルが高すぎる/明るい低すぎる/薄暗い(各カラーチャネルで)。
問題は次のとおりです。サンプリングにホワイトノイズ乱数を使用すると、下の画像のようにサンプルがまとまってしまう場合があります。十分なサンプルがあれば収束しますが、サンプリングスペース全体に十分なカバレッジが得られるまでには時間がかかります。下の画像(右下など)で空の領域を見つけて、そこに小さな明るい光があり、シーンが他のどこでも暗いと想像してください。サンプルがないとレンダリングで問題が発生することがわかります。
あるいは、以下のように等間隔でサンプリングすることもできますが、ノイズの代わりにエイリアシングアーティファクトが発生します。
1つのアイデアは、矛盾の少ないシーケンスを使用して、準モンテカルロ統合を行うことです(https://en.wikipedia.org/wiki/Quasi-Monte_Carlo_method)。低不一致シーケンスは、高周波成分のみを持つブルーノイズに関連しています。これらのルートを進むと、ではなく収束が速くなります。これらにより、サンプル空間のカバレッジが向上しますが、ランダム性(または品質のようなランダム性)があるため、定期的に間隔をあけたサンプリングのようなエイリアシングの問題はありません。
これはグリッドでサンプリングする「ジッターグリッド」ですが、セルサイズ内で小さなランダムオフセットを使用します。これはpixarによって発明され、しばらくの間特許を取得していましたが、現在はそうではありません。
以下は、Haltonシーケンスと呼ばれる一般的な低差異シーケンスです(基本的にはヴァンデルコーパスの2Dバージョン)。
そして、ミッチェルの最良の候補アルゴリズムを使用したポアソンディスクサンプリングを以下に示します。
これらの画像を生成したソースコードを含む詳細情報は、https://blog.demofox.org/2017/05/29/when-random-numbers-are-too-random-low-discrepancy-sequences/にあります。