Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

drawcuboid

カスタマイズ可能な直方体 ROI の作成

説明

関数 drawcuboid は、直方体の関心領域 (ROI) の形状と位置を指定する Cuboid オブジェクトを作成します。ROI は、マウスを使ってイメージの上に ROI を描画することで対話形式で作成することも、名前と値の引数を使用してプログラムで作成することもできます。ROI の初期状態の外観と動作を指定することもできます。

Blue Cuboid ROI drawn over a 3-D region in a point cloud.

ROI を作成した後に、オブジェクト プロパティ、オブジェクト関数、およびイベント通知を使用して、その ROI の形状、位置、外観、および動作をカスタマイズできます。これらの機能の使用方法の詳細については、ヒントを参照してください。

roi = drawcuboidCuboid ROI オブジェクトを作成し、現在の座標軸で対話形式による直方体の関心領域 (ROI) の描画を有効にします。

この ROI を描画するには、関数 drawcuboid を呼び出します。この関数は、ボリュームの中央に配置された直方体 ROI を描画します。ポインターをイメージ上に移動します。カーソルが花形に変わります。ROI をイメージ上の任意の位置に移動します。ROI の描画を終了するには、マウス ボタンをクリックします。キーボード ショートカットやコンテキスト メニュー オプションを含む ROI の使用方法の詳細については、ヒントを参照してください。

roi = drawcuboid(ax)Cuboid ROI オブジェクトを作成し、ax で指定された座標軸で対話形式による直方体の関心領域 (ROI) の描画を有効にします。

roi = drawcuboid(S)Cuboid ROI オブジェクトを作成し、S で指定された Scatter オブジェクトでの対話形式による直方体の関心領域 (ROI) の描画を有効にします。対話型の配置中に、直方体は、Scatter オブジェクトで定義される最も近い点にスナップされます。

roi = drawcuboid(___,Name,Value) は、1 つ以上の名前と値のペアを使用して ROI の外観を変更します。

すべて折りたたむ

3 次元散布図を作成し、そのデータ上に直方体 ROI を対話的に定義します。

3 次元散布データのベクトルを定義します。

[x,y,z] = sphere(16);
X = [x(:)*.5 x(:)*.75 x(:)];
Y = [y(:)*.5 y(:)*.75 y(:)];
Z = [z(:)*.5 z(:)*.75 z(:)];

各マーカーのサイズと色を指定します。

S = repmat([1 .75 .5]*10,numel(x),1);
C = repmat([1 2 3],numel(x),1);

3 次元散布図を作成します。view を使用して Figure 内の座標軸の角度を変更します。

figure
hScatter = scatter3(X(:),Y(:),Z(:),S(:),C(:),'filled'); 
view(-60,60);

座標軸への直方体 ROI の配置を開始します。ROI は、散布図で定義される最も近い点にスナップされます。対話型の配置中に、スクロール ホイールを使用して直方体のサイズを調整します。

drawcuboid(hScatter);

3 次元散布データのベクトルを定義します。

[x,y,z] = sphere(16);
X = [x(:)*.5 x(:)*.75 x(:)];
Y = [y(:)*.5 y(:)*.75 y(:)];
Z = [z(:)*.5 z(:)*.75 z(:)];

各マーカーのサイズと色を指定します。

S = repmat([1 .75 .5]*10,numel(x),1);
C = repmat([1 2 3],numel(x),1);

3 次元散布図を作成し、ビューを使用して Figure 内の座標軸の角度を変更します。

figure
hScatter = scatter3(X(:),Y(:),Z(:),S(:),C(:),'filled'); 
view(-60,60);

座標軸への直方体の配置を開始します。直方体は散布図の最も近い点にスナップされます。対話型の配置中に、スクロール ホイールを使用して直方体のサイズを調整します。

roi = drawcuboid(hScatter,'Color','r'); 

ROI 移動イベントのリスナーを設定します。移動すると、ROI は、それらのイベントの通知を送信し、指定されたコールバック関数を実行します。

addlistener(roi,'MovingROI',@allevents);
addlistener(roi,'ROIMoved',@allevents);

コールバック関数 allevents は ROI の以前の位置と現在の位置を表示します。

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

入力引数

すべて折りたたむ

ROI の親。Axes オブジェクトまたは UIAxes オブジェクトとして指定します。重要な制限など UIAxes で ROI を使用する方法の詳細については、App Designer を使って作成したアプリでの ROI の使用を参照してください。

散布図。Scatter オブジェクトとして指定します。Scatter オブジェクトの親が ROI の親になります。詳細については、scatter を参照してください。

名前と値の引数

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

R2021a より前では、コンマを使用して名前と値の各ペアを区切り、Name を引用符で囲みます。

例: 'Color','y' は、黄色の Cuboid オブジェクトを作成します

ROI の色。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

例: 'Color','r'

例: 'Color','green'

例: 'Color',[0 0.4470 0.7410]

