Main Content

orthosliceViewer

グレースケール ボリュームまたは RGB ボリュームの直交スライスの参照

説明

orthosliceViewer オブジェクトは、ボリュームの 3 つの直交ビュー (x、y、および z 次元に沿ったビュー) でボリューム イメージ データを表示します。

orthosliceViewer を使用して、ボリュームの個々のスライスを確認します。orthosliceViewer が開き、各次元の中央のスライスが表示されます。イメージ スタックの各ビューには、十字が含まれており、これを使用してイメージ スタックの異なるスライスを表示できます。十字はリンクされているため、1 つを動かすと、関連するビュー内の十字も動きます。

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

メモ

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

作成

説明

orthosliceViewer(V) は、ボリューム V を Figure に表示します。

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

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

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

入力引数

すべて展開する

入力ボリューム。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 より大きい任意の値) は白として表示されます。中間の値は、既定数のグレー レベルを使用して、中間のグレー階調で表示されます。空行列 ([]) を指定すると、orthosliceViewer は既定値を使用します。RGB ボリュームを指定した場合、DisplayRange は効果がありません。

表示範囲の対話型制御。次のいずれかの値を指定します。RGB イメージ スタックを指定した場合、このプロパティは効果がありません。この機能の使用方法の詳細については、イベントを参照してください。

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

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

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

表示されるイメージ スライスのインデックス。1 行 3 列の非負の数値配列として指定します。orthosliceViewer は、YZXZ、および XY ビュー内の [x,y,z] インデックスにおいて対応するスライスを表示します。

十字のプロパティ

十字の色。RGB 3 成分、色の名前、または色の省略名として指定します。

RGB 3 成分を使用すると、任意の色を指定できます。RGB 3 成分は、色の赤、緑、青の成分の強度を指定する 3 つの要素から成る行ベクトルです。強度は [0,1] の範囲でなければなりません。

いくつかの一般的な色については、色の名前を string スカラーまたは文字ベクトルとして指定できます。次の表に、名前付きの色のオプション、およびそれと等価な RGB 3 成分を示します。

色の名前省略名RGB 3 成分外観
'red''r'[1 0 0]

A rectangle colored pure red

'green''g'[0 1 0]

A rectangle colored pure green

'blue''b'[0 0 1]

A rectangle colored pure blue

'cyan' 'c'[0 1 1]

A rectangle colored pure cyan

'magenta''m'[1 0 1]

A rectangle colored pure magenta

'yellow''y'[1 1 0]

A rectangle colored pure yellow

'black''k'[0 0 0]

A rectangle colored black

'white''w'[1 1 1]

A rectangle colored white

以下に、MATLAB® がさまざまなタイプのプロットで使用する既定の色の RGB 3 成分を示します。

RGB 3 成分外観
[0 0.4470 0.7410]

A rectangle colored medium blue

[0.8500 0.3250 0.0980]

A rectangle colored reddish-orange

[0.9290 0.6940 0.1250]

A rectangle colored dark yellow

[0.4940 0.1840 0.5560]

A rectangle colored dark purple

[0.4660 0.6740 0.1880]

A rectangle colored light green

[0.3010 0.7450 0.9330]

A rectangle colored light blue

[0.6350 0.0780 0.1840]

A rectangle colored dark red

例: 'CrosshairColor','r'

例: 'CrosshairColor','green'

例: 'CrosshairColor',[0 0.4470 0.7410]

リンクされている十字オブジェクトの状態。次の表のいずれかの値で指定します。

説明
'on'十字が表示され、対話的に操作できます。
'inactive'十字が表示されますが、対話的な操作はできません。
'off'十字は表示されません。

十字のラインの幅。正の数値スカラーとしてポイント単位で指定します。既定値はスクリーン ピクセルに対する点の数です。

十字ストライプの色。RGB 3 成分、色の名前、色の省略名、または 'none' として指定します。'none' を指定した場合、十字は CrosshairColor プロパティで指定された単色になります。そうでない場合、十字はストライプ状になります。このとき、このプロパティおよび CrosshairColor プロパティで指定された色が交互に現れます。

RGB 3 成分を使用すると、任意の色を指定できます。RGB 3 成分は、色の赤、緑、青の成分の強度を指定する 3 つの要素から成る行ベクトルです。強度は [0,1] の範囲でなければなりません。

いくつかの一般的な色については、色の名前を string スカラーまたは文字ベクトルとして指定できます。次の表に、名前付きの色のオプション、およびそれと等価な RGB 3 成分を示します。

