アイデア:GPUベースのダイレクトボリュームレンダリングを使用して、インタラクティブな大きな画像シリーズをレンダリングする方法
-
27-09-2019 - |
質問
GPUベースのボリュームレンダリング(OpenCL / OpenGL / GLSLを使用)を使用して、30+ GB、2000以上の色のTIFF画像シリーズをリアルタイム(インタラクティブフレームレート)で視覚化できるデータセットに変換する方法を探しています。表面フィッティングの代わりに、直接ボリューム視覚化アプローチを使用したい(つまり、キューブを行進する代わりにレイキャスト)。
問題は2つありますが、最初に画像を3Dデータセットに変換する必要があります。私の頭に浮かぶ最初のことは、すべての画像を2Dテクスチャとして見ることで、単に3Dテクスチャを作成するためにそれらを積み重ねることです。
2番目の問題は、インタラクティブなフレームレートです。このためには、ズームなどの高解像度データセットをロードする「詳細オンデマンド」と組み合わせて、ある種のダウンサンプリングが必要になるでしょう。
私が見つけた最初のポイントごとのアプローチは、次のとおりです。
- レイヤーバイレイヤー処理と対応する画像テクスチャの生成による完全なボリュームデータの多角化。
- Vertex Processor操作を通じて、すべての重要な変換を実行します。
- ポリゴンスライスを小さなフラグメントに分割し、対応する深さとテクスチャ座標が記録されます。
- フラグメント処理では、頂点シェーダープログラミング手法を展開して、フラグメントのレンダリングを強化します。
しかし、このアプローチの実装を開始する方法についての具体的なアイデアはありません。
上記のアプローチの実装を開始する方法に関する新鮮なアイデアやアイデアを見てみたいです。
解決
誰かがこの分野で新鮮なアイデアを持っているなら、彼らはおそらくそれらを開発し、公開しようとしているでしょう。それは進行中の研究分野です。
「ポイントごとのアプローチ」では、スライスベースのボリュームレンダリングの基本的な方法を概説したようです。これは良い結果をもたらすことができますが、多くの人がハードウェアレイキャスティング方法に切り替えています。興味があるなら、Cuda SDKにはこの例があります。
階層体積レンダリングの良い方法は、Crassin et al。彼らの論文で呼ばれています ギガボキセル. 。 Octreeベースのアプローチを使用します。これは、必要なときにメモリに必要なレンガのみをロードします。
この分野の非常に良い入門書です リアルタイムボリュームグラフィックス.
他のヒント
私のコードはマーチングキューブを使用して等像を生成し、それを表示しましたが、私は少しボリュームレンダリングをしました。しかし、ボリュームレンダリングの私の控えめな自己教育の中で、私は興味深い短い論文に出会いました: 一般的なコンピューターハードウェアでのボリュームレンダリング. 。ソースの例も付属しています。私はそれをチェックアウトすることは一度もありませんでしたが、それは有望でした。それはdirectxであり、openglではありません。たぶんそれはあなたにいくつかのアイデアと始める場所を与えることができます。