ROI を右クリックしたときに表示されるコンテキスト メニュー。ContextMenu オブジェクトとして指定します。関数 uicontextmenu を使用してコンテキスト メニュー プロパティを設定することによって、カスタム コンテキスト メニューを作成できます。

ROI を削除するオプションをコンテキスト メニューに表示するかどうか。数値または logical の 1 (true) か 0 (false) として指定します。値が true の場合、コンテキスト メニューを使用して ROI を対話形式で削除できます。値が false の場合、ROI を削除するコンテキスト メニュー オプションは無効になります。

どちらの場合も、コンテキスト メニューではなく関数 delete を使用して ROI を削除できます。

ROI を対話形式で配置できる座標軸の領域。次の表のいずれかの値で指定します。

説明
'auto'

描画領域は、現在の座標軸の範囲と ROI を囲む境界ボックスのスーパーセットです。

'unlimited'描画領域には境界がなく、座標軸の範囲を超えて ROI を描画したりドラッグしたりできます。
[x,y,z,w,h,d]描画領域は、(x,y,z) を基準として幅 w、高さ h、奥行 d を持つ領域に制限されます。

ROI エッジの透明度。範囲 [0, 1] の数値として指定します。1 に設定すると、ROI エッジは完全に不透明になります。0 に設定すると、ROI エッジは完全に透明になります。

ROI 面の透明度。[0, 1] の範囲の数値として指定します。値が 1 の場合、ROI 面は完全に不透明になります。値が 0 の場合、ROI 面は完全に透明になります。

マウス ポインターの直下にある ROI 面の透明度。[0, 1] の範囲の数値として指定するか、面の透明度に変更がないことを示す 'none' として指定します。1 に設定すると、マウス ポインターの下にある面は完全に不透明になります。0 に設定すると、面は完全に透明になります。

マウス ポインターの直下にある ROI 面の色。RGB 3 成分、色の名前、色の省略名、または 'none' として指定します。値 'none' が指定された場合、カーソルを置いても面の色は変化しません。(カーソルを置くとは、直方体 ROI の面上にポインターを配置することを意味します)。ROI の面上にカーソルを置いていない場合、Color の値によって面の色が決まります。

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

例: 'FaceColorOnHover','r'

例: 'FaceColorOnHover','green'

例: 'FaceColorOnHover',[0.8500 0.3250 0.0980]

親の Children プロパティでの ROI ハンドルの可視性。次の表のいずれかの値として指定します。

説明
'on'オブジェクト ハンドルは常に参照できます (既定の設定)。
'off'オブジェクト ハンドルは常に参照できません。
'callback' オブジェクト ハンドルはコールバックまたはコールバックによって呼び出された関数内から参照できますが、コマンド ラインから呼び出された関数内からは参照できません。

ROI の対話性。次の表のいずれかの値で指定します。

説明
'all'ROI は完全に対話形式で操作できます。
'none'ROI は対話形式で操作できず、ドラッグ ポイントが表示されません。
'translate'ROI は描画領域内で平行移動できます。

ROI ラベル。文字ベクトルまたは string スカラーとして指定します。既定では、ROI にラベルはありません ('')。

テキストの背景の透明度。[0, 1] の範囲の数値として指定します。1 に設定すると、テキストの背景は完全に不透明になります。0 に設定すると、テキストの背景は完全に透明になります。

ラベル テキストの色。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

例: 'LabelTextColor','r'

例: 'LabelTextColor','green'

例: 'LabelTextColor',[0 0.4470 0.7410]

ラベルの可視性。次のいずれかの値として指定します。

説明
'on'ROI が表示されている場合、ラベルは表示されます。
'hover'マウスのカーソルを ROI 上に置いている場合のみ、ラベルは表示されます。
'off'ラベルは表示されません。

ROI の境界線の幅。ポイント単位の正の数値として指定します。

ROI の親。Axes または UIAxes オブジェクトとして指定します。重要な制限など UIAxes で ROI を使用する方法の詳細については、App Designer を使って作成したアプリでの ROI の使用を参照してください。

直方体の位置。[xmin, ymin, zmin, width, height, depth] の形式の 1 行 6 列の数値ベクトルとして指定します。

直方体の回転可能性。次の表のいずれかの値として指定します。

説明
'all'ROI は完全に回転できます。
'x' ROI は x 軸を中心としてのみ回転できます。
'y'ROI は y 軸を中心としてのみ回転できます。
'z'ROI は z 軸を中心としてのみ回転できます。
'none'ROI は回転できません。

ROI の回転の角度。[x_angle y_angle z_angle] の形式の 1 行 3 列の数値ベクトルとして指定します。回転角度は、x 軸、y 軸、および z 軸についてそれぞれ測定した角度です。回転は、ROI の重心を中心として z、y、x の順に適用されます。

RotationAngle の値は、Position の値には影響を与えません。Position は回転前の直方体を表します。

