Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

drawcrosshair

カスタマイズ可能な十字 ROI の作成

R2019b 以降

説明

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

A horizontal line and a vertical line intersect to form a crosshair.

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

roi = drawcrosshairCrosshair オブジェクトを作成し、現在の座標軸で対話形式による ROI の描画を有効にします。十字 ROI は、座標軸の幅全体と高さ全体に対応する、垂直な 2 つのラインで構成されます。

この ROI を描画するには、カーソルを座標軸上に移動してクリックします。キーボード ショートカットやコンテキスト メニュー オプションを含む ROI の使用方法の詳細については、ヒントを参照してください。

roi = drawcrosshair(ax) は、ax で指定される座標軸で対話形式による ROI の配置を開始します。

roi = drawcrosshair(___,Name=Value) は、1 つ以上の名前と値の引数を使用して ROI の外観や動作をカスタマイズします。

すべて折りたたむ

この例では、対話形式およびプログラミングにより十字 ROI を作成する方法を示します。

対話形式による十字 ROI の作成

イメージをワークスペースに読み取って表示します。

figure
imshow("pears.png")

関数 drawcrosshair を対話的に使用してイメージ上に十字 ROI を作成します。イメージの任意の位置にカーソルを移動してクリックし、ROI を描画します。ROI の中心 (水平線が垂直線と交差する点) をクリックして、イメージ上に ROI を描画します。

h1 = drawcrosshair;

プログラムによる十字 ROI の作成

イメージをワークスペースに読み取って表示します。

figure
imshow("strawberries.jpg")

関数 drawcrosshair を使用してイメージ上に十字 ROI を作成します。名前と値の引数を使用して、ROI の初期位置を指定します。

h2 = drawcrosshair(Position=[100 100]);

プロパティを使用した十字 ROI の外観の変更

関数 drawcrosshair を使用して Crosshair オブジェクトを作成した後、オブジェクトのプロパティを設定して ROI の外観を変更できます。

StripeColor プロパティを設定すると、ストライプの色が緑で表示されます。

h2.StripeColor = "green";

イメージをワークスペースに読み取って表示します。

img = imread('coins.png');
hAx = gca;
imObj = imshow(img,'Parent',hAx);
imObj.Parent.Visible = 'on';

十字 ROI を作成します。

h = drawcrosshair('Parent',hAx,'Position',[50 50],'LineWidth',1,'Color','y');

オブジェクト関数 addlistener を使用して、ROI が移動したときに通知を受け取ります。イベントの発生時に実行するコールバック関数を指定します。十字 ROI を移動すると、次のコードはタイトルに十字の位置を表示し、その位置のピクセル値を ROI ラベルに表示します。

addlistener(h,'MovingROI',@(src,data)displayInfo(src,data,hAx,img));

これは、十字 ROI で指定されたピクセルの値を表示するコールバック関数です。

function displayInfo(src,data,hAx,img)
pos = ceil(data.CurrentPosition);
pixval = img(pos(2),pos(1));
src.Label = mat2str(pixval);
title(mat2str(pos));
end

入力引数

すべて折りたたむ

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

名前と値の引数

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

例: roi = drawcrosshair(Color="y") は、黄色の Crosshair オブジェクトを作成します。

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

例: roi = drawcrosshair("Color","y") は、黄色の Crosshair オブジェクトを作成します。

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"描画領域は現在の座標軸の範囲です (既定の設定)。
"unlimited"描画領域には境界がなく、座標軸の範囲を超えて ROI を描画したりドラッグしたりできます。
[x,y,w,h]描画領域は、(x,y) を基準として幅 w と高さ h まで広がる四角形の領域に制限されます。

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

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

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

説明
'all'ROI は完全に対話形式で操作できます。
'none'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 の境界線の幅。ポイント単位の正の数値として指定します。既定値はスクリーン ピクセルに対する点の数の 3 倍です。つまり、既定では境界線の幅は 3 ピクセルになります。

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

ROI の位置。[x y] の形式の 1 行 2 列の数値ベクトルとして指定します。値 x と y は、十字 ROI の水平線が垂直線と交差する位置の座標を指定します。

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、または構造体を指定できます。drawcrosshair オブジェクトはこのデータを使用しません。

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

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

出力引数

すべて折りたたむ

十字 ROI。Crosshair オブジェクトとして返されます。

ヒント

  • 次の表に、十字 ROI を使用した一般的なタスクの実行方法を示します。

    タスク説明
    描画操作をキャンセルする。ROI の描画を開始し、マウスを離す前に Esc キーを押します。関数は Position プロパティが空の有効な ROI オブジェクトを返します。
    ROI を移動する。ROI 上にポインターを配置します。ポインターが花形に変わります。クリック アンド ドラッグして ROI を移動します。
    ROI を削除する。ROI 上にポインターを配置し、右クリックしてそのコンテキスト メニューを表示します。メニューから [十字形の削除] を選択します。関数 delete を使用して ROI を削除することもできます。
  • 関数 drawcrosshair は、Crosshair オブジェクトを作成します。オブジェクトを作成した後に、これらのオブジェクト機能を使用して ROI の位置、外観、および動作を変更できます。

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

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

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

    roi.Color = 'yellow'

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

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

    イベント リスナーを Crosshair オブジェクトと共に使用する例については、十字 ROI で指定されたピクセルの値の表示を参照してください。

バージョン履歴

R2019b で導入

すべて展開する