このページの内容は最新ではありません。ここをクリックして、最新版の英語を参照してください。
volshow
ボリュームの表示
構文
説明
数値配列
は、3-D ボリューム vol
= volshow(V
)V
を表示する Volume
オブジェクトを作成します。マウスを使用して、表示を対話形式で回転および拡大縮小することもできます。Volume
オブジェクトを作成した後は、vol
を使用して、このオブジェクトのプロパティをクエリおよび変更します。プロパティの一覧については、Volume Properties を参照してください。
は、1 つ以上の名前と値の引数を使用してボリュームの外観を変更します。たとえば、vol
= volshow(V
,Name=Value
)volshow(V,RenderingStyle="Isosurface")
は、3-D ボリューム V
を表示して、レンダリング スタイルを "Isosurface"
に設定します。
ブロック化されたイメージ ボリューム
R2023a 以降
は、ブロック化された 3-D イメージ bVol
= volshow(bim
)bim
を表示する BlockedVolume
オブジェクトを作成します。マウスを使用して、表示を対話形式で回転および拡大縮小することもできます。BlockedVolume
オブジェクトを作成した後は、bVol
を使用して、このオブジェクトのプロパティをクエリおよび変更します。プロパティの一覧については、BlockedVolume Properties を参照してください。
は、1 つ以上の名前と値の引数を使用してブロック化されたボリュームの外観を変更します。たとえば、bVol
= volshow(bim
,Name=Value
)ResolutionLevel="coarse"
は、表示する解像度レベルを最も粗い解像度レベルに指定します。
メモ
Medical Imaging Toolbox™ は関数 volshow
(Image Processing Toolbox™) の機能を拡張し、患者座標系の medicalVolume
(Medical Imaging Toolbox) オブジェクトを表示します。詳細については、volshow
(Medical Imaging Toolbox) を参照してください。
例
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);
この MRI スキャンのボクセル サイズは不均一、すなわち異方性のある 1×1×2.5 mm です。適切なボクセル次元にイメージをスケーリングする変換行列を指定します。
sx = 1; sy= 1; sz = 2.5; A = [sx 0 0 0; 0 sy 0 0; 0 0 sz 0; 0 0 0 1];
スケーリングを実行する affinetform3d
オブジェクトを作成します。
tform = affinetform3d(A);
カスタムのカラーマップ、透明度マップ、および変換を使用してボリュームを表示します。マウスをドラッグして、ボリュームを回転させます。スクロール ホイールを使用して、ボリュームを拡大および縮小します。
vol = volshow(V,Colormap=colormap,Alphamap=alphamap,Transformation=tform);
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
ブロック化されたイメージ ボリュームの可視化
この例では、500×500×2500 の大きなイメージ ボリュームを作成します。2.5 GB のボリュームを作成して保存するために十分なメモリがマシンにない場合は、この例を実行する前に、imSize
を小さくしてください。
imSize = [500,500,2500];
バブルの 3-D イメージ シミュレーション V
を作成します。これには数分かかることがあります。
V = rand(imSize,"single");
BW = false(size(V));
BW(V < 0.000001) = true;
V = bwdist(BW);
V(V <= 20) = 1;
V(V > 20) = 0;
V
を直接表示しようとすると、volshow
はボリュームが大きすぎるというエラーを返します。代わりに、V
を指す、ブロック サイズが 500×500×500 ボクセルの blockedImage
オブジェクトを作成します。
bim = blockedImage(V,BlockSize=[500,500,500]);
volshow
を使用して blockedImage
を表示します。関数 volshow
は一度に 1 つずつブロックをメモリに読み取り、個々のブロック レンダリングを繋ぎ合わせて最終的なボリュームを生成します。
bVol = volshow(bim);
入力引数
V
— 3-D ボリューム
数値配列
3-D ボリューム。数値配列として指定します。
データ型: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| logical
| char
config
— レンダリング情報
構造体
ボリューム ビューアーによってエクスポートされたレンダリング情報。構造体として指定します。
データ型: struct
bim
— ブロック化されたイメージ ボリューム
blockedImage
オブジェクト
ブロック化されたイメージ ボリューム。グレースケール データ、RGB データ、または RGBA データの 3-D ブロックを読み取る blockedImage
オブジェクトとして指定します。ブロック化されたイメージには単一の解像度レベルまたは複数の解像度レベルを指定できます。
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで、Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
例: volshow(V,RenderingStyle="Isosurface")
は、3-D ボリューム V
を表示して、レンダリング スタイルを "Isosurface"
に設定します。
メモ
ここには一部のプロパティのみを示します。インメモリ ボリュームのプロパティの完全なリストについては、Volume Properties を参照してください。ブロック化されたボリュームのプロパティの完全なリストについては、BlockedVolume 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
— オーバーレイ データ
[]
(既定値) | 数値配列 | blockedImage
オブジェクト
レンダリング時にオブジェクト データと混合されるオーバーレイ データ。次のいずれかの値を指定します。
ビューアーは、RenderingStyle
プロパティ値が "SlicePlanes"
、"VolumeRendering"
、または "GradientOpacity"
の場合にのみオーバーレイを表示します。OverlayRenderingStyle
、OverlayColormap
プロパティ、および OverlayAlphamap
プロパティを変更すると、オーバーレイの外観を変更できます。
OverlayRenderingStyle
— オーバーレイのレンダリング スタイル
"LabelOverlay"
(既定値) | "VolumeOverlay"
| "GradientOverlay"
オーバーレイのレンダリング スタイル。次の表のいずれかの値を指定します。
値 | 説明 |
---|---|
"LabelOverlay" | 各ラベル付き領域の色と透明度に基づいてオーバーレイを表示します。このレンダリング スタイルを使用して、表示するデータの上にバイナリ セグメンテーションやセマンティック セグメンテーションの結果のような順序データを可視化します。 |
"VolumeOverlay" | 各ボクセルに指定された色と透明度に基づいてオーバーレイを表示します。 |
"GradientOverlay" | 各ボクセルの色と透明度に基づいてオーバーレイを表示します。現在のボクセルと、表示用の光線に沿った前のボクセルとの違いに基づいて、追加の透明度が適用されます。 |
出力引数
vol
— ボリューム
Volume
オブジェクト
ボリューム。Volume
オブジェクトとして返されます。ボリュームの特性変更の詳細については、Volume Properties を参照してください。
bVol
— ブロック化されたボリューム
BlockedVolume
オブジェクト
ブロック化されたボリューム。BlockedVolume
オブジェクトとして返されます。ボリュームの特性変更の詳細については、BlockedVolume Properties を参照してください。
詳細
イベント
特定のイベントが発生したときに Volume
オブジェクトまたは BlockedVolume
オブジェクトから通知を受け取るには、これらのイベントに対する "リスナー" を設定します。これらのイベントのいずれかが発生したときに実行するコールバック関数を指定できます。オブジェクトがリスナーを通じてアプリケーションに通知するとき、イベントに固有のデータを返します。特定のイベントのイベント クラスを確認して何が返されたかを調べます。
イベント名 | トリガー | イベント データ | イベント属性 |
---|---|---|---|
ClippingPlanesChanging | オブジェクトのクリッピング平面が対話的に移動している。クリッピング平面がプログラムで移動している場合、このイベントは実行されません。 | images.ui.graphics3d.events.ClippingPlanesChangedEventData |
|
ClippingPlanesChanged | オブジェクトのクリッピング平面が対話的な移動を停止している。クリッピング平面がプログラムで移動している場合、このイベントは実行されません。 | images.ui.graphics3d.events.ClippingPlanesChangedEventData |
|
SlicePlanesChanging | オブジェクトのスライス平面が対話的に移動している。スライス平面がプログラムで移動している場合、このイベントは実行されません。 | images.ui.graphics3d.events.SlicePlanesChangedEventData |
|
SlicePlanesChanged | オブジェクトのスライス平面が対話的な移動を停止している。スライス平面がプログラムで移動している場合、このイベントは実行されません。 | images.ui.graphics3d.events.SlicePlanesChangedEventData |
|
DataReadStarted | BlockedVolume オブジェクトがシーン内でレンダリングされるデータのブロックを送信している。このイベントは、Volume オブジェクトに対しては適用されません。 | event.EventData |
|
DataReadFinished | BlockedVolume オブジェクトがシーン内で表示されるデータのすべてのブロックを送信した。このイベントは、Volume オブジェクトに対しては適用されません。 | event.EventData |
|
バージョン履歴
R2018b で導入R2023a: ブロック化されたイメージの表示
関数 volshow
は、blockedImage
オブジェクトとして保存されている大きなイメージ ボリュームの表示をサポートするようになりました。入力として blockedImage
オブジェクトを渡すと、volshow
はボリュームを表示し、BlockedVolume
オブジェクトを作成します。BlockedVolume
オブジェクトのプロパティは、3-D シーン内のブロック化されたイメージ ボリュームの外観と動作を制御します。これらのプロパティの一覧については、BlockedVolume Properties を参照してください。
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)