可視化手法 | ![]() ![]() |
例題 - MRIデータの可視化
スカラデータの例題として、Magnetic Resonance Imaging (MRI)データを用意しています。このデータは、人体のようなある物体内を通るいくつかのスライス平面から構成されています。MATLABは、人の頭部の27個のイメージスライスを含む一組のMRIデータセットを含んでいます。このデータの可視化に関する有効な手法を使って、つぎのようにデータを表示することができます。
データフォーマットの変更
MRIデータD
は、128 x 128 x 1 x 27 配列として格納されています。3番目の配列次元は、通常、イメージカラーデータに対して用いられます。しかし、これらはインデックス付きイメージ(カラーマップ、map
がロードされます)なので、3番目の次元には情報はありません。これは squeeze
コマンドを使って削除することができます。結果は128 x 128 x 27 配列となります。
最初のステップは、データをロードし、データ配列を4次元から3次元に変換することです。
load mri D = squeeze(D);
MRIデータのイメージ表示
MRIイメージを表示するには、image
コマンドを使い、8番目のイメージを得るためデータ配列にインデックス付けをします。そして、axis
スケーリングを調整し、データと共にロードされたMRI colormap
をインストールします。
image_num = 8; image(D(:,:,image_num)) axis image colormap(map)
例題のつぎの部分で利用するため、x軸とy軸の範囲を保存します。
x = xlim; y = ylim;
2次元コンタースライスの表示
このMRIデータは、3次元オブジェクトを徐々に進めながらスライスの選択をしているので、物体としてこれらを扱うことができます。contourslice
を使って、物体のスライスのコンタープロットを表示することができます。この例題の最初の部分で作成したイメージと同じ方向で、同じ大きさをもつコンタープロットを作成するために、y軸の方向を調整し(axis
)、範囲を設定し(xlim
, ylim
)、縦横比を設定します(daspect
)。
contourslice(D,[],[],image_num) axis ij xlim(x) ylim(y) daspect([1,1,1]) colormap('default')
このコンタープロットは、カラーをコンター値に写像して、figureのカラーマップを使っています。
3次元コンタースライスの表示
2次元オブジェクトであるイメージと異なり、コンタースライスは任意の方向で表示できる3次元オブジェクトです。たとえば、3次元ビューの中に4つのコンタースライスを表示できます。コンターラインの可視状態を改善するため、LineWidth
を2ポイントに増やします(1ポイントは1/72インチです)。
phandles = contourslice(D,[],[],[1,12,19,27],8); view(3); axis tight set(phandles,'LineWidth',2)
等特性サーフェスの表示
物体の全体的な構造を表示するために等特性サーフェスを使うことができます。等特性エンドキャップと組み合わせて、等特性サーフェス内部のデータに関する情報を表示することができます。
まず、smooth3
を使ってデータを平滑化し、isosurface
を使って等特性データを計算します。patch
を使って、このデータをグラフィックスオブジェクトとして表示します。
Ds = smooth3(D); hiso = patch(isosurface(Ds,5),... 'FaceColor',[1,.75,.65],... 'EdgeColor','none');
断面を示すために等特性エンドキャップを付加
isocaps
を使ってサーフェスとして同じ等値(5
)で表示されるその他のpatchに対するデータを計算します。内部の詳細を表わすために、平滑化されていないデータ(D
)を使います。これは、頭の上をスライスしているように見えます。
hcap = patch(isocaps(D,5),... 'FaceColor','interp',... 'EdgeColor','none'); colormap(map)
ビューの定義
ビューを定義し、縦横比を設定します(view
, axis
, daspect
)。
view(45,30) axis tight daspect([1,1,.4])
光源を付加
光源を付加し、物体データの勾配をもとにサーフェスの法線を再計算し、より平滑なライティングを生成します(camlight
, lighting
, isonormals
)。 等特性エンドキャップの AmbientStrength
プロパティを大きくして、等特性サーフェスに影響を与えずにカラーを明るくします。等特性サーフェスの SpecularColorReflectance
を設定して、鏡面反射光のカラーを等特性サーフェスのカラーに近付け、SpecularExponent
を設定して鏡面スポットの大きさを小さくします。
lightangle(45,30); set(gcf,'Renderer','zbuffer'); lighting phong isonormals(Ds,hiso) set(hcap,'AmbientStrength',.6) set(hiso,'SpecularColorReflectance',0,'SpecularExponent',50)
等特性エンドキャップは、内挿された面のカラーリングを用います。これは、figureのカラーマップがpatchの色を決定することを意味します。この例題は、データと共に与えられたカラーマップを使っています。
他のデータ値での等特性エンドキャップを表示するためには、等特性サーフェス値を変更したり、subvolume
コマンドを使ってみてください。例題は、isocaps
および subvolume
リファレンスページを参照してください。
![]() | スカラ物体データの可視化 | スライス平面を使って物体を表示 | ![]() |