Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

Crosshair

説明

Crosshair オブジェクトは十字の関心領域 (ROI) です。

ROI を描画するには、カーソルをイメージ上に配置し、マウスをクリックして ROI を描画します。キーボード ショートカットを含む、この ROI の使用方法の詳細は、ヒントを参照してください。

作成

説明

Crosshair オブジェクトを作成するには、作成関数 images.roi.Crosshair を使用します。オブジェクトを作成した後、オブジェクト関数 draw を呼び出して ROI の描画を開始します。便宜上、関数 drawcrosshair を使用して Crosshair オブジェクトを作成することもできます。関数 drawcrosshair は ROI オブジェクトを作成し、オブジェクト関数 draw を自動的に呼び出します。

roi = images.roi.Crosshair は、既定のプロパティを使用して Crosshair オブジェクトを作成します。

roi = images.roi.Crosshair(ax) は、ax で指定される座標軸に ROI を作成します。

roi = images.roi.Crosshair(___,Name,Value) は、1 つ以上の名前と値のペアを使用してプロパティを設定します。たとえば、images.roi.Crosshair('Color','y') は十字 ROI の色を黄色に設定します。各プロパティ名を引用符で囲みます。

入力引数

すべて展開する

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

プロパティ

すべて展開する

ROI の色。MATLAB® ColorSpec (Color Specification) として指定します。

例: 'green'

例: 'g'

例: [0 1 0]

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

コンテキスト メニューを使用して対話的に ROI を削除可能。true または false を指定します。値が true (既定の設定) の場合、コンテキスト メニューを使用して ROI を削除できます。このコンテキスト メニュー項目を無効にするには、このプロパティを false に設定します。値を 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 にラベルはありません ('')。

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

説明
'on'ROI が表示されていて Label プロパティが空でない場合、ラベルは表示されます (既定の設定)。
'hover'マウスのカーソルを ROI 上に置いている場合のみ、ラベルは表示されます。
'off'ラベルは表示されません。

ROI のエッジの幅。ポイント単位の正の数値スカラーを指定します。既定値はスクリーン ピクセルに対する点の数の 3 倍です。

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

ROI の位置。[x y] 形式の 1 行 2 列の数値配列として指定します。値 xy は、十字 ROI の水平線が垂直線と交差する位置の x 座標と y 座標を指定します。ROI を描画または移動すると、この値は自動的に変化します。

ROI の選択状態。論理値 true または false を指定します。このプロパティは対話形式で設定することもできます。たとえば、ROI をクリックすると、その ROI が選択され、このプロパティが true に設定されます。同様に、Ctrl キーを押したまま ROI をクリックすると、ROI は選択解除され、このプロパティの値が false に設定されます。

選択したときの ROI の色。MATLAB ColorSpec (Color Specification) として指定します。強度は [0,1] の範囲でなければなりません。'SelectedColor''none' に設定された場合、Color の値はすべての状態 (選択または未選択) の ROI の色を定義します。

例: 'green'

例: 'g'

例: [0 1 0]

ROI ストライプの色。MATLAB ColorSpec (Color Specification) 値を指定します。既定の設定では、ROI のエッジは単色で塗りつぶされます。StripeColor を指定した場合、ROI エッジはストライプ状になります。縞模様は、'Color' で指定した値とこの値の組み合わせで構成されます。

例: 'green'

例: 'g'

例: [0 1 0]

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

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

ROI の可視性。'on' または 'off'、もしくは数値か logical の 1 (true) または 0 (false) として指定します。値 'on' は true と等価であり、'off' は false と等価です。そのため、このプロパティの値は logical 値として使用できます。この値は、matlab.lang.OnOffSwitchState 型の on/off の logical 値として格納されます。

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

オブジェクト関数

addlistenerイベント ソースにバインドされたイベント リスナーの作成
beginDrawingFromPoint指定された点からの ROI の描画の開始
bringToFrontAxes のスタックの順番の最前面への ROI の移動
draw対話形式による ROI の描画の開始
waitROI の操作が完了するまで MATLAB コマンド ラインをブロック

すべて折りたたむ

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

I = imread('baby.jpg');
figure;
imshow(I)

プログラムによって十字 ROI をイメージ上に配置します。ROI の位置を指定する場合、座標軸を指定しなければなりません。

h = images.roi.Crosshair(gca,'Position',[100,100]);

イメージをワークスペースに読み取ります。

img = imread('coins.png');

イメージを Figure に表示します。

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

イメージ上に十字 ROI を作成します。

h = images.roi.Crosshair('Parent',hAx,'Position',[50 50],'LineWidth',1,'Color','y');

イメージ上で ROI が移動したときに通知を取得するようにリスナーを設定します。次のコードは十字の下にあるピクセルの値を表示するので、イメージを引数としてリスナーに渡さなければなりません。

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

'MovingROI' イベントが発生したときにリスナーによって呼び出される関数 displayInfo を定義します。

function displayInfo(~,data,hAx,img)
pos = ceil(data.CurrentPosition);
title(hAx,['Pixel Value: ',num2str(img(pos(2),pos(1)))])
end

十字 ROI を対話的に移動するときのタイトル付きイメージの外観。

詳細

すべて展開する

ヒント

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

    タスク説明
    描画操作をキャンセルする。Esc キーを押します。関数は Position フィールドが空の有効な ROI オブジェクトを返します。
    ROI を移動する。カーソルを十字 ROI の中心 (2 本のラインが交差する位置) に配置し、十字をクリック アンド ドラッグします。十字 ROI を移動するもう 1 つの方法は、2 本のラインのいずれかの上で任意の位置にカーソルを配置してクリックすることです。十字の他方のラインが十字の新しい中心位置にジャンプします。
    ROI を削除する。カーソルを ROI 上に配置し、右クリックして表示されたコンテキスト メニューから [十字形の削除] を選択します。オブジェクト関数 delete を使用して、プログラムによって ROI を削除することもできます。
  • App Designer を使って作成したアプリで ROI を使用する方法の詳細は、App Designer を使って作成したアプリでの ROI の使用を参照してください。

互換性の考慮事項

すべて展開する

R2020a 以降は非推奨

R2019b で導入