Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

imregcorr

位相相関を使用した、2 つの 2 次元イメージの位置を合わせる幾何学的変換の推定

説明

tform = imregcorr(moving,fixed) は、イメージ moving を参照イメージ fixed と位置合わせする幾何学的変換を推定します。この関数は、moving 内のピクセルを fixed 内のピクセルにマッピングする幾何学的変換オブジェクト tform を返します。

tform = imregcorr(moving,Rmoving,fixed,Rfixed) は、イメージ moving を参照イメージ fixed と位置合わせする幾何学的変換を推定します。RmovingRfixed は、それぞれ moving イメージと fixed イメージに関する空間情報を含む空間参照オブジェクトです。返される変換オブジェクト tform は、ワールド座標系でポイント マッピングを定義します。

また、tform = imregcorr(___,tformType) は変換タイプ tformType を指定します。

また、tform = imregcorr(___,Window=window) は周波数領域でウィンドウ処理を実施するかどうかを指定します。レジストレーション結果の安定性を向上させるには、windowtrue と指定します。ただし、イメージ内の共通の特徴がエッジに沿った向きになっている場合は、windowfalse に設定することで優れたレジストレーション結果が得られる場合があります。

R2021a より前では、等価の構文 tform = imregcorr(__,"Window",window) を使用します。

また、[tform,peakcorr] = imregcorr(___) は、2 つのイメージ間の位相差のピーク相関 peakcorr を返します。

すべて折りたたむ

参照イメージをワークスペースに読み取ります。

fixed  = imread("cameraman.tif");

固定イメージのスケーリングと回転によって、合成の移動イメージを作成します。

scaleFactor = 2.3;
theta = 20;
translation = [0 0];
tform = simtform2d(scaleFactor,theta,translation);
moving = imwarp(fixed,tform);

合成ノイズを移動イメージに追加します。

moving = moving + uint8(10*rand(size(moving)));

固定イメージと移動イメージを並べて表示します。

imshowpair(fixed,moving,"montage")

Figure contains an axes object. The axes object contains an object of type image.

imregcorr を使用して、イメージの位置合わせに必要な変換を推定します。

tformEstimate = imregcorr(moving,fixed);

推定した幾何学的変換を移動イメージに適用します。名前と値の引数 "OutputView" を指定して、参照イメージと同じサイズで、同じワールド座標範囲をもつレジストレーションされたイメージを取得します。

Rfixed = imref2d(size(fixed));
movingReg = imwarp(moving,tformEstimate,"OutputView",Rfixed);

元のイメージとレジストレーションされたイメージを横に並べて表示して、レジストレーションをチェックします。次に、"falsecolor" オプションを使用して、レジストレーションされたイメージを元のイメージに重ね合わせて表示して、イメージが異なる領域を強調表示します。

imshowpair(fixed,movingReg,"montage")

Figure contains an axes object. The axes object contains an object of type image.

imshowpair(fixed,movingReg,"falsecolor");

Figure contains an axes object. The axes object contains an object of type image.

入力引数

すべて折りたたむ

移動イメージまたはレジストレーションされるイメージ。グレースケール イメージ、バイナリ イメージ、または RGB イメージとして指定します。imregcorr は、処理前に rgb2gray を使用して RGB イメージをグレースケール イメージに変換します。

メモ

moving の縦横比は出力変換 tform に影響します。最適な結果を得るには、正方形イメージを使用してください。

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

ターゲット方向の参照イメージ。グレースケール イメージ、バイナリ イメージ、または RGB イメージとして指定します。imregcorr は、処理前に rgb2gray を使用して RGB イメージ をグレースケール イメージに変換します。

メモ

fixed の縦横比は出力変換 tform に影響します。最適な結果を得るには、正方形イメージを使用してください。

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

移動イメージの空間参照情報。imref2d オブジェクトとして指定します。

固定イメージの空間参照情報。imref2d オブジェクトとして指定します。

推定する変換のタイプ。次のいずれかの値を指定します。

説明
"translation"

平行移動変換

"translation" オプションを空間参照オブジェクト Rmoving および Rfixed と共に使用する場合、入力イメージのピクセル範囲はワールド座標内で同じでなければなりません。

"rigid"

剛体変換: 平行移動と回転

"rigid" オプションを空間参照オブジェクト Rmoving および Rfixed と共に使用する場合、入力イメージのピクセル範囲はワールド座標内で同じでなければなりません。

"similarity"

相似変換: 平行移動、回転、等方性スケーリング

"similarity" オプションを使用する場合、位相相関アルゴリズムは固定イメージと移動イメージのスケールの差の一定範囲内でのみスケール不変となります。imregcorr は、探索空間を範囲 [1/4, 4] 内のスケールの差に限定します。1/4 未満であるか、4 を超えるスケールの差は、imregcorr では検出されません。

データ型: char | string

周波数領域におけるスペクトル漏れの効果を抑制するためのウィンドウ処理の使用。数値または logical の 1 (true) または 0 (false) として指定します。true の場合、関数 imregcorr はブラックマン フィルターを使用してウィンドウ処理を実行します。

出力引数

すべて折りたたむ

幾何学的変換。変換タイプ tformType に従う幾何学的変換オブジェクトとして返されます。

tformType幾何学的変換オブジェクト
"translation"transltform2d
"rigid"rigidtform2d
"similarity"simtform2d

2 つのイメージ間の位相差のピーク相関値。数値スカラーとして返されます。

ヒント

  • イメージのタイプが double である場合は、レジストレーション前に im2single を使用してイメージを single にキャストすることにより、パフォーマンスを向上させることができます。double 型の入力イメージを使用すると、FFT は double で計算されます。

参照

[1] Reddy, B. S. and Chatterji, B. N., An FFT-Based Technique for Translation, Rotation, and Scale-Invariant Image Registration, IEEE Transactions on Image Processing, Vol. 5, No. 8, August 1996

拡張機能

バージョン履歴

R2014a で導入

すべて展開する