Main Content

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

fitgeotrans

(非推奨) 幾何学的変換のコントロール ポイントのペアへの近似

fitgeotrans は推奨されません。代わりに関数 fitgeotform2d を使用してください。詳細については、バージョン履歴を参照してください。

説明

tform = fitgeotrans(movingPoints,fixedPoints,tformType) は、タイプ tformType の線形幾何学的変換をコントロール ポイントのペア movingPoints および fixedPoints に近似します。

tform = fitgeotrans(movingPoints,fixedPoints,"polynomial",degree) は、PolynomialTransformation2D オブジェクトをコントロール ポイントのペア movingPoints および fixedPoints に近似します。多項式変換の次数を指定します。2、3 または 4 を使用できます。

tform = fitgeotrans(movingPoints,fixedPoints,"pwl") は、PiecewiseLinearTransformation2D オブジェクトをコントロール ポイントのペア movingPoints および fixedPoints に近似します。この変換は、固定コントロール ポイントの Delaunay 三角形分割を作成し、移動コントロール ポイントを対応する固定コントロール ポイントにマッピングします。局所領域ごとに異なるアフィン変換でコントロール ポイントがマッピングされます。このマッピングはコントロール ポイント間で連続的ですが、連続的に微分可能ではありません。

tform = fitgeotrans(movingPoints,fixedPoints,"lwm",n) は、LocalWeightedMeanTransformation2D オブジェクトをコントロール ポイントのペア movingPoints および fixedPoints に近似します。局所重み付き平均変換が、近傍のコントロール ポイントを使用して各コントロール ポイントにおける多項式を推定し、マッピングを行います。任意の位置でのマッピングは、これらの多項式の加重平均に依存します。n 個の最近傍点を使用して、コントロール ポイントの各組に対し 2 次多項式が推定されます。

すべて折りたたむ

チェッカーボードのイメージを作成し、このイメージを回転して、位置のずれたイメージを作成します。

I = checkerboard(40);
J = imrotate(I,30);
imshowpair(I,J,"montage")

固定イメージ (チェッカーボード) と移動イメージ (回転したチェッカーボード) にいくつかの一致させるコントロール ポイントを定義します。コントロール ポイント選択ツールを使用して対話的にポイントを定義できます。

fixedPoints = [41 41; 281 161];
movingPoints = [56 175; 324 160];

2 個のイメージの位置合わせに使用するアフィン幾何学的変換を作成します。

tform = fitgeotform2d(movingPoints,fixedPoints,"similarity");

tform 推定を使用して、回転したイメージをリサンプルし、固定イメージにレジストレーションします。レジストレーションの誤差は、フォールス カラーのオーバーレイ イメージ内で緑とマゼンタの色領域として表示されます。このエラーの原因は、コントロール ポイントが正確に一致していないためです。

Jregistered = imwarp(J,tform,OutputView=imref2d(size(I)));
imshowpair(I,Jregistered)

入力引数

すべて折りたたむ

移動イメージ内のコントロール ポイント。m 行 2 列の行列として指定します。各行は、コントロール ポイントの (x, y) 座標を指定します。

例: movingPoints = [11 11; 41 71];

データ型: double | single

固定イメージ内のコントロール ポイント。m 行 2 列の行列として指定します。各行は、コントロール ポイントの (x, y) 座標を指定します。

例: fixedPoints = [14 44; 70 81];

データ型: double | single

線形変換のタイプ。"nonreflectivesimilarity""similarity""affine"、または "projective" として指定します。詳細については、変換タイプを参照してください。

データ型: char | string

多項式の次数。整数 23 または 4 として指定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

局所重み付き平均の計算に使用する点の数。正の整数として指定します。n には最小で 6 を指定できますが、n の値を小さくすると条件の悪い多項式が生成される可能性があります。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

出力引数

すべて折りたたむ

変換。幾何学的変換オブジェクトとして返されます。オブジェクトのタイプは変換タイプによって異なります。

変換タイプ

幾何学的変換オブジェクト
"nonreflectivesimilarity"affine2d
"similarity"affine2d
"affine"affine2d
"projective"projective2d
"polynomial"PolynomialTransformation2D
"pwl"PiecewiseLinearTransformation2D
"lwm"LocalWeightedMeanTransformation2D

詳細

すべて折りたたむ

変換タイプ

次の表は、fitgeotrans によってサポートされているすべての変換タイプを複雑度の順にまとめたものです。

変換タイプ

説明コントロール ポイントのペアの最小数
"nonreflectivesimilarity"移動イメージ内の形状は変更されていないが、平行移動、回転、およびスケーリングの組み合わせによってイメージの歪みが生じている場合は、この変換を使用します。直線は直線のまま、平行線は平行のままです。 2

Original and transformed checkerboard image. The transformed image appears rotated 45 degrees counter-clockwise.

"similarity""nonreflectivesimilarity" にオプションの鏡映が追加されたものと同じです。3

Original and transformed checkerboard image. The transformed image appears rotated 45 degrees counter-clockwise and reflected along its vertical axis.

