Main Content

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

imfreehand

(非推奨) ドラッグ可能なフリーハンドで領域を作成

関数 imfreehand は推奨されません。代わりに、新しい Freehand ROI オブジェクトを使用してください。新しい ROI 作成簡易関数 drawfreehand を使用することもできます。別のオプションとして、AssistedFreehand オブジェクトを使用して、ベースのイメージ内のエッジに自動的に従う形状を手描きすることもできます。詳細については、互換性の考慮事項を参照してください。

説明

imfreehand オブジェクトはイメージ上に対話型でフリーハンド領域をカプセル化します。

マウスを使用して、頂点を追加、多角形のサイズと位置を調整できます。多角形には、その外観や動作などを制御するコンテキスト メニューもあります。詳細については、使用方法を参照してください。

作成

説明

h = imfreehand は、現在の座標軸でフリーハンド領域の対話型の配置を開始し、imfreehand オブジェクトを返します。

h = imfreehand(hparent) は、hparent で指定されるオブジェクトにフリーハンド領域の対話型の配置を開始します。

h = imfreehand(___,Name,Value) は、フリーハンド領域の動作をコントロールする名前と値のペアを指定します。

入力引数

すべて展開する

親オブジェクトのハンドル。ハンドルとして指定します。親は通常 axes オブジェクトですが、hggroup オブジェクトの親である他の任意のオブジェクトにもなります。

名前と値の引数

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

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

位置制約関数。関数ハンドルとして指定します。fcn はマウスをドラッグできるときはいつでも呼び出せます。この関数を使用して、フリーハンド領域をドラッグできる場所を制御します。有効な関数ハンドルの詳細については、関数 setPositionConstraintFcn のヘルプを参照してください。

フリーハンド領域が閉じている。true または false として指定します。true (既定の設定) に設定した場合は、imfreehand は直線を描画し、フリーハンド ラインの端点を接続して、閉じた領域を作成します。false に設定した場合は、imfreehand は領域を開いたまま維持します。

データ型: logical

プロパティ

すべて展開する

ROI が削除可能。true または false を指定します。

データ型: logical

使用法

対話型構文で imfreehand を呼び出すと、ポインターはイメージ上では十字形 に変わります。マウスをクリック アンド ドラッグして、フリーハンド領域を描き、その領域の位置を調整します。既定の設定では、imfreehand は、描画した最後の点と最初の点を結ぶ直線を描画しますが、Closed パラメーターを使用してこの動作を制御できます。

フリーハンド領域では、その外観や動作などを制御するコンテキスト メニューもサポートされています。

表に imfreehand がサポートしている対話型動作を示します。

対話型動作説明
領域を移動する。ポインターをフリーハンド領域の内側に移動します。ポインターが花形 に変わります。領域を移動するには、左マウスボタンをクリックしたままドラッグします。
領域を描画するために使用する色を変更する。 ポインターをフリーハンド領域の内側に移動します。右クリックで表示されるコンテキスト メニューから [色の設定] を選択します。
フリーハンド領域の現在の位置を取得する。 ポインターをフリーハンド領域の内側に移動します。右クリックして、コンテキスト メニューから [位置のコピー] を選択します。imfreehand によって、ROI の境界の座標の n 行 2 列の配列がクリップボードにコピーされます。
領域を削除する。ポインターを領域内に移動します。右クリックして、コンテキスト メニューから [削除] を選択します。コンテキスト メニューからこのオプションを削除するには、Deletable プロパティを false に設定します。h = imfreehand(); h.Deletable = false;

オブジェクト関数

imfreehand オブジェクトは、多くのメソッドをサポートしています。詳細なリストを参照するには、methods imfreehand を入力してください。

addNewPositionCallbackROI オブジェクトに新しい位置のコールバックを追加する
createMask(非推奨) イメージ内にマスクを作成する
deleteハンドル オブジェクトの削除
getColorROI オブジェクトの描画に使用する色を取得する
getPositionROI オブジェクトの現在の位置を返す
getPositionConstraintFcn現在の位置制約関数への関数ハンドルを返す
removeNewPositionCallbackROI オブジェクトから新しい位置のコールバックを削除する
resume(非推奨) MATLAB コマンド ラインの実行の再開
setClosedROI オブジェクトのクローズ動作の設定
setColor(非推奨) ROI オブジェクトの描画に使用する色の設定
setConstrainedPositionROI オブジェクトに新しい位置を設定する
setPositionConstraintFcnROI オブジェクトの位置制約関数の設定
wait(非推奨) ROI の作成が完了するまで MATLAB コマンド ラインをブロックする

すべて折りたたむ

イメージ全体をクリック アンド ドラッグすることにより、閉じたフリーハンドの関心領域を対話形式で配置します。

imshow("pout.tif")
h = imfreehand;

クリックとドラッグにより、フリーハンド領域を対話形式で移動します。関数 wait を使用し MATLAB® コマンド ラインをブロックします。フリーハンド領域上をダブルクリックすることで、MATLAB コマンド ラインの実行を再開します。

position = wait(h);

ヒント

  • image オブジェクトを含んでいる axes で imfreehand を使用し、位置制約関数を指定しない場合、イメージの範囲外にフリーハンド領域をドラッグすると、それが失われることがあります。関数 plot で作成した座標軸で使用すると、座標軸の範囲はフリーハンド領域の動きに合わせて自動的に拡張されます。

  • 対話型の配置をキャンセルするには、Esc キーを押します。imfreehand は空のオブジェクトを返します。

バージョン履歴

R2007b で導入

すべて折りたたむ

R2018b: 関数 imfreehand は非推奨

R2018b 以降、既存の ROI オブジェクトのセットが新しい ROI オブジェクトのセットに置き換えられています。新しいオブジェクトは、面の色の透明度など、さらに便利な機能を提供します。新しいクラスでは、移動やクリックなどの ROI の変化に応答するために使用できるイベントもサポートされています。現時点では、以前の ROI オブジェクトを削除する予定はありませんが、追加された機能や柔軟性を活用するために、新しい ROI に切り替えてください。新しい ROI 関数を使用した ROI の作成方法の詳細については、ROI の形状の作成を参照してください。

imfreehand ROI オブジェクトを使用する代わりに、Freehand または AssistedFreehand オブジェクトを使用してください。ROI 簡易関数 drawfreehand または drawassisted を使用することもできます。

ROI 作成コードの更新

imfreehand のすべてのインスタンスを更新してください。

非推奨の使用方法推奨される代替案

この例では、フリーハンド ROI の描画が有効になります。

imshow("cameraman.tif");
h = imfreehand

次のコードは等価なコードで、古い ROI オブジェクトが新しい ROI オブジェクトに置き換えられています。この例では、ROI 作成簡易関数を使用しています。

imshow("cameraman.tif");
h = drawfreehand
その他の ROI コードの更新

imfreehand ROI オブジェクトのいずれかのオブジェクト関数を使用するコードを更新してください。多くの場合、単純に Freehand ROI オブジェクト プロパティの値にアクセスするかその値を設定することによって、オブジェクト関数 imfreehand の呼び出しを置き換えることができます。たとえば、getColor または setColor の呼び出しの代わりに Color プロパティを使用します。場合によっては、オブジェクト関数 imfreehand を新しい Freehand ROI のオブジェクト関数に置き換えなければなりません。個々の ROI オブジェクト関数 imfreehand には、新しい Freehand ROI オブジェクトへの移行に関する情報が含まれています。移行の概要については、ROI の移行を参照してください。