Masassiah Blog

Masassiah のブログです。主に読書で得た気づきをまとめています。

ボリュームデータの可視化

2020年2月11日更新

イメージ 1

MATLAB を使って三次元のボリュームデータを可視化する方法を紹介します。
%===parameter===%
th=0.5;
SIGMA=10;
x=0:30;y=0:30;z=0:30;
[X,Y,Z]=meshgrid(x,y,z);
Vol=exp(-((X-15).^2+(Y-15).^2+(Z-15).^2)/2/SIGMA/SIGMA);
Vol=Vol+0.25*rand(size(Vol));
%===3D image===%
Vol=smooth3(Vol);
fv=isosurface(Vol,th);
figure(1);
hiso=patch(fv,'FaceColor',[0.3,0.3,1],'EdgeColor','none');
axis('equal');
axis([0,30,0,30,0,30]);
view(45,45);
lightangle(60,60);
grid on;

ボリュームデータ

Vol は三次元のボリュームデータです。
三次元の球に,乱数を使って凹凸をつけています。

ボリュームデータの可視化

ボリュームデータの可視化は,%===3D image===% 以下の数行です。
smooth3 という関数でボリュームデータを平滑化
isosurface という関数ででボリュームデータの等値面を計算。ここで,th という関数でで等値面の値を設定しています。
上記のコードの fv は頂点とフェースの構造体になっており,それを patch にて可視化します。
いわゆるポリゴンというヤツです。
view や lightangle を使って,ボリュームデータをカッコ良く表示できるようにしています。
いっぱい頂点とフェースがある場合,黒々してしまうので,それを避けるためにライトを使います。