CT Lab

第28章 3 次元可視化

本章では、マーチングキューブ法による等値面抽出と、サーフェスレンダリング、ボリュームレンダリングを扱います。

体積データそのものを立体として画面に描く方法には、大きく 2 つの流儀があります。ひとつは、体積の中から「ある値の面」=等値面を三角形メッシュとして取り出し、面を陰影付きで描くサーフェスレンダリング。もうひとつは、面を切り出さず、体積を半透明の雲とみなして視線方向に積分するボリュームレンダリングです。前章の MPR や MIP が体積を平面に落として見る方法だったのに対し、どちらも立体としてのかたちを直接描きます。順に見ていきます。

マーチングキューブ法:等値面を取り出す

サーフェスレンダリングでは、体積データから等値面を三角形メッシュとして抽出します。代表的な方法がマーチングキューブ法です。その原理は、2 次元版のマーチングスクエア法から説明できます。画像を格子状のセルに分け、各セルの 4 隅がしきい値以上か未満かを調べます。状態が切り替わる辺と等値線の交点を線形補間で求めて結びます。4 隅の状態には 24=162^4=16 通りの組み合わせがあり、それぞれに対応する線分の配置が決まります。

マーチングスクエアのセル等値線辺上を線形補間サーフェス vs ボリュームレイサーフェスボリューム

マーチングスクエア法による等値線抽出(左)と、サーフェス・ボリュームレンダリングの比較(右)。3 次元ではセルを立方体へ拡張して等値面を抽出する。

3 次元では、同じ考え方を立方体のセルへ拡張します。セルは 8 個の頂点と 12 本の辺を持ち、頂点の状態には 28=2562^8 = 256 通りの組み合わせがあります。各組み合わせについて、どの辺を横切って三角形を配置するかが表として定義されています。交点は 2D と同様に辺上の線形補間で求めます。隣接するセルが交点を共有することで、連続した三角形メッシュが得られます。

シミュレーション:等値線を動かす

ボリュームの中央スライスに、しきい値 level の等値線をマーチングスクエア法で重ねます。level を動かすと、取り出す「等値の面(ここでは線)」が変わり、骨の殻を囲む輪郭から内部の構造まで切り替わります。線分の数(segments)が面の複雑さの目安です。

WL 0.500 / WW 1.00ドラッグで WL/WW 調整
線分の数432

中央スライスに重ねたマーチングスクエア法の等値線。しきい値 level に応じて抽出される輪郭と線分数が変化する。

サーフェスレンダリング

取り出した等値面は、頂点と法線を持つ三角形メッシュです。これに光源を当てて陰影を付ければ、立体として見えます。面が明示的なので、回転・拡大が速く、面積や体積の計測もしやすいのが利点です。一方で、しきい値を 1 つ決めて面を切り出すため、その値に現れない構造(軟部組織の緩やかな濃淡など)は捨てられます。骨のように周囲とコントラストの高い構造に向いた表示法です。

下は、頭部を模したボリュームファントムを three.js のマーチングキューブで等値面化し、陰影を付けて描いたものです。ドラッグで回転できます。しきい値を上げると骨の殻だけが残り、下げると内部の構造まで面に含まれます。

ボリュームレンダリング

面を切り出さずに体積そのものを描くのがボリュームレンダリングです。画素ごとに視線方向へレイを飛ばし、体積を細かくサンプリングしながら、各点の値を転送関数(transfer function)で色と不透明度に写像して、手前から順に合成します。転送関数の設計しだいで、骨だけを不透明な白に、軟部組織を淡い半透明に、というように見せる対象を選べます。しきい値をまたぐ 1 枚の面ではなく、濃淡の連続をそのまま表現できるのが強みです。

前章の最大値投影(MIP)は、合成のかわりに視線方向の最大値だけを取るボリュームレンダリングの一種と見なせます。X 線写真のように減弱を積分する DRR(digitally reconstructed radiograph)も、転送関数と合成則を変えた仲間です。

転送関数によるボリュームレンダリング。骨・軟部プリセットでは色と不透明度を合成し、MIP では視線方向の最大値を表示する。

サーフェスか、ボリュームか

2 つの流儀は目的で使い分けます。サーフェスレンダリングは、明示的なメッシュが得られるので高速で、計測や 3D プリント、手術シミュレーションのような幾何が要る用途に向きます。ただし 1 つのしきい値で切るため情報を捨てます。ボリュームレンダリングは、転送関数を通じて濃淡の連続を丸ごと見せられ、軟部組織や淡い構造の観察に向きますが、計算が重く、転送関数の設計に画質が強く依存します。実際の臨床ワークステーションは両方を備え、対象に応じて切り替えます。

この章の要点

体積データを立体として見る方法は、等値面をメッシュに取り出して陰影を付けるサーフェスレンダリングと、体積を転送関数で色・不透明度に写して積分するボリュームレンダリングの 2 つに大別されます。等値面の抽出はマーチングキューブ法で行い、その原理は 2 次元のマーチングスクエア法(隅の内外で辺の交点を線形補間する)を立方体に拡張したものです。サーフェスは高速で計測向き、ボリュームは濃淡を丸ごと見せられる一方で重く、転送関数に依存します。MIP や DRR はボリュームレンダリングの特殊な場合です。

参考文献

このページの内容