ドキュメンテーション

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

2 次元および 3 次元の幾何学的変換プロセスの概要

2 次元または 3 次元幾何学的変換を実行するには、まず変換に関する情報を格納する幾何学的変換オブジェクトを作成します。次に、変換するイメージと幾何学的変換オブジェクトを関数 imwarp に渡します。オプションで、入力イメージに関する空間参照情報を imwarp に指定できます。

幾何学的変換オブジェクトの作成

異なるタイプの幾何学的変換オブジェクトには、変換に関する異なる情報が格納されます。

幾何学的変換オブジェクトを作成するには、いくつかの方法があります。

変換オブジェクトの作成方法affine2daffine3dprojective2dgeometricTransform2d / geometricTransform3d他の変換オブジェクト
変換行列の定義XXX  
点単位のカスタム マッピング関数の定義   X 
コントロール ポイントのペアからの変換の推定X X X
類似性の最適化を使用した変換の推定XX   
位相相関を使用した変換の推定X    

変換行列の定義

実行する幾何学的変換の変換行列が既知の場合は、affine2dprojective2d、または affine3d 幾何学的変換オブジェクトを直接作成できます。変換行列の作成の詳細については、幾何学的変換の行列表現を参照してください。

次の例では、2 次元平行移動の変換行列を定義し、affine2d 幾何学的変換オブジェクトを作成します。

xform = [ 1 0 0
          0 1 0
         40 40 1 ];

tform_translate = affine2d(xform);
tform_translate = 

  affine2d with properties:

                 T: [3x3 double]
    Dimensionality: 2

点単位のカスタム マッピング関数の定義

点単位の逆マッピング関数がある場合、geometricTransform2d オブジェクトおよび geometricTransform3d オブジェクトをそれぞれ使用して、カスタムの 2 次元および 3 次元幾何学的変換を定義できます。

次の例では、パックされた (x,y) 形式の 2 次元の点を受け入れ、同じ形式の点を返す逆マッピング関数を指定します。その後、この例では geometricTransform2d カスタム幾何学的変換オブジェクトを作成します。

inversefn = @(c) [c(:,1)+c(:,2),c(:,1).^2]
inversefn = function_handle with value:
    @(c)[c(:,1)+c(:,2),c(:,1).^2]
tform = geometricTransform2d(inversefn)
tform = 
  geometricTransform2d with properties:

        InverseFcn: @(c)[c(:,1)+c(:,2),c(:,1)-c(:,2)]
        ForwardFcn: []
    Dimensionality: 2

同様に、次の例では、逆マッピング関数を使用して geometricTransform3d カスタム幾何学的変換オブジェクトを作成します。この例では、パックされた (x,y,z) 形式の 3 次元の点を受け入れて返す逆マッピング関数を指定します。

inversefn = @(c)[c(:,1)+c(:,2),c(:,1)-c(:,2),c(:,3).^2]
inversefn = function_handle with value:
    @(c)[c(:,1)+c(:,2),c(:,1)-c(:,2),c(:,3).^2]
tform = geometricTransform3d(inversefn)
tform = 

  geometricTransform3d with properties:

        InverseFcn: @(c)[c(:,1)+c(:,2),c(:,1)-c(:,2),c(:,3).^2]
        ForwardFcn: []
    Dimensionality: 3

コントロール ポイントのペアからの変換の推定

幾何学的変換オブジェクトを作成するには、関数 fitgeotrans にコントロール ポイントのペアを 2 セット渡します。関数 fitgeotrans はこれらのポイントから変換を自動的に推定し、幾何学的変換オブジェクトの 1 つを返します。

必要な点の数は、変換の種類によって異なります。たとえば、アフィン変換では各イメージに 3 つの同一線上にない点 (三角形) が必要ですが、射影変換では 4 つの点 (四角形) が必要です。

この例では 2 セットのコントロール ポイントを fitgeotrans に渡し、幾何学的変換オブジェクト affine2d が返されます。

movingPoints = [11 11;21 11; 21 21];
fixedPoints = [51 51;61 51;61 61];

tform_cpp = fitgeotrans(movingPoints,fixedPoints,'affine')
tform_cpp = 

  affine2d with properties:

                 T: [3x3 double]
    Dimensionality: 2

類似性の最適化を使用した変換の推定

固定イメージと、わずかに位置のずれた移動イメージがある場合、関数 imregtform を使用して、イメージの位置を合わせるアフィン幾何学的変換を推定できます。imregtform は、規則的なステップ勾配降下オプティマイザーまたは (1+1) 進化オプティマイザーを使用して、2 つのイメージの平均二乗またはマテス相互情報量の類似度メトリクスを最適化します。詳細は、強度ベースのイメージ レジストレーションのオプティマイザーとメトリクスの作成を参照してください。

位相相関を使用した変換の推定

固定イメージと、わずかに位置のずれた移動イメージがある場合、関数 imregcorr を使用して、イメージの位置合わせを改善するアフィン幾何学的変換を推定できます。類似性の最適化を使用して、結果の変換を調整できます。

幾何学的変換の実行

幾何学的変換オブジェクトに変換を定義したら、関数 imwarp を使用して変換を実行します。関数を呼び出すときに、変換するイメージと幾何学的変換オブジェクトを指定します。

imwarp は、幾何学的変換を使用して、出力イメージの座標を入力イメージの対応する座標にマッピングします (逆マッピング)。次に、imwarp は座標マッピングを使用して入力イメージ内にピクセル値を内挿し、出力ピクセル値を計算します。

参考

| | | | | |

関連する例

詳細