15

ブッダブロフラクタルを実装しようとしています。私は1つのことを理解できません。私が調べたすべての実装は、粒子が逃げる経路を計算するために画像上のランダムなポイントを選択します。なぜ彼らはこれをするのですか?すべてのピクセルを調べてみませんか?

ランダムポイントはどのような目的に役立ちますか?より多くのポイントがより良い写真を作るので、私はすべてのピクセルを調べることが最高の写真になると思います-私はここで間違っていますか?

私のテストデータから:

400x400の画像に取り組んでいます。だから、私がすべてをやり直す場合、16万ピクセルを繰り返す必要があります。

ランダムサンプリングを使用すると、画像は100万ポイント後にのみ形になり始めます。良い結果は、計算に数時間かかる約10億のランダムなポイントを示します。

4

6 に答える 6

32

ランダムサンプリングは、2つの主な理由から、グリッドサンプリングよりも優れています。第一に、グリッドサンプリングは、結果の画像にグリッドのようなアーティファクトを導入するためです。2つ目は、グリッドサンプリングでは、収束した結果の画像に十分なサンプルが得られない可能性があるためです。グリッドパスを完了した後、より多くのサンプルが必要な場合は、(同じポイントを再サンプリングしないように)わずかにオフセットされたグリッドで別のパスを作成するか、より細かいグリッドに切り替える必要があります。これにより、必要以上の作業が行われる可能性があります。 。ランダムサンプリングは非常にスムーズな結果をもたらし、画像が収束するか、結果に満足したらすぐにプロセスを停止できます。

私はテクニックの発明者なので、あなたはこれについて私を信頼することができます。:-)

于 2009-09-30T02:07:16.840 に答える
3

同じことが火炎フラクタルにも当てはまります。ブッダブロは「アトラクタ」を見つけることを目的としているため、ランダムなポイントから始めても、これらのアトラクタ曲線に非常にすばやく収束すると想定されます。通常、反復などで最初の10ピクセルをペイントすることは避けます。したがって、開始点は実際には関係ありませんが、同じ計算を2回行うことを避けるために、ランダムサンプリングの方がはるかに優れています。前述のように、それは遺物のリスクを排除します。

しかし、ランダムサンプリングの最も重要な機能は、すべてのレベルの精度を備えていることです(少なくとも理論的には)。これはフラクタルにとって非常に重要です。フラクタルにはすべてのレベルの精度の詳細があるため、すべてのレベルからの入力も必要です。

于 2009-10-03T07:15:15.763 に答える
1

私は正確な理由が何であるかを100%認識していませんが、それは効率ともっと関係があると思います。すべてのポイントを複数回反復する場合、全体的に見栄えが良くない可能性のある画像を取得するために、多くの処理サイクルが無駄になります。ランダムサンプリングを実行することで、実行する必要のある作業量を減らすことができます。サンプルサイズが十分に大きい場合でも、(視覚的な観点から)すべてのピクセルを反復処理することから「区別」するのが難しい結果が得られます。

于 2009-09-29T14:58:33.507 に答える
0

これはおそらくある種のモンテカルロ法であるため、すべてのピクセルを調べると完璧な結果が得られますが、非常に時間がかかります。

試してみて、どうなるか見てみませんか?

于 2009-09-29T15:03:21.660 に答える
0

ランダムサンプリングは、正確な解に可能な限り近づけるために使用されます。このような場合、問題の統計的性質のために正確に計算することはできません。

「すべてのピクセルを調べる」ことはできますが、実際にはすべてのピクセルがdx * dyの寸法の正方形の領域であるため、計算にはnum_x_pixels * num_y_pixelsポイントのみを使用し、非常に粗い結果を取得します。

もう1つの方法は、非常に大きな解像度を使用し、計算後にレンダリングを縮小することです。これにより、最終的なレンダリングのすべてのピクセルが等量のサブピクセルに分割される、ある種の「体系的な」レンダリングが得られます。

于 2014-10-03T18:29:16.377 に答える
0

これは古い投稿だと思いますが、現在のプロジェクトに基づいて私の考えを追加したいと思いました。

他の人が言ったように、サンプルをピクセルに結び付けることの問題:

  • サンプルグリッドをビュー平面に結合し、投影やズームなどを行うのを困難にします

  • 忠実度が不十分です。ランダムサンプリングは他の人が言ったように効率的であるため、均一なグリッドを使用してサンプリングする場合は、さらに多くのサンプルが必要になります

  • 同等のサンプル数でグリッドアーティファクトが発生する可能性がはるかに高くなりますが、ランダムサンプリングでは、数が少ないと粒子が粗く見える傾向があります。

しかし、私はbuddhabrotのGPUアクセラレーションバージョンに取り組んでおり、ランダムサンプリングを使用したGPUコードに固有のいくつかの問題に遭遇しました。

  • 何千ものサンプルを並行して生成する必要があるGPUコードのPRNGのオーバーヘッド/品質に問題がありました
  • ランダムサンプリングは非常に分散したトレースを生成し、GPUは実際には、特定のブロック/ワープ内のスレッドが可能な限り一緒に移動することを望んでいます。クラスター化されたトレースと分散されたトレースのパフォーマンスの違いは、私のテストでは極端でした
  • 効率的なatomicAddのための最新のGPUでのハードウェアサポートは、グローバルメモリへの書き込みがGPUbuddhabrotのボトルネックにならないことを意味します
  • グリッドサンプリングを使用すると、2パスレンダリングを非常に簡単に実行できます。低解像度パスに基づいてサンプルポイントのブロックをスキップして、ビュープレーンのピクセルに逃げたり触れたりしないポイントを見つけます。

簡単に言うと、GPUは技術的には同等の品質を得るためにこの方法でより多くの作業を行う必要がありますが、実際にはAFAICTの方が高速であり、GPUは非常に高速であるため、再レンダリングは数時間(またはミリ秒)ではなく数秒/分で済むことがよくあります。低解像度/品質レベルでは、リアルタイムのブッダブロは非常にクールです)

于 2021-12-08T23:12:30.000 に答える