Main Content

sliceViewer

イメージ スライスの参照

説明

sliceViewer オブジェクトは、グレースケール ボリュームと RGB ボリュームの個々のスライスを表示します。スライダーを使用することで、どのスライスを表示するかを制御できます。

sliceViewer オブジェクトを開くと、sliceDirection で指定された方向のスタックにある中央のイメージが表示されます。スライダーを使用してボリューム内を移動し、個々のスライスを表示します。

sliceViewer オブジェクトは、その外観と動作のカスタマイズに使用できるプロパティ、オブジェクト関数、およびイベントをサポートしています。sliceViewer オブジェクトは、スライダーの移動などの特定のイベントが発生したときに通知を送信できます。詳細については、イベントを参照してください。

メモ

既定では、表示されたスライス内でマウスをクリック アンド ドラッグすると、明度とコントラストが対話的に変化します。"ウィンドウ/レベル" と呼ばれる手法です。マウスを左から右に横方向にドラッグするとコントラストが変わります。マウスを上下に縦方向にドラッグすると明度が変わります。Ctrl キーを押しながらマウスをクリック アンド ドラッグすると、変化の速度が速くなります。Shift キーを押しながらマウスをクリック アンド ドラッグすると、変化の速度が遅くなります。これらのキーはクリック アンド ドラッグする前に押してください。この動作を制御するには、DisplayRangeInteraction プロパティを使用します。

作成

説明

sliceViewer(V) は、Figure にグレースケール ボリュームまたは RGB ボリューム V を表示します。Figure にはスライダーが含まれていて、このスライダーを使用してボリュームの個々のスライスを表示できます。

sliceViewer(___,Name,Value) は、名前と値のペアの引数を使用してプロパティを設定します。複数の名前と値のペアを指定できます。各プロパティ名を一重引用符で囲みます。

例: sliceViewer(V,'Colormap',cmap) は、sliceViewer オブジェクトを作成し、ボリュームの表示に使用するカラーマップを指定します。

sv = sliceViewer(___) は、ボリュームの可視化を制御するために使用できるプロパティを持つ sliceViewer オブジェクト sv を返します。前のいずれかの構文の入力引数を使用します。

入力引数

すべて展開する

入力ボリューム。m x n x p x c の数値配列として指定します。グレースケール ボリュームの場合、c は 1 です。RGB ボリュームの場合、c は 3 です。RGB ボリュームには、クラス uint8uint16single、または double のみを指定できます。

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

プロパティ

すべて展開する

イメージ スタックのカラーマップ。範囲 [0 1] の値をもつ m 行 3 列の数値配列として指定します。V が RGB イメージ スタックの場合、Colormap プロパティは効果がありません。

イメージ スタックの表示範囲。[low high] の形式の 2 要素ベクトルとして指定します。値 low (および low より小さい任意の値) は黒として表示されます。値 high (および high より大きい任意の値) は白として表示されます。中間の値は、既定数のグレー レベルを使用して、中間のグレー階調で表示されます。空行列 ([]) を指定すると、sliceViewer は既定値を使用します。RGB イメージ スタックを指定した場合、DisplayRange は効果がありません。

表示範囲の対話型制御の有効化。次のいずれかの値を指定します。対話型動作の詳細については、イベントを参照してください。

説明
'on' (グレースケール強度ボリュームの場合の既定値)座標軸上でマウスを左クリックしてドラッグすることにより、グレースケール イメージ スタックの表示範囲を制御します。
'off' (logical ボリュームおよび RGB ボリュームの場合の既定値)表示範囲の対話性なし。

sliceViewer オブジェクトの親。uipanel のハンドルとして指定するか、figure コマンドまたは uifigure コマンドを使用して作成した Figure のハンドルとして指定します。親を指定しない場合、sliceViewer オブジェクトの親は gcf です。

ボリュームを再スケーリングするために使用する倍率。1 行 3 列の正の数値ベクトルとして指定します。配列内の値は、x、y、および z 方向に適用される倍率に対応します。

イメージ スタックの参照方向。1 行 3 列の logical ベクトルまたは次の表のいずれかの文字ベクトルとして指定します。

文字ベクトルlogical ベクトル説明
'X' [1 0 0]X 方向の参照
'Y'[0 1 0]Y 方向の参照
'Z' (既定の設定)[0 0 1]Z 方向の参照

ボリュームから表示されるスライスのインデックス。正の数値スカラーとして指定します。

オブジェクト関数

addlistenerイベント ソースにバインドされたイベント リスナーの作成
getAxesHandleスライス ビューアーの座標軸のハンドルの取得

すべて折りたたむ

MRI データをワークスペースに読み込みます。

load mristack

スライスを表示するためのカスタム カラーマップを指定して、スライス ビューアーでデータを表示します。スライス ビューアーによってイメージのスタックが開き、中央に表示されます。別のスライスを表示するには、スライダーを使用します。

cmap = parula(256);
s = sliceViewer(mristack,'Colormap',cmap);

MRI データをワークスペースに読み込みます。

load mristack

スライス ビューアーでデータを表示します。

s = sliceViewer(mristack);

表示されているスライスを含む座標軸のハンドルを取得します。

hAx = getAxesHandle(s);

作成する GIF ファイルの名前を指定します。

filename = 'animatedSlice.gif';

スライス番号の配列を作成します。

sliceNums = 1:21;

スライス番号についてループ処理し、表示されている各スライスのイメージを作成します。イメージを GIF ファイルに書き込みます。

for idx = sliceNums
    % Update slice number
    s.SliceNumber = idx;
    % Use getframe to capture image
    I = getframe(hAx);
    [indI,cm] = rgb2ind(I.cdata,256);
    % Write frame to the GIF file
    if idx == 1
        imwrite(indI,cm,filename,'gif','Loopcount',inf,'DelayTime', 0.05);
    else
        imwrite(indI,cm,filename,'gif','WriteMode','append','DelayTime', 0.05);
    end
end

イメージのスタックをワークスペースに読み込みます。

load mristack

スライスを表示するためのカスタム カラーマップを指定して、スライス ビューアーでデータを表示します。スライス ビューアーによってイメージのスタックが開き、中央に表示されます。別のスライスを表示するには、スライダーを使用します。

cmap = parula(256);
s = sliceViewer(mristack,'Colormap',cmap);

sliceViewer オブジェクトのスライダー移動中とスライダー移動完了という、2 つのスライダー イベントのリスナーを設定します。スライダーを移動すると、スライス ビューアーは、それらのイベントの通知を送信し、指定されたコールバック関数を実行します。

addlistener(s,'SliderValueChanging',@allevents);
addlistener(s,'SliderValueChanged',@allevents);

このコールバック関数 allevents を使用して、各イベントの名前とスライダーの現在の位置を表示します。

function allevents(src,evt)
    evname = evt.EventName;
    switch(evname)
        case{'SliderValueChanging'}
            disp(['Slider value changing event: ' mat2str(evt.CurrentValue)]);
        case{'SliderValueChanged'}
            disp(['Slider value changed event: ' mat2str(evt.CurrentValue)]);
    end
end

詳細

すべて展開する

バージョン履歴

R2019b で導入