ドキュメンテーション

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

imdistline

構文

h = imdistline
h = imdistline(hparent)
h = imdistline(..., x, y)

説明

関数 h = imdistline は、現在の Axes に距離ツールを作成します。この関数は、imdistline オブジェクトのハンドル h を返します。

距離ツールはドラッグとサイズ変更が可能なラインで、座標軸上に重ねて、ラインの 2 つの端点間の距離を測定します。距離ツールは、ライン上に重ねて表示されるテキスト ラベルに距離を示します。このツールは、XData プロパティと YData プロパティで指定されたデータ単位で距離を示します (既定の設定ではピクセル)。次の図は、座標軸と距離ツールを示しています。

距離ツールを移動するには、ライン上にポインターを置きます。ポインターの形状が花形 に変わります。マウスを使用して、ラインをクリック アンド ドラッグします。距離ツールをサイズ変更するには、ラインの端点のいずれかの上にポインターを置きます。ポインターの形状が人指し指型 に変わります。マウスを使用して、ラインの端点をクリック アンド ドラッグします。このラインでは、その外観や動作などを制御するコンテキスト メニューを使用できます。詳細については、「コンテキスト メニュー」を参照してください。コンテキスト メニューにアクセスするには、ラインを右クリックします。

h = imdistline(hparent) は、hparent で指定されたオブジェクト上にドラッグ可能な距離ツールを作成します。hparent は、通常 axes オブジェクトである距離ツールの親を指定しますが、それ以外の hggroup の親になることができるオブジェクトにすることもできます。

h = imdistline(..., x, y) は、ベクトル xy で指定した位置にある端点をもつ距離ツールを作成します。このとき、x = [x1 x2] および y =[y1 y2] です。

コンテキスト メニュー

距離ツールの動作コンテキスト メニュー項目
端点と距離データをワークスペースにエクスポートするコンテキスト メニューから [ワークスペースにエクスポート] を選択します。
距離ラベルのオン/オフを切り替えるコンテキスト メニューから [距離ラベルを表示する] を選択します。
水平と垂直方向のドラッグの制約を指定するコンテキスト メニューから [ドラッグの制約] を選択します。
ラインを表示するために使用する色を変更するコンテキスト メニューから [色の設定] を選択します。
距離ツール オブジェクトを削除するコンテキスト メニューから [削除] を選択します。

API 関数

距離ツールには、距離情報を取得し、他の距離ツールの動作の要素を指定するために使われる API と呼ばれる関数ハンドルの構造体が含まれています。距離ツールからこの構造体を取得するには、関数 iptgetapi を使用します。ここで、h は距離ツールのハンドルです。

api = iptgetapi(h)

次の表は、API の関数とその構文および短い説明をまとめたものです。

関数

説明

getDistance

距離ツールの端点間の距離を返します。

dist = getDistance()

返される値のデータ単位は、XData プロパティと YData プロパティで指定されます (既定の設定ではピクセル)。

getAngleFromHorizontal

距離ツールと水平軸で定義されるライン間の度単位の角度を返します。角度は、0 と 180 度の間で返されます (この角度の計算方法については、ヒントを参照してください)。

angle = getAngleFromHorizontal()

setLabelTextFormatter

距離ラベルを表示するのに使われる形式を設定します。

setLabelTextFormatter(str)

str は、sprintf で必要な形式で書式を指定する文字配列です。

getLabelTextFormatter

距離ラベルを表示するために使われる書式を指定する文字配列を返します。

str = getLabelTextFormatter()

strsprintf で必要な書式になります。

setLabelVisible

距離ツールのテキスト ラベルの可視化を設定します。

 setLabelVisible(h,TF) 

h は距離ツールです。TF は論理スカラーです。距離ラベルが可視化されている場合、TF は true です。距離ラベルが可視化されていない場合、TF は false です。

getLabelVisible

距離ツールのテキスト ラベルを可視化にします。

TF = getLabelVisible(h)

h は距離ツールです。TF は論理スカラーです。TF が true の場合、距離ラベルは可視化されています。TF が false の場合、距離ラベルは可視化されていません。

setPosition

距離ツールの端点位置を設定します。

setPosition(X,Y) 
setPosition([X1 Y1; X2 Y2])

getPosition

距離ツールの端点位置を返します。

pos = getPosition()

pos は、2 行 2 列の配列 [X1 Y1; X2 Y2] です。

delete

API に関連付けられた距離ツールを削除します。

delete()

setColor

距離ツールを描画するのに使用される色を設定します。

setColor(new_color)

