2 次元および 3 次元の幾何学的変換プロセスの概要
2 次元または 3 次元幾何学的変換を実行するには、まず変換に関する情報を格納する幾何学的変換オブジェクトを作成します。次に、変換するイメージと幾何学的変換オブジェクトを関数 imwarp
に渡します。オプションで、入力イメージに関する空間参照情報を imwarp
に指定できます。
imwarp
は、幾何学的変換を使用して、出力イメージの座標を入力イメージの対応する座標にマッピングします (逆マッピング)。次に、imwarp
は座標マッピングを使用して入力イメージ内にピクセル値を内挿し、出力ピクセル値を計算します。
幾何学的変換オブジェクトの作成
異なるタイプの幾何学的変換オブジェクトには、変換に関する異なる情報が格納されます。
いくつかのオブジェクトには、特定のタイプの線形幾何学的変換を表す変換行列が格納されます。このようなオブジェクトには、
affinetform2d
、affinetform3d
、rigidtform2d
、rigidtform3d
、simtform2d
、simtform3d
、transltform2d
、transltform3d
、およびprojtform2d
があります。geometricTransform2d
およびgeometricTransform3d
オブジェクトには、点単位の逆マッピング関数、およびオプションで点単位のフォワード マッピング関数が格納されます。PolynomialTransformation2D
オブジェクトには、逆ポイント マッピングが 2 次元多項式の形式で格納されます。LocalWeightedMeanTransformation2D
およびPiecewiseLinearTransformation2D
オブジェクトは、さまざまな形式の、局所的に変化する点単位のマッピング関数を表します。
幾何学的変換オブジェクトを作成するには、いくつかの方法があります。
幾何学的変換の作成方法 |
|
|
| projective2d |
| 他の幾何学的変換 |
---|---|---|---|---|---|---|
平行移動、回転、またはスケーリング パラメーターの指定 | X | X | ||||
変換行列の指定 | X | X | X | X | ||
点単位のカスタム マッピング関数の指定 | X | |||||
コントロール ポイントのペアからの変換の推定 | X (2 次元) | X (2 次元) | X (2 次元) | X | ||
類似性の最適化を使用した変換の推定 | X (2 次元) | X (2 次元) | X (2 次元) | |||
位相相関を使用した変換の推定 | X (2 次元) | X (2 次元) | ||||
ランダムなアフィン変換の生成 | X |
平行移動、回転、またはスケーリング パラメーターの指定
平行移動、回転角度、および倍率の量が既知の場合は、これらのパラメーターを指定して変換を作成することができます。
平行移動を指定して、平行移動変換を表す
transltform2d
オブジェクトおよびtransltform3d
オブジェクトを作成します。平行移動、回転角度、またはその両方を指定して、剛体変換を表す
rigidtform2d
オブジェクトおよびrigidtform3d
オブジェクトを作成します。平行移動、回転、および等方性倍率の組み合わせを指定して、無反射相似変換を表す
simtform2d
オブジェクトおよびsimtform3d
オブジェクトを作成します。
次の例では、平行移動および回転角度を定義してから、指定されたパラメーターから rigidtform2d
幾何学的変換オブジェクトを作成します。
theta = 30; translation = [10 20.5]; tform = rigidtform2d(theta,translation)
tform = rigidtform2d with properties: Dimensionality: 2 RotationAngle: 30 Translation: [10 20.5000] R: [2×2 double] A: [0.8660 -0.5000 10.0000 0.5000 0.8660 20.5000 0 0 1.0000]
変換行列の指定
もっと複雑な線形幾何学的変換の場合は、変換を行列として表すことができます。たとえば、射影変換、あるいは鏡映、異方性スケーリング、せん断、または線形変換の成分を含むアフィン変換に行列表現を使用します。変換行列を指定して、affinetform2d
、affinetform3d
、または projtform2d
オブジェクトを作成します。変換行列の作成の詳細については、幾何学的変換の行列表現を参照してください。
次の例では、異方性スケーリングおよび y 軸に関する鏡映の変換行列を定義してから、変換行列から affinetform2d
幾何学的変換オブジェクトを作成します。
scaleX = 0.8; scaleY = 1.5; A = [scaleX 0 0; 0 -scaleY 0; 0 0 1]; tform = affinetform2d(A)
tform = affinetform2d with properties: Dimensionality: 2 A: [0.8000 0 0 0 -1.5000 0 0 0 1.0000]
点単位のカスタム マッピング関数の指定
点単位の逆マッピング関数がある場合、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: [function_handle] 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: [function_handle] ForwardFcn: [] Dimensionality: 3
コントロール ポイントのペアからの変換の推定
幾何学的変換オブジェクトを作成するには、関数 fitgeotform2d
にコントロール ポイントのペアを渡します。関数 fitgeotform2d
はこれらのポイントから変換を自動的に推定し、幾何学的変換オブジェクトの 1 つを返します。
必要な点の数は、変換の種類によって異なります。たとえば、アフィン変換では各イメージに 3 つの同一線上にない点 (三角形) が必要ですが、射影変換では 4 つの点 (四角形) が必要です。
この例では、2 ペアのコントロール ポイントを定義してから、fitgeotform2d
を使用して affinetform2d
幾何学的変換オブジェクトを作成します。
movingPoints = [11 11;21 11; 21 21];
fixedPoints = [51 51;61 51;61 61];
tform = fitgeotform2d(movingPoints,fixedPoints,"affine")
tform = affinetform2d with properties: Dimensionality: 2 A: [1.0000 0 40.0000 0 1.0000 40.0000 0 0 1.0000]
類似性の最適化を使用した変換の推定
固定イメージと、わずかに位置のずれた移動イメージがある場合、関数 imregtform
を使用して、イメージの位置を合わせるアフィン幾何学的変換を推定できます。imregtform
は、規則的なステップ勾配降下オプティマイザーまたは (1+1) 進化オプティマイザーを使用して、2 つのイメージの平均二乗またはマテス相互情報量の類似度メトリクスを最適化します。詳細については、強度ベースのイメージ レジストレーションのオプティマイザーとメトリクスの作成を参照してください。
位相相関を使用した変換の推定
固定イメージと、わずかに位置のずれた移動イメージがある場合、関数 imregcorr
を使用して、イメージの位置合わせを改善するアフィン幾何学的変換を推定できます。類似性の最適化を使用して、結果の変換を調整できます。
ランダムなアフィン変換の生成
関数 randomAffine2d
および randomAffine3d
を使用することで、ランダム化された変換パラメーターをもつアフィン幾何学的変換を作成できます。これらの関数は、各軸に関する鏡映、回転、せん断、および異方性倍率を含むすべてのアフィン パラメーターをサポートしています。ランダム化されたアフィン変換は、深層学習のデータ拡張手法として一般に使用されています。