Main Content

volshow

    説明

    vol = volshow(V) は、3 次元グレースケール ボリューム V を表示する Volume オブジェクトを作成します。マウスを使用して、表示を対話形式で回転および拡大縮小することもできます。Volume オブジェクトを作成した後は、vol を使用して、このオブジェクトのプロパティをクエリおよび変更します。プロパティの一覧については、Volume Properties を参照してください。

    vol = volshow(V,config) は、config 構造体で指定された Volume オブジェクトのプロパティの値を使用して、3 次元グレースケール ボリューム V を表示します。

    vol = volshow(V,Name=Value) は、1 つ以上の名前と値の引数を使用してボリュームの外観を変更します。たとえば、volshow(V,RenderingStyle="Isosurface") は、3 次元グレースケール ボリューム V を表示して、レンダリング スタイルを "Isosurface" に設定します。

    すべて折りたたむ

    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);

    この例では、人体胸部の 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

    animatedSpiral.gif

    入力引数

    すべて折りたたむ

    3 次元グレースケール ボリューム。数値配列として指定します。

    データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical

    ボリューム ビューアーによってエクスポートされたレンダリング情報。構造体として指定します。

    データ型: struct

    名前と値の引数

    オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

    例: volshow(V,RenderingStyle="Isosurface") は、3 次元グレースケール ボリューム V を表示して、レンダリング スタイルを "Isosurface" に設定します。

    メモ

    ここには一部のプロパティのみを示します。完全なリストについては、Volume Properties を参照してください。

    Volume オブジェクトの親。Viewer3D オブジェクトとして指定します。関数 viewer3d を使用して Viewer3D オブジェクトを作成できます。親を指定せずに volshow を呼び出した場合、この関数は新しい Viewer3D オブジェクトを作成し、そのオブジェクトを親に設定します。Volume オブジェクトを再び親にすることはできません。

    レンダリング スタイル。次の表のいずれかの値を指定します。

    説明
    "VolumeRendering"各ボクセルに指定された色と透明度に基づいてボリュームを表示します。
    "MaximumIntensityProjection"投射された各光線の強度値がデータ全体で最も大きいボクセルを表示します。RGB ボリュームの場合、CIE 1976 L*a*b* 色空間で最大の輝度をもつボクセルを表示します。
    "MinimumIntensityProjection"投射された各光線の強度値がデータ全体で最も小さいボクセルを表示します。RGB ボリュームの場合、CIE 1976 L*a*b* 色空間で最小の輝度をもつボクセルを表示します。
    "GradientOpacity"

    指定された色と透明度に基づいてボリュームを表示します。ボクセルの強度 (グレースケール ボリュームの場合) または輝度 (RGB ボリュームの場合) が表示用の光線に沿った前のボクセルと似ている場合は、追加の透明度が適用されます。

    "GradientOpacity" を使用して強度が一様なボリュームをレンダリングすると、そのボリュームの内側部分が "VolumeRendering" レンダリング スタイルより高い透明度で表示され、ボリュームの強度または輝度の勾配が見やすくなります。

    "Isosurface"

    IsosurfaceValue プロパティの値で指定されるボリュームの等値面を表示します。

    "SlicePlanes"

    3 つの直交スライス平面を表示します。

    ボリューム コンテンツの透明度マップ。[0, 1] の範囲の値をもつ n 要素の列ベクトルとして指定します。ベクトルの最大長は 256 です。RGB ボリュームを表示する場合、このオブジェクトは CIE 1976 L*a*b* 色空間のボクセルの輝度を使用して、透明度マップから透明度を割り当てます。AlphaData プロパティが空でない場合、Alphamap プロパティは効果がありません。

    グレースケール ボリューム コンテンツのカラーマップ。範囲 [0, 1] の値をもつ n 行 3 列の数値行列として指定します。色数 n の最大値は 256 です。RGB ボリュームを表示する場合、このプロパティは効果がありません。

    レンダリング時にオブジェクトと混合されるオーバーレイ データ。数値配列として指定します。オブジェクトは、RenderingStyle プロパティ値が "SlicePlanes""VolumeRendering"、または "GradientOpacity" の場合にのみオーバーレイを表示します。OverlayRenderingStyleOverlayColormap プロパティ、および OverlayAlphamap プロパティを変更すると、オーバーレイの外観を変更できます。

    オーバーレイのレンダリング スタイル。次の表のいずれかの値を指定します。

    説明
    "LabelOverlay"

    各ラベル付き領域の色と透明度に基づいてオーバーレイを表示します。このレンダリング スタイルを使用して、表示するデータの上にバイナリ セグメンテーションやセマンティック セグメンテーションの結果のような順序データを可視化します。

    "VolumeOverlay"

    各ボクセルに指定された色と透明度に基づいてオーバーレイを表示します。

    "GradientOverlay"

    各ボクセルの色と透明度に基づいてオーバーレイを表示します。現在のボクセルと、表示用の光線に沿った前のボクセルとの違いに基づいて、追加の透明度が適用されます。

    出力引数

    すべて折りたたむ

    ボリューム。Volume オブジェクトとして返されます。ボリュームの特性変更の詳細については、Volume Properties を参照してください。

    詳細

    すべて折りたたむ

    イベント

    特定のイベントが発生したときに Volume オブジェクトから通知を受け取るには、これらのイベントに対する "リスナー" を設定します。これらのイベントのいずれかが発生したときに実行するコールバック関数を指定できます。Volume オブジェクトがリスナーを通じてアプリケーションに通知するとき、イベントに固有のデータを返します。特定のイベントのイベント クラスを確認して何が返されたかを調べます。

    イベント名トリガーイベント データイベント属性
    ClippingPlanesChanging

    オブジェクトのクリッピング平面が対話的に移動している。クリッピング平面がプログラムで移動している場合、このイベントは実行されません。

    images.ui.graphics3d.events.ClippingPlanesChangedEventData

    NotifyAccess: private

    ListenAccess: public

    ClippingPlanesChangedオブジェクトのクリッピング平面が対話的な移動を停止している。クリッピング平面がプログラムで移動している場合、このイベントは実行されません。images.ui.graphics3d.events.ClippingPlanesChangedEventData

    NotifyAccess: private

    ListenAccess: public

    SlicePlanesChanging

    オブジェクトのスライス平面が対話的に移動している。スライス平面がプログラムで移動している場合、このイベントは実行されません。

    images.ui.graphics3d.events.SlicePlanesChangedEventData

    NotifyAccess: private

    ListenAccess: public

    SlicePlanesChangedオブジェクトのスライス平面が対話的な移動を停止している。スライス平面がプログラムで移動している場合、このイベントは実行されません。images.ui.graphics3d.events.SlicePlanesChangedEventData

    NotifyAccess: private

    ListenAccess: public

    バージョン履歴

    R2018b で導入

    すべて展開する