"affine"移動イメージ内の形状がせん断を示す場合は、この変換を使用します。直線は直線のまま、平行線は平行のままですが、四角形は平行四辺形になります。3

Original and transformed checkerboard image. The transformed image appears sheared in the horizontal direction.

"projective"シーンが傾いて見える場合は、この変換を使用します。直線は直線のままですが、平行線は消失点に向かって収束します。4

Original and transformed checkerboard image. The transformed image appears tilted out of plane of the image.

"polynomial"イメージ内のオブジェクトが湾曲している場合は、この変換を使用します。多項式の次数が高いほど、近似度も高くなりますが、結果に含まれる曲線の数が固定イメージより多くなる場合があります。

6 (2 次)

10 (3 次)

15 (4 次)

Original and transformed checkerboard image. The transformed image appears curved.

"pwl"イメージの部分ごとに異なる歪みがあるように見える場合は、この変換 (区分的線形) を使用します。4

Original and transformed checkerboard image. The right side of the transformed image appears stretched horizontally.

"lwm"歪みが局所的に変化し、区分的な線形が十分でない場合は、この変換 (局所重み付き平均) を使用します。 6 (12 を推奨)

Original and transformed checkerboard image. The transformed image appears nonuniformly stretched.

参照

[1] Goshtasby, Ardeshir. “Piecewise Linear Mapping Functions for Image Registration.” Pattern Recognition 19, no. 6 (January 1986): 459–66. https://doi.org/10.1016/0031-3203(86)90044-0.

[2] Goshtasby, Ardeshir. “Image Registration by Local Approximation Methods.” Image and Vision Computing 6, no. 4 (November 1988): 255–61. https://doi.org/10.1016/0262-8856(88)90016-9.

拡張機能

バージョン履歴

R2013b で導入

すべて展開する

R2022b: 非推奨

R2022b 以降、ほとんどの Image Processing Toolbox™ 関数は、左から乗算する規則を使用して幾何学的変換を作成し、実行します。ただし、関数 fitgeotrans は右から乗算する規則を使用して線形幾何学的変換を推定します。現時点では、fitgeotrans を削除する予定はありませんが、左から乗算する規則をサポートする関数 fitgeotform2d に切り替えることで、幾何学的変換のワークフローを効率化できます。詳細については、Migrate Geometric Transformations to Premultiply Conventionを参照してください。

コードを更新するには、関数名 fitgeotrans のインスタンスを fitgeotform2d に変更します。また、次の 2 つの変換タイプについては tformType の値を変更する必要があります。

  • "nonreflectivesimilarity""similarity" に置き換えます。変換タイプ "similarity" は平行移動、回転、およびスケーリングをサポートし、鏡映はサポートしていません。

  • "similarity""reflectivesimilarity" に置き換えます。変換 "reflectivesimilarity" は、平行移動、回転、スケーリング、および鏡映をサポートしています。

他の引数を変更する必要はありません。

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

この例では、関数 fitgeotrans を使用して、3 つのコントロール ポイントのペアから 2 次元アフィン変換を推定します。

mp = [14.5 44.6; 31.8 34.8; 44.4 96.9];
fp = [10.5 10.5; 30.5 10.5; 10.5 70.5];
tform = fitgeotrans(mp,fp,"affine");

この例では、関数 fitgeotform を使用して、3 つのコントロール ポイントのペアから 2 次元アフィン変換を推定します。

mp = [14.5 44.6; 31.8 34.8; 44.4 96.9];
fp = [10.5 10.5; 30.5 10.5; 10.5 70.5];
tform = fitgeotform2d(mp,fp,"affine");

この例では、平行移動、回転、および等方性スケーリングのみから構成される 2 次元アフィン変換を推定します。

mp = [14.5 44.6; 31.8 34.8; 44.4 96.9];
fp = [10.5 10.5; 30.5 10.5; 10.5 70.5];
tform = fitgeotrans(mp,fp,"nonreflectivesimilarity");

この例では、平行移動、回転、および等方性スケーリングのみから構成される 2 次元アフィン変換を推定します。

mp = [14.5 44.6; 31.8 34.8; 44.4 96.9];
fp = [10.5 10.5; 30.5 10.5; 10.5 70.5];
tform = fitgeotform2d(mp,fp,"similarity");

この例では、平行移動、回転、等方性スケーリング、および鏡映のみから構成される 2 次元アフィン変換を推定します。

mp = [14.5 44.6; 31.8 34.8; 44.4 96.9];
fp = [10.5 10.5; 30.5 10.5; 10.5 70.5];
tform = fitgeotrans(mp,fp,"similarity");

この例では、平行移動、回転、等方性スケーリング、および鏡映のみから構成される 2 次元アフィン変換を推定します。

mp = [14.5 44.6; 31.8 34.8; 44.4 96.9];
fp = [10.5 10.5; 30.5 10.5; 10.5 70.5];
tform = fitgeotform2d(mp,fp,"reflectivesimilarity");