Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

estimateGeometricTransform

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

説明

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

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

メモ

この関数は将来のリリースで削除される予定です。高度な機能を提供する関数 estimateGeometricTransform2d または estimateGeometricTransform3d を使用します。

[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 With Outliers');

外れ値を排除して変換行列を推定し、その結果を表示します。

[tform,inlierIdx] = estimateGeometricTransform2D(matchedPtsDistorted,matchedPtsOriginal,'similarity');
inlierPtsDistorted = matchedPtsDistorted(inlierIdx,:);
inlierPtsOriginal  = matchedPtsOriginal(inlierIdx,:);

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

イメージ 2 のマッチ点。KAZEPointscornerPoints オブジェクト、SURFPoints オブジェクト、MSERRegions オブジェクト、ORBPoints オブジェクト、BRISKPoints、または [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 で導入