色の名前省略名RGB 3 成分外観
'red''r'[1 0 0]

A rectangle colored pure red

'green''g'[0 1 0]

A rectangle colored pure green

'blue''b'[0 0 1]

A rectangle colored pure blue

'cyan' 'c'[0 1 1]

A rectangle colored pure cyan

'magenta''m'[1 0 1]

A rectangle colored pure magenta

'yellow''y'[1 1 0]

A rectangle colored pure yellow

'black''k'[0 0 0]

A rectangle colored black

'white''w'[1 1 1]

A rectangle colored white

以下に、MATLAB がさまざまなタイプのプロットで使用する既定の色の RGB 3 成分を示します。

RGB 3 成分外観
[0 0.4470 0.7410]

A rectangle colored medium blue

[0.8500 0.3250 0.0980]

A rectangle colored reddish-orange

[0.9290 0.6940 0.1250]

A rectangle colored dark yellow

[0.4940 0.1840 0.5560]

A rectangle colored dark purple

[0.4660 0.6740 0.1880]

A rectangle colored light green

[0.3010 0.7450 0.9330]

A rectangle colored light blue

[0.6350 0.0780 0.1840]

A rectangle colored dark red

例: 'CrosshairStripeColor','r'

例: 'CrosshairStripeColor','green'

例: 'CrosshairStripeColor',[0 0.4470 0.7410]

オブジェクト関数

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

すべて折りたたむ

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

load(fullfile(toolboxdir('images'),'imdata','BrainMRILabeled','images','vol_001.mat'));

カスタム カラーマップを作成します。

cmap = parula(256);

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

s = orthosliceViewer(vol,'Colormap',cmap)
s = 
  orthosliceViewer with properties:

               SliceNumbers: [121 121 78]
             CrosshairColor: [1 1 0]
         CrosshairLineWidth: 1
       CrosshairStripeColor: 'none'
            CrosshairEnable: 'on'
                     Parent: [1×1 Panel]
                   Colormap: [256×3 double]
               DisplayRange: [0 2239]
               ScaleFactors: [1 1 1]
    DisplayRangeInteraction: 'on'

MRI データを読み込み、直交スライス ビューアーで表示します。

load(fullfile(toolboxdir('images'),'imdata','BrainMRILabeled','images','vol_001.mat'));
s = orthosliceViewer(vol);

スライスを含む座標軸のハンドルを取得します。

[hXYAxes, hYZAxes, hXZAxes] = getAxesHandles(s);

可視性を向上させるために十字をオフにします。

set(s,'CrosshairEnable','off');

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

filename = 'animatedYZSlice.gif';

所要の方向のスライス番号の配列を作成します。YZ 方向を考えます。

sliceNums = 1:240;

ループ処理を使用して、指定したスライス位置でイメージを作成します。

for idx = sliceNums
    % Update X slice number to get YZ Slice.
    s.SliceNumbers(1) = idx;
  
    % Use getframe to capture image.
    I = getframe(hYZAxes);
    [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

アニメーション GIF を表示します。

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

load(fullfile(toolboxdir('images'),'imdata','BrainMRILabeled','images','vol_001.mat'));

スライスを表示するためのカスタム カラーマップを作成します。

cmap = parula(256);

直交スライス ビューアーでイメージ スタックを表示します。

os = orthosliceViewer(vol,'Colormap',cmap);

直交スライス ビューアーの十字の移動に関する 2 つのイベントのリスナーを設定します。十字を移動すると、直交スライス ビューアーは、それらのイベントの通知を送信し、指定されたコールバック関数を実行します。

addlistener(os,'CrosshairMoving',@allevents);
addlistener(os,'CrosshairMoved',@allevents);

コールバック関数 allevents は、各イベントの名前を十字の以前の位置と現在の位置と共に表示します。

function allevents(src,evt)
evname = evt.EventName;
    switch(evname)
        case{'CrosshairMoved'}
            disp(['Crosshair moved previous position: ' mat2str(evt.PreviousPosition)]);
            disp(['Crosshair moved current position: ' mat2str(evt.CurrentPosition)]);
        case{'CrosshairMoving'}
            disp(['Crosshair moving previous position: ' mat2str(evt.PreviousPosition)]);
            disp(['Crosshair moving current position: ' mat2str(evt.CurrentPosition)]);
    end
 end

詳細

すべて展開する

バージョン履歴

R2019b で導入