Main Content

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

cpselect

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

説明

cpselect(moving,fixed) は、コントロール ポイント選択ツールを起動します。このツールにより、2 つの関連するイメージの中のコントロール ポイントが選択できます。moving は、fixed イメージの座標系に合わせてゆがめられるイメージです。

コントロール ポイント選択ツールが開いたら、マウスを使用して対話的にコントロール ポイントを追加、移動、および削除できます。コントロール ポイントの変更が完了したら、[ファイル] メニューから [ワークスペースにポイントをエクスポート] を選択して、コントロール ポイントをワークスペースにエクスポートします。このツールは、選択された有効な移動および固定のコントロール ポイントの組の座標を 2 つの数値ベクトルで返すことができます。また、このツールは、すべての選択されたコントロール ポイントとインデックス情報を cpstruct 構造体で返すことができます。この構造体にはツールの状態が保存されるため、ツールを後で再開できます。ツールの使用方法の詳細については、コントロール ポイントの選択手順を参照してください。

cpselect(moving,fixed,initialMovingPoints,initialFixedPoints) は、有効な移動および固定のコントロール ポイントの組の初期セット initialMovingPointsinitialFixedPoints を使用して、コントロール ポイント選択ツールを開始します。

cpselect(moving,fixed,cpstruct_in) は、cpstruct_in に格納されたコントロール ポイントの初期セットとインデックス情報を使用して、コントロール ポイント選択ツールを開始します。この構文を使用して、以前に保存した状態からコントロール ポイント選択ツールを再開します。

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

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

[selectedMovingPoints,selectedFixedPoints] = cpselect(___,'Wait',true) は、コントロール ポイントの選択を終了するまで、MATLAB コマンド ラインを制御します。コントロール ポイントの選択を終了したら、ツールを終了してワークスペースに戻ります。cpselect は、選択された有効な移動および固定のコントロール ポイントの組の座標を selectedMovingPointsselectedFixedPoints で返します。

すべて折りたたむ

イメージ westconcordorthophoto.png をワークスペースに読み取ります。このイメージは、地上にレジストレーションされた正射写真です。

fixed = imread('westconcordorthophoto.png');

イメージ westconcordaerial.png をワークスペースに読み取ります。このイメージは飛行機から撮影されたもので、正射写真と比較して変形されています。

moving = imread('westconcordaerial.png');

レジストレーションするイメージと参照イメージの名前を指定して、cpselect を呼び出します。ここでマウスを使用して対話的にコントロール ポイントを追加、移動、および削除できます。コントロール ポイントの追加が完了したら、[ファイル] メニューから [ワークスペースにポイントをエクスポート] を選択して、コントロール ポイントをワークスペースにエクスポートします。

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

サンプルの参照イメージを作成します。このイメージは固定イメージです。

I = checkerboard;

サンプル イメージを回転して引き伸ばしたコピーを作成します。このイメージは移動イメージであり、固定イメージと位置合わせをします。

J = imresize(I,'Scale',[1 1.3]);
moving = imrotate(J,30);

移動イメージと固定イメージについて、対応する 3 つのコントロール ポイントの (x,y) 座標を指定します。

fixedPoints = [10.7 30.6; 40.5 50.6; 20.6 10.7];
movingPoints = [21.6 64.2; 71.1 70.3; 28.7 48.3];

サンプルの固定イメージと移動イメージおよび保存した 2 組のコントロール ポイントを指定し、コントロール ポイント選択ツールを開きます。ここで続けて、マウスを使用して対話的にコントロール ポイントを追加、移動、および削除できます。コントロール ポイントの変更が完了したら、[ファイル] メニューから [ワークスペースにポイントをエクスポート] を選択して、コントロール ポイントをワークスペースにエクスポートします。

h = cpselect(moving,I,movingPoints,fixedPoints);

関数 close を使用して、プログラムでコントロール ポイント選択ツールを閉じます。

close(h)

入力引数

すべて折りたたむ

位置合わせする入力イメージ。グレースケール イメージ、トゥルーカラー イメージ、バイナリ イメージとして、またはこれらのタイプのイメージのファイル名を指定する文字ベクトルまたは文字列として指定します。

イメージ タイプ

サポートされているデータ型

グレースケール

uint8uint16int16single、または double

トゥルーカラー

uint8uint16single、または double

バイナリ

logical

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

参照イメージ。グレースケール イメージ、トゥルーカラー イメージ、バイナリ イメージとして、またはこれらのタイプのイメージのファイル名を指定する文字ベクトルまたは文字列として指定します。

イメージ タイプ

サポートされているデータ型

グレースケール

uint8uint16int16single、または double

トゥルーカラー

uint8uint16single、または double

バイナリ

logical

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

あらかじめ選択したコントロール ポイント。構造体 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 より前に導入