volshow
ボリュームの表示
説明
は、3 次元グレースケール ボリューム vol
= volshow(V
)V
を表示する Volume
オブジェクトを作成します。マウスを使用して、表示を対話形式で回転および拡大縮小することもできます。Volume
オブジェクトを作成した後は、vol
を使用して、このオブジェクトのプロパティをクエリおよび変更します。プロパティの一覧については、Volume Properties を参照してください。
は、1 つ以上の名前と値の引数を使用してボリュームの外観を変更します。たとえば、vol
= volshow(V
,Name=Value
)volshow(V,RenderingStyle="Isosurface")
は、3 次元グレースケール ボリューム V
を表示して、レンダリング スタイルを "Isosurface"
に設定します。
例
MRI データのボリュームの可視化
MRI データをワークスペースに読み込み、大きさが 1 の次元を削除します。
load mri
V = squeeze(D);
MRI イメージに適したカラーマップと透明度 (アルファ) マップを生成します。
intensity = [0 20 40 120 220 1024]; alpha = [0 0 0.15 0.3 0.38 0.5]; color = [0 0 0; 43 0 0; 103 37 20; 199 155 97; 216 213 201; 255 255 255]/255; queryPoints = linspace(min(intensity),max(intensity),256); alphamap = interp1(intensity,alpha,queryPoints)'; colormap = interp1(intensity,color,queryPoints);
カスタムのカラーマップと透明度マップを使用してボリュームを表示します。マウスをドラッグして、ボリュームを回転させます。スクロール ホイールを使用して、ボリュームを拡大および縮小します。
vol = volshow(V,Colormap=colormap,Alphamap=alphamap);
CT データのボリュームの可視化
この例では、人体胸部の 3 次元ボリューム CT スキャン データを使用します。この例を実行するには、アドオン エクスプローラーを使用して MathWorks® からサンプル データをダウンロードしなければなりません。アドオン エクスプローラーを使用したサンプル データのインストールを参照してください。
データをワークスペースに読み込みます。
load chestVolume
CT イメージに適したカラーマップと透明度マップを作成します。
intensity = [-3024,-16.45,641.38,3071]; alpha = [0, 0, 0.72, 0.72]; color = [0 0 0; 186 65 77; 231 208 141; 255 255 255]/255; queryPoints = linspace(min(intensity),max(intensity),256); alphamap = interp1(intensity,alpha,queryPoints)'; colormap = interp1(intensity,color,queryPoints);
カスタムのカラーマップと透明度マップを使用してボリュームを表示します。マウスをドラッグして、ボリュームを回転させます。スクロール ホイールを使用して、ボリュームを拡大および縮小します。
vol = volshow(V,Colormap=colormap,Alphamap=alphamap);
プログラムによってシーンのカメラ位置とカメラ ターゲットを設定し、ボリュームに対して異なるビューを表示します。
scene = vol.Parent; scene.CameraPosition = [275 75 140]; scene.CameraTarget = [256 256 160]; scene.CameraUpVector = [0 0 1];
回転するボリュームのアニメーションの作成
グレースケール ボリュームをワークスペースに読み込み、volshow
を使用してそのボリュームを表示します。
load("spiralVol.mat")
h = volshow(spiralVol);
viewer = h.Parent;
hFig = viewer.Parent;
drawnow
アニメーションの保存先とする GIF ファイルの名前を指定します。
filename = "animatedSpiral.gif";
ボリュームの中心にカメラを向けます。
sz = size(spiralVol); center = sz/2 + 0.5; viewer.CameraTarget = center;
アニメーションのフレーム数を指定してから、ボリュームの中心付近の円内にカメラ位置の配列を作成します。
numberOfFrames =
12;
vec = linspace(0,2*pi,numberOfFrames)';
dist = sqrt(sz(1)^2 + sz(2)^2 + sz(3)^2);
myPosition = center + ([cos(vec) sin(vec) ones(size(vec))]*dist);
各カメラ位置で、表示を更新して、フレームを GIF ファイルに書き込みます。ファイルはビデオ ビューアーで再生できます。
for idx = 1:length(vec) % Update the current view viewer.CameraPosition = myPosition(idx,:); % Capture the image using the getframe function I = getframe(hFig); [indI,cm] = rgb2ind(I.cdata,256); % Write the frame to the GIF file if idx==1 % Do nothing. The first frame displays only the viewer, not the % volume. elseif idx == 2 imwrite(indI,cm,filename,"gif",Loopcount=inf,DelayTime=0) else imwrite(indI,cm,filename,"gif",WriteMode="append",DelayTime=0) end end
入力引数
V
— 3 次元グレースケール ボリューム
数値配列
3 次元グレースケール ボリューム。数値配列として指定します。
データ型: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| logical
config
— レンダリング情報
構造体
ボリューム ビューアーによってエクスポートされたレンダリング情報。構造体として指定します。
データ型: struct
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで、Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
例: volshow(V,RenderingStyle="Isosurface")
は、3 次元グレースケール ボリューム V
を表示して、レンダリング スタイルを "Isosurface"
に設定します。
メモ
ここには一部のプロパティのみを示します。完全なリストについては、Volume Properties を参照してください。
RenderingStyle
— レンダリング スタイル
"VolumeRendering"
(既定値) | "MaximumIntensityProjection"
| "MinimumIntensityProjection"
| "GradientOpacity"
| "Isosurface"
| "SlicePlanes"
レンダリング スタイル。次の表のいずれかの値を指定します。
値 | 説明 |
---|---|
"VolumeRendering" | 各ボクセルに指定された色と透明度に基づいてボリュームを表示します。 |
"MaximumIntensityProjection" | 投射された各光線の強度値がデータ全体で最も大きいボクセルを表示します。RGB ボリュームの場合、CIE 1976 L*a*b* 色空間で最大の輝度をもつボクセルを表示します。 |
"MinimumIntensityProjection" | 投射された各光線の強度値がデータ全体で最も小さいボクセルを表示します。RGB ボリュームの場合、CIE 1976 L*a*b* 色空間で最小の輝度をもつボクセルを表示します。 |
"GradientOpacity" | 指定された色と透明度に基づいてボリュームを表示します。ボクセルの強度 (グレースケール ボリュームの場合) または輝度 (RGB ボリュームの場合) が表示用の光線に沿った前のボクセルと似ている場合は、追加の透明度が適用されます。
|
"Isosurface" |
|
"SlicePlanes" | 3 つの直交スライス平面を表示します。 |
Alphamap
— ボリューム コンテンツの透明度マップ
linspace(0,1,256)'
(既定値) | n 要素の列ベクトル
ボリューム コンテンツの透明度マップ。[0, 1] の範囲の値をもつ n 要素の列ベクトルとして指定します。ベクトルの最大長は 256 です。RGB ボリュームを表示する場合、このオブジェクトは CIE 1976 L*a*b* 色空間のボクセルの輝度を使用して、透明度マップから透明度を割り当てます。AlphaData
プロパティが空でない場合、Alphamap
プロパティは効果がありません。
Colormap
— カラーマップ
gray(256)
(既定値) | n 行 3 列の数値行列
グレースケール ボリューム コンテンツのカラーマップ。範囲 [0, 1] の値をもつ n 行 3 列の数値行列として指定します。色数 n の最大値は 256 です。RGB ボリュームを表示する場合、このプロパティは効果がありません。
OverlayData
— オーバーレイ データ
数値配列
レンダリング時にオブジェクトと混合されるオーバーレイ データ。数値配列として指定します。オブジェクトは、RenderingStyle
プロパティ値が "SlicePlanes"
、"VolumeRendering"
、または "GradientOpacity"
の場合にのみオーバーレイを表示します。OverlayRenderingStyle
、OverlayColormap
プロパティ、および OverlayAlphamap
プロパティを変更すると、オーバーレイの外観を変更できます。
OverlayRenderingStyle
— オーバーレイのレンダリング スタイル
"LabelOverlay"
(既定値) | "VolumeOverlay"
| "GradientOverlay"
オーバーレイのレンダリング スタイル。次の表のいずれかの値を指定します。
値 | 説明 |
---|---|
"LabelOverlay" | 各ラベル付き領域の色と透明度に基づいてオーバーレイを表示します。このレンダリング スタイルを使用して、表示するデータの上にバイナリ セグメンテーションやセマンティック セグメンテーションの結果のような順序データを可視化します。 |
"VolumeOverlay" | 各ボクセルに指定された色と透明度に基づいてオーバーレイを表示します。 |
"GradientOverlay" | 各ボクセルの色と透明度に基づいてオーバーレイを表示します。現在のボクセルと、表示用の光線に沿った前のボクセルとの違いに基づいて、追加の透明度が適用されます。 |
出力引数
vol
— ボリューム
Volume
オブジェクト
ボリューム。Volume
オブジェクトとして返されます。ボリュームの特性変更の詳細については、Volume Properties を参照してください。
詳細
イベント
特定のイベントが発生したときに Volume
オブジェクトから通知を受け取るには、これらのイベントに対する "リスナー" を設定します。これらのイベントのいずれかが発生したときに実行するコールバック関数を指定できます。Volume
オブジェクトがリスナーを通じてアプリケーションに通知するとき、イベントに固有のデータを返します。特定のイベントのイベント クラスを確認して何が返されたかを調べます。
イベント名 | トリガー | イベント データ | イベント属性 |
---|---|---|---|
ClippingPlanesChanging | オブジェクトのクリッピング平面が対話的に移動している。クリッピング平面がプログラムで移動している場合、このイベントは実行されません。 | images.ui.graphics3d.events.ClippingPlanesChangedEventData |
|
ClippingPlanesChanged | オブジェクトのクリッピング平面が対話的な移動を停止している。クリッピング平面がプログラムで移動している場合、このイベントは実行されません。 | images.ui.graphics3d.events.ClippingPlanesChangedEventData |
|
SlicePlanesChanging | オブジェクトのスライス平面が対話的に移動している。スライス平面がプログラムで移動している場合、このイベントは実行されません。 | images.ui.graphics3d.events.SlicePlanesChangedEventData |
|
SlicePlanesChanged | オブジェクトのスライス平面が対話的な移動を停止している。スライス平面がプログラムで移動している場合、このイベントは実行されません。 | images.ui.graphics3d.events.SlicePlanesChangedEventData |
|
バージョン履歴
R2018b で導入R2022b: Volume
オブジェクトを返す
関数 volshow
は、volshow
オブジェクトの代わりに Volume
オブジェクトを返すようになりました。Volume
オブジェクトは、提供するレンダリング スタイルの数を増やし、Viewer3D
オブジェクトを統合してボリュームの可視化をより簡単に制御できるようになりました。Volume
オブジェクトは Web グラフィックスもサポートしています。
関数 volshow
は、Volume
オブジェクトのプロパティに基づいてさまざまな名前と値の引数のセットを受け入れます。これらのプロパティの一覧については、Volume Properties を参照してください。
親オブジェクトを指定せずに volshow
を呼び出した場合、この関数は新しい Viewer3D
オブジェクトを作成し、そのオブジェクトを親に設定します。以前、この関数は関数 gcf
を使用して現在の Figure を識別し、その Figure を親に設定していました。
従来の動作を再現する場合は、関数 images.compatibility.volshow.R2022a.volshow
を使用して volshow
オブジェクトを作成します。関数 images.compatibility.volshow.R2022a.volshow
および volshow
オブジェクトは将来のリリースで削除される予定であることに注意してください。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)