パストレースでテントフィルターを使用する理由


12

99行のCパストレーサーSmallptは、レンダリングするピクセルごとに2x2サブピクセルグリッドをレンダリングし、次にテントフィルターを実行してそれらを結合します。

ここでコードを説明する興味深いプレゼンテーションがあり、テントフィルターに言及していますが、なぜ存在するのかは説明していません。

この場合、ボックスブラー(単なるサンプルの平均化)よりもテントフィルターの方が望ましい理由を誰でも説明できますか?

バイキュービックエルミート補間など、テントフィルターよりも優れたものを使用する方が高品質でしょうか?

回答:


13

離散的にサンプリングされたデータの理論上の理想的なアンチエイリアシングフィルターはsincフィルターです。これは、ナイキスト周波数よりも高いすべての周波数を完全に削除し、低い周波数はすべて残します。そのため、ある程度、sincフィルターにより似たアンチエイリアスフィルターが期待でき、より高品質の画像が生成されます。

テントフィルター(三角形フィルター)は、ボックスフィルターよりも確かにsincフィルターの中心ピークによく似ています。

sinc、三角形、およびボックスフィルター

バイキュービックフィルター(Mitchell-Netravaliなど)を使用すると、最初の2つの負ローブを含め、sincの形状をより正確にキャプチャできます。

フィルター選択の現実は、「可能な限り近似」よりも少し微妙です。これは、エイリアシング、オーバーブラー、リンギングなどの「理想的でない」アンチエイリアシングフィルターによって生成されるさまざまな種類のアーティファクトがあるためです。また、異なるフィルターは、多少なりとも計算コストが高くなります。したがって、異なるアーティファクトを相互に、そしてパフォーマンスに対してトレードオフしようとするゲームです。異なるシーン/画像は、いずれかの選択を好むかもしれません、そして、それは部分的に審美的な判断でもあります。

smallptが特にテントフィルターを使用する理由については、パフォーマンス(評価するための簡単なフィルター)と簡潔さの組み合わせを推測します。数行のコードで実行できますが、バイキュービックフィルターはさらに多くを必要としますコード。

ちなみに、smallptは実際には2x2サブピクセルグリッドを使用し、各サブピクセルにテントフィルターを配置し、4つのサブピクセルの結果を平均します。不思議なことに、全体的な効果は4つのテントの合計の効果であり、最終的には平らな上部のピラミッドのように見えます。

サブピクセルテントフィルター

これが意図的なものなのか、それともたまたまうまくいったのかがわかりません。私の推測では、これはピクセルごとに1つのテントフィルターを使用した場合よりもややシャープな画像になります(サポートが狭くなったため)が、おそらくよりエイリアスが見えやすくなります。


感謝を言わざるを得ません!実際、私はこれを4つの階層を持つ層別サンプリングとして最初に理解します。そして、9、16のように「層」の数をカスタマイズ可能にします。今では、「台形」フィルター(他のレンダラーではあまり一般的ではない)であることがわかります。そして、私の「層」の数は無限になる傾向があるので、フィルターはボックスフィルターになり、そこでユリを塗ります...面白い!
chaosink

3

双線形補間についてのウィキペディアの記事を見ました。テントフィルターは、バイリニア補間の一種です。バイリニア補間は、2次元で補間します。最初に1つの次元で線形補間し、次に他の次元で補間します。

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

この写真を見ると、最初に列で、次に行でそれを実行します。

これが色の平均化よりも優れている理由は、ポイントの1つが別のポイントよりも中心に近づくと、最終的な色により貢献するためです。色を平均すると、1つのポイントが別のポイントよりも中心に近い場合でも、すべてのポイントが等しく貢献します。

4つのポイントすべてが中心から等しい距離の固定位置にある場合、すべてのポイントで正確に25%の寄与が得られます。これは平均化と同じです。

これは、4倍高い解像度でレンダリングしてアンチエイリアスを実装し、それをダウンサンプリングすることを意味します。私が理解している限り、2つの方法間の出力は同じである必要があります。

それで、どのフィルターを使うべきですか?まあ、それはあなたが望むものとあなたの状況に依存します。サンプルにランダムなサブピクセルの場所を選択する場合は、双一次補間を使用することをお勧めします。すべてのポイントが固定されていて、より高い解像度でレンダリングする場合は、平均化が便利です。結局のところ、これはすべて通常は気付かないかほとんど気づかないサブピクセルの事柄であるため、AAがある場合はそれで十分です。しかし、それは私の意見であり、おそらく3Dアニメーションの平均的な視聴者のようなものです。

バイキュービック補間により、より滑らかな外観が得られます。バイキュービック: ここに画像の説明を入力してください

バイリニア: ここに画像の説明を入力してください

どちらが良いですか?まあ、それはあなたが好きなものに依存し、私は大きな違いがあるとは思わない。

私の情報源:https : //en.wikipedia.org/wiki/Reconstruction_filter#Image_processing

https://en.wikipedia.org/wiki/Bilinear_interpolation

https://en.wikipedia.org/wiki/Bicubic_interpolation

(画像はウィキペディアからのものであり、パブリックドメインです)

これがお役に立てば幸いです。私はこれについては専門家ではなく、コンピューターグラフィックスが好きな人だと言いたいです。間違いを犯した可能性があります。もしそうなら、ちょうどそれを言うと私はそれを変更します!

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