ドキュメンテーション

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

cpselect

コントロール ポイント選択ツール

構文

cpselect(moving,fixed)
cpselect(moving,fixed,cpstruct_in)
cpselect(moving,fixed,initialMovingPoints,initialFixedPoints)
h = cpselect(___)
h = cpselect(___,'Wait',false)
[selectedMovingPoints,selectedFixedPoints] = cpselect(___,'Wait',true)

説明

cpselect(moving,fixed) は、コントロール ポイント選択ツールを起動します。このツールは、2 つの関連するイメージの中のコントロール ポイントが選択できるユーザー インターフェイスです。moving は、fixed イメージの座標系に合わせてゆがめられるイメージです。movingfixed は、グレースケール イメージ、トゥルーカラー イメージまたはバイナリ イメージを含む変数か、これらのイメージを含むファイルの名前になります。コントロール ポイント選択ツールはコントロール ポイントを cpstruct 構造体で返します

cpselect(moving,fixed,cpstruct_in) は、cpstruct_in に格納されたコントロール ポイントの初期セットで cpselect を開始します。この構文を使用すると、cpstruct_in にあらかじめ保存されたコントロール ポイントの状態 (組になっていないコントロール ポイントや予測したコントロール ポイントを含む) で cpselect を再開できます。

cpselect(moving,fixed,initialMovingPoints,initialFixedPoints) は有効なコントロール ポイントの組の初期セットを使用して cpselect を開始します。initialMovingPointsinitialFixedPoints は、それぞれ movingfixed のコントロール ポイント座標を格納する m 行 2 列の行列です。2 つの列は、コントロール ポイントの x 座標と y 座標を表します。

h = cpselect(___) は、コントロール ポイント選択ツールのハンドル h を返します。close(h) 構文を使用すると、コマンド ラインからツールを閉じることができます。

h = cpselect(___,'Wait',false) は、コントロール ポイント選択ツールのハンドル h を返します。close(h) 構文を使用すると、コマンド ラインからツールを閉じることができます。'Wait'true として設定するのとは異なり、この構文では、MATLAB® の他のプログラムと同時に cpselect を実行できます。

[selectedMovingPoints,selectedFixedPoints] = cpselect(___,'Wait',true) は、コントロール ポイントの選択を終了するまで MATLAB コマンド ラインを制御します。cpselect は選択された有効なポイントの組を返します。selectedMovingPoints および selectedFixedPoints は p 行 2 列の行列で、それぞれ移動イメージと固定イメージの座標を格納します。2 つの列は、選択されたコントロール ポイントの x 座標と y 座標を表します。

すべて折りたたむ

レジストレーションするイメージと参照イメージの名前を指定して、cpselect を呼び出します。この例ではオプションの構文を使用し、プログラムからツールを閉じることができるように作成されたツールのハンドルを返します。

h  = cpselect('westconcordaerial.png','westconcordorthophoto.png');

ツールを閉じます。

close(h)

サンプルの参照イメージを作成します。

I = checkerboard;

レジストレーションが必要なサンプル イメージを作成するために、サンプル イメージを回転してコピーを作成します。

J = imrotate(I,30);

移動イメージと固定イメージの 2 組のコントロール ポイントを指定します。

fixedPoints = [11 11; 41 71];
movingPoints = [14 44; 70 81];

サンプルの固定イメージと移動イメージおよび保存した 2 組のコントロール ポイントを指定し、コントロール ポイント選択ツールを開きます。

cpselect(J,I,movingPoints,fixedPoints);

ツールを開くと、コントロール ポイントを保存するようにプロンプトが表示されます。

航空写真と正射写真をワークスペースに読み取って表示します。

aerial = imread('westconcordaerial.png');
figure, imshow(aerial)
ortho = imread('westconcordorthophoto.png');
figure, imshow(ortho)

事前に選択した複数の点を読み込みます。

load westconcordpoints

2 つのイメージとあらかじめ選択したコントロール ポイントを指定し、コントロール ポイント選択ツールを開きます。追加の点を選択するため、'Wait' パラメーターを使用して、cpselect を待機状態にします。

[aerial_points,ortho_points] = ...
       cpselect(aerial,'westconcordorthophoto.png',...
                movingPoints,fixedPoints,...
                'Wait',true);