スクロール ホイールによる ROI のサイズの調整可能性。次の表のいずれかの値として指定します。

説明
'allresize'スクロール ホイールは、ROI のすべての次元に影響を与えます。
'xresize' スクロール ホイールは x 次元にのみ影響を与えます。
'yresize' スクロール ホイールは y 次元にのみ影響を与えます。
'zresize' スクロール ホイールは z 次元にのみ影響を与えます。
'none'スクロール ホイールの効果がありません。

ROI の選択状態。数値または logical の 0 (false) か 1 (true) として指定します。

選択したときの ROI の色。RGB 3 成分、色の名前、色の省略名、または 'none' として指定します。'none' を指定した場合、Color の値はすべての状態 (選択または未選択) の ROI の色を定義します。

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

例: 'SelectedColor','r'

例: 'SelectedColor','green'

例: 'SelectedColor',[0 0.4470 0.7410]

ROI ストライプの色。RGB 3 成分、色の名前、色の省略名、または 'none' として指定します。'none' を指定した場合、ROI のエッジは Color で指定された単色になります。そうでない場合、ROI のエッジはストライプ状になります。このとき、Color および StripeColor で指定された色が交互に現れます。

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

例: 'StripeColor','r'

例: 'StripeColor','green'

例: 'StripeColor',[0 0.4470 0.7410]

ROI に関連付けるタグ。文字ベクトルまたは string スカラーとして指定します。関数 findobj を使用してオブジェクトの階層内の ROI オブジェクトを見つけるには、このタグ値を使用します。

ROI に関連付けるデータ。任意の MATLAB データとして指定します。たとえば、スカラー、ベクトル、行列、cell 配列、string、文字配列、table、または構造体を指定できます。drawcuboid オブジェクトはこのデータを使用しません。

ROI の可視性。'on''off'、または数値か logical の 1 (true) か 0 (false) として指定します。値 'on' は true と等価であり、'off' は false と等価です。この値は、OnOffSwitchState 型の on/off の logical 値として格納されます。

説明
'on'ROI を表示します。
'off'ROI を削除せずに非表示にします。ただし、非表示の ROI のプロパティにアクセスすることはできます。

出力引数

すべて折りたたむ

直方体 ROI。Cuboid オブジェクトとして返されます。

ヒント

  • ROI は、キーボード ショートカットを含む以下の対話性をサポートします。

    動作キーボード ショートカット
    描画中に ROI のサイズを微調整する。スクロール ホイールを使用して、描画中に ROI のサイズを少し変更します。
    ROI の描画を中断する。Esc キーを押します。関数は Position フィールドが空の有効な ROI オブジェクトを返します。
    ROI をサイズ変更 (形状変更) する。

    ポインターを直方体のいずれかの表示面に配置して、その面をクリック アンド ドラッグします。面を選択するために直方体を回転させなければならない場合があります。

    Shift キーを押したままマウスをドラッグすると、ROI は移動しますが、どの次元も変化しません。

    ROI を移動する。

    ポインターを ROI のいずれかの表示面に配置して、Shift キーを押したままクリック アンド ドラッグします。

    ROI の表示面にポインターを配置し、右クリックして [次元をロック] を選択します。クリック アンド ドラッグして ROI を移動します。

    ROI を削除する。ROI 上にポインターを配置し、右クリックしてそのコンテキスト メニューを表示します。メニューから [直方体を削除] を選択します。オブジェクト関数 delete を使用して ROI を削除することもできます。
  • 関数 drawcuboid は、Cuboid オブジェクトを作成します。オブジェクトを作成した後に、これらのオブジェクト機能を使用して ROI の形状、位置、外観、および動作を変更できます。

    Capabilityサポート
    オブジェクト プロパティ

    ROI オブジェクトには、ROI の形状、位置、外観、および動作を指定するプロパティが用意されています。ROI オブジェクトを作成した後に、ドット表記を使用してプロパティを変更します。

    たとえば、roi の色を黄色に変更するには、その Color プロパティを設定します。

    roi.Color = 'yellow'

    オブジェクト関数ROI オブジェクトには、ROI を操作するオブジェクト関数が用意されています。たとえば、ROI の作成後、MATLAB コマンド ラインを一時停止する場合は、関数 wait を使用します。
    イベント通知

    ROI オブジェクトは、ROI に対してクリックや移動などの特定のイベントが発生したときに、そのイベントをコードに通知することができます。イベント通知を受け取るには、"リスナー" を設定します。ROI がリスナーを通じてアプリケーションに通知するとき、イベントに固有のデータを返します。たとえば、ROIMoved イベントの場合、ROI オブジェクトはその以前の位置と現在の位置を返します。イベントが発生したときに実行されるコールバック関数を指定できます。

    イベント リスナーを Cuboid オブジェクトと共に使用する例については、直方体 ROI イベントのリスナーの設定を参照してください。

バージョン履歴

R2019a で導入

すべて展開する