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

PiecewiseLinearTransformation2D

2 次元区分的線形幾何学的変換

説明

PiecewiseLinearTransformation2D オブジェクトは、2 次元区分的線形幾何学的変換をカプセル化します。

作成

PiecewiseLinearTransformation2D オブジェクトは以下の方法を使用して作成できます。

  • 関数 fitgeotrans。2 つのイメージの間でコントロール ポイントのペアをマッピングする幾何学的変換を推定します。

  • ここで記述された関数 images.geotrans.PiecewiseLinearTransformation2D。この関数は固定点と移動点の座標を使用して PiecewiseLinearTransformation2D オブジェクトを作成します。

説明

tform = images.geotrans.PiecewiseLinearTransformation2D(movingPoints,fixedPoints) は、それぞれ移動イメージと固定イメージ内の一致するコントロール ポイントを定義するコントロール ポイントの座標 movingPointsfixedPoints を受け取って、PiecewiseLinearTransformation2D オブジェクトを作成します。

入力引数

すべて展開する

移動イメージ内のコントロール ポイントの x 座標と y 座標。m 行 2 列の行列として指定します。コントロール ポイント数 m は n 以上でなければなりません。

データ型: double | single

固定イメージ内のコントロール ポイントの x 座標と y 座標。m 行 2 列の行列として指定します。コントロール ポイント数 m は n 以上でなければなりません。

データ型: double | single

プロパティ

すべて展開する

入力点と出力点の両方の幾何学的変換の次元。値 2 として指定します。

オブジェクト関数

outputLimits入力空間範囲に基づく出力空間範囲の特定
transformPointsInverse幾何学的逆変換の適用

すべて折りたたむ

区分的線形変換を、領域全体に対する単一のグローバル affine2d 変換によって実際に関連付けられている固定コントロール ポイントと移動コントロール ポイントのセットに近似します。

2 次元アフィン変換を作成します。

theta = 10;
tformAffine = affine2d([cosd(theta) -sind(theta) 0; sind(theta) cosd(theta) 0; 0 0 1])
tformAffine = 

  affine2d with properties:

                 T: [3x3 double]
    Dimensionality: 2

任意のコントロール ポイントを 6 組選択します。

fixedPoints = [10 20; 10 5; 2 3; 0 5; -5 3; -10 -20];

フォワード幾何学的変換を適用して固定点をマップし、幾何学的変換で関連付けられている固定点と移動点の効果を得ます。

movingPoints = transformPointsForward(tformAffine,fixedPoints)
movingPoints =

   13.3210   17.9597
   10.7163    3.1876
    2.4906    2.6071
    0.8682    4.9240
   -4.4031    3.8227
  -13.3210  -17.9597

movingPointsfixedPoints にマップする区分的線形変換を推定します。

tformPiecewiseLinear = images.geotrans.PiecewiseLinearTransformation2D(movingPoints,fixedPoints)
tformPiecewiseLinear = 

  PiecewiseLinearTransformation2D with properties:

    Dimensionality: 2

コントロール ポイントにおける PiecewiseLinearTransformation2D オブジェクトの近似を検証します。

movingPointsComputed = transformPointsInverse(tformPiecewiseLinear,fixedPoints);
 
errorInFit = hypot(movingPointsComputed(:,1)-movingPoints(:,1),...
                   movingPointsComputed(:,2)-movingPoints(:,2))
errorInFit =

   1.0e-15 *

         0
         0
    0.4441
         0
         0
         0

R2013b で導入