制御がコマンド ラインに戻ったら、レジストレーションを実行します。まず、fitgeotrans を使用して、移動イメージを固定イメージに位置合わせするために必要な幾何学的変換を推定します。選択したコントロール ポイントと必要な変換タイプを指定します。次に、imwarp を使用して変換を実行します。最後に、元の正射写真上に変換後のイメージを表示し、レジストレーションの効果を確認します。

t_concord = fitgeotrans(aerial_points,ortho_points,'projective');
ortho_ref = imref2d(size(ortho)); %relate intrinsic and world coordinates
aerial_registered = imwarp(aerial,t_concord,'OutputView',ortho_ref);
figure, imshowpair(aerial_registered,ortho,'blend')

入力引数

すべて折りたたむ

位置合わせする入力イメージ。グレースケール イメージ、トゥルーカラー イメージ、バイナリ イメージとして、または文字ベクトルとして指定します。グレースケール イメージは、uint8uint16int16singledouble のいずれかです。トゥルーカラー イメージは、uint8uint16singledouble のいずれかです。バイナリ イメージのクラスは logical です。moving が文字ベクトルの場合、同じタイプのイメージを含むファイルを指定しなければなりません。

データ型: single | double | int16 | uint8 | uint16 | logical

参照イメージ。グレースケール イメージ、トゥルーカラー イメージまたはバイナリ イメージとして指定します。グレースケール イメージは、uint8uint16int16singledouble のいずれかです。トゥルーカラー イメージは、uint8uint16singledouble のいずれかです。バイナリ イメージのクラスは logical です。fixed が文字ベクトルの場合、同じタイプのイメージを含むファイルを指定しなければなりません。

データ型: single | double | int16 | uint8 | uint16 | logical

あらかじめ選択したコントロール ポイント。構造体 (cpstruct) として指定します。cpstruct_in には、移動イメージと固定イメージのすべてのコントロール ポイント (組になっていないコントロール ポイントや予測したコントロール ポイントを含む) の x 座標と y 座標に関する情報が含まれています。また、cpstruct_in には、コントロール ポイント選択ツールでコントロール ポイントの状態を復元するためのインデックス情報も含まれています。

cpstruct は、コントロール ポイント選択ツールからポイントをエクスポートして作成します。「コントロール ポイントのワークスペースへのエクスポート」を参照してください。

データ型: struct

移動イメージであらかじめ選択したコントロール ポイント。m 行 2 列の数値配列として指定します。2 つの列は、コントロール ポイントの x 座標と y 座標を表します。

データ型: double

固定イメージであらかじめ選択したコントロール ポイント。m 行 2 列の数値配列として指定します。2 つの列は、コントロール ポイントの x 座標と y 座標を表します。

データ型: double

出力引数

すべて折りたたむ

コントロール ポイント選択ツール。ハンドルとして返されます。

移動イメージで選択したコントロール ポイント。p 行 2 列の数値配列として指定します。2 つの列は、コントロール ポイントの x 座標と y 座標を表します。

データ型: double

固定イメージで選択したコントロール ポイント。p 行 2 列の数値配列として指定します。2 つの列は、コントロール ポイントの x 座標と y 座標を表します。

データ型: double

ヒント

  • スクリプトで cpselect を呼び出す際には 'Wait' オプションを true に指定します。'Wait' オプションを使用すると、コントロール ポイントが選択されて返されるまで、cpselect によって MATLAB コマンド ラインがブロックされます。'Wait' オプションが使用されない場合は、cpselect は直ちに制御を返し、スクリプトはコントロール ポイントを選択する時間を待たずに続行します。また、'Wait' オプションが使用されなければ、cpselect は戻り値としてコントロール ポイントを返しません。

アルゴリズム

cpselect では、コントロール ポイントの予測に次の一般的な処理が使用されます。

  1. コントロール ポイントの有効な組をすべて検出します。

  2. 有効な組の数に基づいて次のように異なる方法を使用して、moving コントロール ポイントと fixed コントロール ポイントの間の空間変換を推測します。

    2 組

    無反射類似

    3 組

    アフィン

    4 組以上

    射影

  3. 空間変換を新しい点に適用します。この変換によって予測点が生成されます。

  4. 予測点を表示します。

R2006a より前に導入

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