new_color は、RGB 3 成分を指定する 3 要素ベクトルであるか、'white''w' などの事前定義された色の完全名または省略名です。定義済み色とその省略名の完全な一覧は、「ColorSpec」を参照してください。

getColor

ROI オブジェクト h の描画に使用する色を取得します。

color = getColor(h)

color は RGB 3 成分を指定する 3 要素ベクトルです。

addNewPositionCallback

関数ハンドル fcn を新しい位置のコールバック関数のリストに追加します。

id = addNewPositionCallback(fcn)

距離ツールがその位置を変更するときは常に、リスト内の各関数は、以下の構文で呼び出されます。

 fcn(pos)

pos は、2 行 2 列の配列 [X1 Y1; X2 Y2] です。

戻り値 id は、removeNewPositionCallback と一緒にのみ使用されます。

removeNewPositionCallback

新しい位置のコールバック リストから対応する関数を除去します。

removeNewPositionCallback(id)

id は、addNewPositionCallback によって返される識別子です。

setPositionConstraintFcn

指定した関数ハンドル fcn に位置の制約関数を設定します。この関数を使用して、距離ツールを移動およびサイズ変更する場所を指定します。

setPositionConstraintFcn(fcn)

制約関数は、距離ツールがマウス ドラッグのために、移動、またはサイズ変更されるときは常に、以下の構文を使用して呼び出されます。

 constrained_position = fcn(new_position)

new_position は、2 行 2 列の配列 [X1 Y1; X2 Y2] です。

getPositionConstraintFcn

現在のドラッグの制約関数の関数ハンドルを返します。

fcn = getDragConstraintFcn()

例 1

イメージに距離ツールを挿入します。距離ツールがイメージの範囲の外側でドラッグされないように、ドラッグの制約関数を指定する makeConstrainToRectFcn を使用します。距離ツールを右クリックして、コンテキスト メニューのオプションを参照します。

figure, imshow('pout.tif');
h = imdistline(gca);
api = iptgetapi(h);
fcn = makeConstrainToRectFcn('imline',...
                              get(gca,'XLim'),get(gca,'YLim'));
api.setDragConstraintFcn(fcn);   

例 2

指定した位置に距離ツールの端点を配置します。

close all, imshow('pout.tif');
h = imdistline(gca,[10 100],[10 100]);

距離ツールを削除します。

api = iptgetapi(h);
api.delete();

例 3

ピクセル単位でない関連イメージの XDataYData で距離ツールを使用します。この例では、GeoEye™ が著作所有権を所有する素材を含む Mapping Toolbox ソフトウェアの boston.tif イメージを使用します。

start_row = 1478;
end_row = 2246;
meters_per_pixel = 1;
rows = [start_row meters_per_pixel end_row];
start_col = 349;
end_col = 1117;
cols = [start_col meters_per_pixel end_col];
img  = imread('boston.tif','PixelRegion',{rows,cols});
figure; 
hImg = imshow(img);
title('1 meter per pixel');
 
% Specify initial position of distance tool on Harvard Bridge.
hline = imdistline(gca,[271 471],[108 650]);
api = iptgetapi(hline);
api.setLabelTextFormatter('%02.0f meters');
 
% Repeat process but work with a 2 meter per pixel sampled image. Verify
% that the same distance is obtained.
meters_per_pixel = 2;
rows = [start_row meters_per_pixel end_row];
cols = [start_col meters_per_pixel end_col];
img  = imread('boston.tif','PixelRegion',{rows,cols});
figure;    
hImg = imshow(img);
title('2 meters per pixel');    
     
% Convert XData and YData to meters using conversion factor.
XDataInMeters = get(hImg,'XData')*meters_per_pixel; 
YDataInMeters = get(hImg,'YData')*meters_per_pixel;
     
% Set XData and YData of image to reflect desired units.    
set(hImg,'XData',XDataInMeters,'YData',YDataInMeters);    
set(gca,'XLim',XDataInMeters,'YLim',YDataInMeters);
     
% Specify initial position of distance tool on Harvard Bridge.
hline = imdistline(gca,[271 471],[108 650]);
api = iptgetapi(hline);
api.setLabelTextFormatter('%02.0f meters');        

ヒント

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

imdistline がどのように getAngleToHorizontal で返される角度を計算するのかを理解するには、距離ラインの下の端点から右に拡張した架空の水平ベクトルを描画してください。getAngleToHorizontal で返された値は、0 から 180 度の範囲となるこの水平ベクトルから距離ラインへの角度です。

R2006a より前に導入

この情報は役に立ちましたか?