ドキュメンテーション

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

fitgeotrans

幾何学的変換のコントロール ポイントの組への近似

構文

tform = fitgeotrans(movingPoints,fixedPoints,transformationType)
tform = fitgeotrans(movingPoints,fixedPoints,'polynomial',degree)
tform = fitgeotrans(movingPoints,fixedPoints,'pwl')
tform = fitgeotrans(movingPoints,fixedPoints,'lwm',n)

説明

tform = fitgeotrans(movingPoints,fixedPoints,transformationType) はコントロール ポイントの組 movingPoints および fixedPoints を受け取り、これらを使用して transformationType で指定される幾何学的変換を推定します。

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

tform = fitgeotrans(movingPoints,fixedPoints,'pwl') は images.geotrans.PiecewiseLinearTransformation2D オブジェクトをコントロール ポイントの組 movingPoints および fixedPoints に近似します。この変換は平面を局所区分的線形領域に分割してコントロール ポイントをマッピングします。これらの各局所領域では、異なるアフィン変換がコントロール ポイントをマッピングします。

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

コード生成 サポート: あり。

MATLAB Function ブロック サポート: あり。

すべて折りたたむ

この例では、2 つのイメージの位置合わせに使用する幾何学的変換を作成する方法を説明します。

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

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

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

fixedPoints  = [11 11; 41 71];
movingPoints = [14 44; 70 81];

2 つのイメージの位置合わせに使用する幾何学的変換を作成します。変換は affine2d 幾何学的変換オブジェクトとして返されます。

tform = fitgeotrans(movingPoints,fixedPoints,'NonreflectiveSimilarity')
tform = 

  affine2d with properties:

                 T: [3×3 double]
    Dimensionality: 2

tform 推定を使用して、回転したイメージをリサンプルし、固定イメージにレジストレーションします。コントロール ポイントが正確に対応しないためにレジストレーション エラーが発生した部分が、カラー オーバーレイのような画像に緑色とマゼンタで表示されます。

Jregistered = imwarp(J,tform,'OutputView',imref2d(size(I)));
falsecolorOverlay = imfuse(I,Jregistered);
figure
imshow(falsecolorOverlay,'InitialMagnification','fit');

x 軸に平行な単位ベクトルがどのように回転および伸長したかを確認することで、変換の角度とスケールを復元します。

u = [0 1];
v = [0 0];
[x, y] = transformPointsForward(tform, u, v);
dx = x(2) - x(1);
dy = y(2) - y(1);
angle = (180/pi) * atan2(dy, dx)
scale = 1 / sqrt(dx^2 + dy^2)
angle =

   29.9816


scale =

    1.0006

入力引数

すべて折りたたむ

変換するイメージ内のコントロール ポイントの X 座標と Y 座標。m 行 2 列の double の行列として指定します。

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

データ型: double

ベース イメージ内のコントロール ポイントの X 座標と Y 座標。m 行 2 列の double の行列として指定します。

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

データ型: double

変換のタイプ。次のいずれかに指定します。

タイプ説明
'affine'アフィン変換
'nonreflectivesimilarity'無反射類似
'projective'射影変換
'similarity'相似

例: tform = fitgeotrans(movingPoints,fixedPoints,'nonreflectivesimilarity');

データ型: char

多項式の次数。整数 2、3 または 4 を指定します。

データ型: double

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

データ型: double

出力引数

すべて折りたたむ

変換。変換オブジェクトとして指定します。オブジェクトのタイプは変換タイプによって異なります。たとえば、変換タイプ 'affine’ を指定した場合、tformaffine2d オブジェクトになります。'pwl’ を指定すると、tformimage.geotrans.PiecewiseLinearTransformation2d オブジェクトになります。

詳細

すべて折りたたむ

コード生成

この関数では MATLAB® Coder™ を使用した C コードの生成がサポートされています。詳細は、「画像処理のコード生成」を参照してください。

コードを生成する際、transformationType 引数にはコンパイル時の定数を指定しなければなりません。変換タイプは 'nonreflectivesimilarity''similarity''affine''projective' のみがサポートされます。

MATLAB Function ブロック

この関数は Simulink の MATLAB Function ブロックで使用できます。

参照

[1] Goshtasby, Ardeshir, "Piecewise linear mapping functions for image registration," Pattern Recognition, Vol. 19, 1986, pp. 459-466.

[2] Goshtasby, Ardeshir, "Image registration by local approximation methods," Image and Vision Computing, Vol. 6, 1988, pp. 255-261.

R2013b で導入

この情報は役に立ちましたか?