LightningChart SDK で生成する高精度なボリューム レンダリング

LightningChart は、ボリューム レンダリング機能でボリューム データを取得、視覚化するための VolumeModel を提供します。Arction 社のレンダリング エンジンは、レイ キャスティング法を用いています。
データ セット内を移動するレイ (光線) の経路に沿ったボリューム データのサンプルから、アルゴリズムでイメージを生成します。レイ キャスティング向けにハードウェアのアクセラレーションを実現するには、ボリューム オブジェクトの境界線を生成する必要があります。一般的には立方体で表現されます。この技術の主な利点は、アーティファクトのない高精度なレンダリングと、互換性のあるレイ機能です。
レイ機能は、アルゴリズムのコアとして高度な柔軟性を提供します。これは、データのサンプリング、統合方法を指定するとても強力な技術です。そのため、機能抽出において非常に便利なツールとなります。
VolumeModel にボリューム データをインポートする場合、いくつかの方法があります。

  • データセットのスライスを表現する画像のコレクションとして、データ プロパティにインポートできます。
  • あらゆる方法で VolumeModel のコンストラクタに直接インポートできます。
  • Load 関数の 1 つを介して VolumeModel にインポートできます。

Load 関数とコンストラクタにより、データ プロパティと同様、データを断面画像のコレクションとしてインポート、または .NET でサポートされる画像形式の断面画像とともにフォルダへのパスを含む文字列としてインポートできます。また、Arction 社のツールで作成できるテクスチャ マップとしてもインポートできます。テクスチャ マップは断面画像で構成され、断面画像の枚数に関する追加情報が必要となります。これは、GPU インプットのバッファーを効率的に活用するために必要です。テクスチャ マップは、ChartTools.CreateMap 機能で作成できます。テクスチャ マップの直接のインプットは、膨大なデータセット向けのアプリケーションの開始を加速します。

プロパティ

VolumeModel は、Visible (可視性)、Rotation (回転)、Size (サイズ)、Position (位置)、MouseInteraction (マウス操作)、MouseHighLight (マウスのハイライト) など、LightningChart の 3D オブジェクトの典型的なプロパティを保持します。さらに、ボリューム レンダリング エンジンによる処理方法を定義する特定のプロパティがあります。

volumermodel-properties
[図 1. オブジェクトのプロパティ ツリー]

レイ機能

レイ機能は、LightningChart のボリューム レンダリング エンジンで利用可能なボクセルのサンプリング、コンポジションにおける 3 つの手法の 1 つを選択できます。
Accumulation Ray Function (累積機能) は、できるだけ多くのデータを収集、結合します。これによって生成されるイメージは、半透明のゲルのように見えます。図 2 は、医療データセットを視覚化するアプリケーションの例です。

Example of a medical application for the Accumulation Ray Function

[図 2. Accumulation Ray Function (累積機能) を使用した医療アプリケーションの例]

Maximum Intensity Ray Function (最大値機能) は、レイによってサンプリングされた最も明るい値のみを視覚化します。X 線画像と同様の結果が得られます。オブジェクトの内部構造に関する追加情報を得ることができます。図 3 は、最大値投影法を使用した超音波干渉シミュレーションのアプリケーションの例です。

Examples of a Maximum Intensity Ray Function application
Examples of a Maximum Intensity Ray Function application

[図 3. Maximum Intensity Function (最大値機能) アプリケーションの例]

Isosurface Ray Function (等値面機能) は、ポリゴン モデル のレンダリングのようなモデル サーフェスを描画します。サーフェス レンダリングで生成された結果と非常によく似ています。図 4 は、水流シミュレーションを視覚化する等値面機能アプリケーションの例です。

Examples of a Maximum Intensity Ray Function application
Figure 4. Examples of an Isosurface Ray Function application

[図 4. Isosurface Ray Function (等値面機能) アプリケーションの例]

閾値とスライス範囲

ボリューム レンダリング エンジンは、プロパティによって VolumeModel に閾値範囲を適用できます。それぞれの色のチャンネルごとに、別々の境界があります。ボクセルは、高い境界より低く、全チャンネルの低い境界よりも高い場合にのみ視覚化されます。許容範囲は見ることができません。マウスのヒットテストでは、このプロパティは考慮されていません。
Examples of a Maximum Intensity Ray Function application
Figure 4. Examples of an Isosurface Ray Function application

[図 5. 2 つの異なる閾値を設定した場合]

 
Example of Accumulation Ray Function and SliceRange modification

[図 6. Accumulation Ray Function (累積機能) に SliceRange (スライス範囲) 調整をした場合]

サンプリング率のオプション

サンプリング率は、最終イメージの解像度に大きな影響をもたらします。これは、レイの経路に沿ってボリューム データセットがサンプリングされた頻度を定義します。高いサンプリング率は、より高解像度なイメージを生成できますが、精度の高いハードウェアが必要となります。サンプリング率は、累積機能に大きな影響をもたらします。最大値機能を使用すると、低いサンプリング率によって生成されたアーティファクトはあまり目立ちません。高いサンプリング率では、等値面機能が鋭くなりすぎる場合があります。通常、レイの経路に位置するボクセルの数に値するサンプリング率が最も適切です。
SamplingRateOptions (サンプリング率のオプション) は、サンプリング率の管理向けにいくつかのオプションを提供します。SamplingRateManager (サンプリング率のマネージャー) は、特定のハードウェアのフレーム レートと品質における最適なバランスを見つけ出します。プロパティを有効化 (Enabled) した上で、SamplingRateManager の使用をオンにする必要があります。そうでない場合、ManualSamplingRate (マニュアルのサンプリング率) 値が使用されます。SamplingRateRange (サンプリング率の範囲) は、SamplingRateManager の境界を定義します。Inertness (不活性度) は、パフォーマンスが変化した場合におけるサンプリング率の変化の速度を定義します。TargetFPS は、可能であれば SamplingRateManager によって達成されるべきターゲットとなります。
Example of low sampling rate: 32
Example of low sampling rate: 64

[図 7. 低いサンプリング率の例:32 (左)、64 (右)]

滑らかさ (Smoothness)

表面の過度の欠落を防止します。これにより、表面をより滑らかにし、ノイズやその他のアーティファクトを減らします。

[図 8. 過度のサンプリング率を Smoothness プロパティで修正した例]

空のスペースの除外 (EmptySpaceSkipping)

サンプリングを除外して、空のスペースの解像度を定義します。EmptySpaceSkipping の低い値 (16~32) はパフォーマンスを向上しますが、モデルの先端部分にアーティファクトが発生する可能性があります。
Example of too low EmptySpaceSkipping property value

[図 9. 過度に低い EmptySpaceSkipping プロパティ値の例]

不透明度 (Opacity)

累積機能の動作を指定します。不透明度が低いと、オブジェクトはより透明になります。
Example of Accumulation Ray Function Opacity modification: 15%(left), 45(right)

[図 10. 累積機能と不透明度による調整の例:15% (左)、45 (右)]

輝度と影

これらのプロパティは、イメージの伝達関数を定義します。すべての変更には、独自の伝達関数があります。これは一次関数によって表されます。
出力 = 輝度 × 入力 – 影

Arction 製品の詳細は、弊社製品ページをご覧ください。
製品に関する便利な情報は、リソース ページにて紹介しています。
記事参照:
2017 年 3 月 17 日 Arction チーム
© Arction Ltd 2017
Volume Rendering with LightningChart

シェアする

  • このエントリーをはてなブックマークに追加

フォローする