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

estimateGeometricTransform

マッチする点のペアから幾何学変換を推定

説明

tform = estimateGeometricTransform(matchedPoints1,matchedPoints2,transformType) は、2 次元幾何学的変換オブジェクト tform を返します。tform オブジェクトは、matchedPoints1 のインライアを matchedPoints2 のインライアにマッピングします。

関数は、M-estimator SAmple Consensus (MSAC) アルゴリズムを使用して外れ値を排除します。MSAC アルゴリズムは、Random Sample Consensus (RANSAC) アルゴリズムのバリアントです。MSAC アルゴリズムのランダム性のために、すべての実行で結果が同一にならない場合があります。

[tform,inlierpoints1,inlierpoints2] = estimateGeometricTransform(matchedPoints1,matchedPoints2,transformType) は、inlierpoints1inlierpoints2 の対応するインライア点を返します。

[___,status] = estimateGeometricTransform(matchedPoints1,matchedPoints2,transformType) は、ステータス コード 01 または 2 を返します。status コードの出力を要求しない場合、関数は結果を生成できない状態に対してエラーを返します。

[___] = estimateGeometricTransform(matchedPoints1,matchedPoints2,transformType, Name,Value) は、1 つ以上の Name,Value 引数ペアによって指定された追加オプションを使用します。

すべて折りたたむ

イメージと変換されたイメージを読み取って表示します。

original  = imread('cameraman.tif');
imshow(original);
title('Base image');

distorted = imresize(original,0.7); 
distorted = imrotate(distorted,31);
figure; imshow(distorted);
title('Transformed image');

両方のイメージから特徴を検出して抽出します。

ptsOriginal  = detectSURFFeatures(original);
ptsDistorted = detectSURFFeatures(distorted);
[featuresOriginal,validPtsOriginal] = ...
    extractFeatures(original,ptsOriginal);
[featuresDistorted,validPtsDistorted] = ...
    extractFeatures(distorted,ptsDistorted);

特徴をマッチさせます。

index_pairs = matchFeatures(featuresOriginal,featuresDistorted);
matchedPtsOriginal  = validPtsOriginal(index_pairs(:,1));
matchedPtsDistorted = validPtsDistorted(index_pairs(:,2));
figure; 
showMatchedFeatures(original,distorted,...
    matchedPtsOriginal,matchedPtsDistorted);
title('Matched SURF points,including outliers');

外れ値を排除し、変換行列を計算します。

[tform,inlierPtsDistorted,inlierPtsOriginal] = ...
    estimateGeometricTransform(matchedPtsDistorted,matchedPtsOriginal,...
    'similarity');
figure; 

showMatchedFeatures(original,distorted,...
    inlierPtsOriginal,inlierPtsDistorted);
title('Matched inlier points');

歪んだイメージから元のイメージを復元します。

outputView = imref2d(size(original));
Ir = imwarp(distorted,tform,'OutputView',outputView);
figure; imshow(Ir); 
title('Recovered image');

入力引数

すべて折りたたむ

イメージ 1 のマッチ点。KAZEPoints, cornerPoints オブジェクト、SURFPoints オブジェクト、MSERRegions オブジェクト、ORBPoints オブジェクト、または [x,y] 座標の M 行 2 列の行列のいずれかとして指定します。関数は、M-estimator SAmple Consensus (MSAC) アルゴリズムを使用して外れ値を排除します。MSAC アルゴリズムは、Random Sample Consensus (RANSAC) アルゴリズムのバリアントです。

イメージ 2 のマッチ点。KAZEPoints, cornerPoints オブジェクト、SURFPoints オブジェクト、MSERRegions オブジェクト、ORBPoints オブジェクト、または [x,y] 座標の M 行 2 列の行列のいずれかとして指定します。関数は、M-estimator SAmple Consensus (MSAC) アルゴリズムを使用して外れ値を排除します。MSAC アルゴリズムは、Random Sample Consensus (RANSAC) アルゴリズムのバリアントです。

変換タイプ。3 つの文字列のいずれかとして指定します。変換タイプは 'similarity''affine' または 'projective' に設定できます。マッチする点のペアの数が多くなると、推定された変換の精度が高くなります。各変換タイプのマッチする点のペアの最小数は次のとおりです。

変換タイプマッチする点のペアの最小数
'similarity'2
'affine'3
'projective'4

データ型: char

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を、任意の順番で指定できます。

例: 'Confidence',99 の場合、信頼度の値が 99 に設定されます。

インライアを検出するためのランダム試行の最大回数。'MaxNumTrials' と正の整数スカラーで構成されるコンマ区切りのペアとして指定します。この値を大きくすると結果のロバスト性は向上しますが、計算量が増加します。

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

最大数のインライアの検出の信頼度。'Confidence' と (0 100) の範囲のパーセント比数値スカラーで構成されるコンマ区切りのペアとして指定します。この値を大きくすると結果のロバスト性は向上しますが、計算量が増加します。

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

ある点からそれに対応する点の投影までの最大距離 (ピクセル単位)。'MaxDistance' と正の数値スカラーで構成されるコンマ区切りのペアとして指定します。対応する投影は、推定された変換に基づきます。

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

出力引数

すべて折りたたむ

幾何学的変換。affine2d オブジェクトまたは projective2d オブジェクトとして返されます。

返された幾何学的変換行列は、matchedPoints1 のインライアを matchedPoints2 のインライアにマッピングします。transformType 入力を 'similarity' または 'affine' に設定すると、関数は affine2d オブジェクトを返します。それ以外の場合は projective2d オブジェクトを返します。

ステータス コード。値 01 または 2 として返されます。

status説明
0エラーなし。
1matchedPoints1 入力と matchedPoints2 入力に十分な数の点が含まれていません。
2十分な数のインライアが見つかりませんでした。

status コードの出力を要求しない場合、関数は結果を生成できない 2 つの状態に対してエラーをスローします。

データ型: double

イメージ 1 のインライア点。マッチする入力点と同じタイプとして返されます。

イメージ 2 のインライア点。マッチする入力点と同じタイプとして返されます。

参照

[1] Hartley, R., and A. Zisserman, "Multiple View Geometry in Computer Vision," Cambridge University Press, 2003.

[2] Torr, P. H. S., and A. Zisserman, "MLESAC: A New Robust Estimator with Application to Estimating Image Geometry," Computer Vision and Image Understanding, 2000.

拡張機能

R2013a で導入