Main Content

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

cpcorr

相互相関を使用したコントロール ポイントの位置の調整

説明

movingPointsAdjusted = cpcorr(movingPoints,fixedPoints,moving,fixed) は、移動イメージ moving および固定イメージ fixed の正規化された相互相関に基づき、固定コントロール ポイント fixedPoints を基準とした場合の移動コントロール ポイント movingPoints の位置を調整します。関数 cpcorr は、調整済みの移動コントロール ポイントを movingPointsAdjusted で返します。

すべて折りたたむ

2 つのイメージをワークスペースに読み取ります。

moving = imread('onion.png');
fixed = imread('peppers.png');

両方のイメージに一連のコントロール ポイントを定義します。

movingPoints = [118 42;99 87];
fixedPoints = [190 114;171 165];

イメージを表示した後、コントロール ポイントを白色で表示します。移動ポイントの位置が、固定ポイントの位置から多少ずれています。

imshow(fixed)
hold on
plot(fixedPoints(:,1),fixedPoints(:,2),'xw') 
title('Fixed Image')

Figure contains an axes object. The axes object with title Fixed Image contains 2 objects of type image, line. One or more of the lines displays its values using only markers

figure
imshow(moving)
hold on
plot(movingPoints(:,1),movingPoints(:,2),'xw') 
title('Moving Image')

Figure contains an axes object. The axes object with title Moving Image contains 2 objects of type image, line. One or more of the lines displays its values using only markers

相互相関を使用して移動コントロール ポイントを調整します。

movingPointsAdjusted = cpcorr(movingPoints,fixedPoints, ...
    moving(:,:,1),fixed(:,:,1))
movingPointsAdjusted = 2×2

  115.9000   39.1000
   97.0000   89.9000

調整後の移動ポイントを黄色で表示します。元の移動ポイント (白色) に比べ、調整後のポイントの位置は固定ポイントに近くなっています。

plot(movingPointsAdjusted(:,1),movingPointsAdjusted(:,2),'xy')

Figure contains an axes object. The axes object with title Moving Image contains 3 objects of type image, line. One or more of the lines displays its values using only markers

入力引数

すべて折りたたむ

変換するイメージ内のコントロール ポイントの座標。m 行 2 列の行列として指定します。2 つの列は、それぞれイメージの固有座標系におけるコントロール ポイントの x 座標と y 座標を表します。

例: [127 93; 74 59]

データ型: double

参照イメージ内のコントロール ポイントの座標。p 行 2 列の行列として指定します。2 つの列は、それぞれイメージの固有座標系におけるコントロール ポイントの x 座標と y 座標を表します。

例: [323 195; 269 161]

データ型: double

レジストレーションされるイメージ。数値配列として指定します。

ターゲット方向の参照イメージ。数値配列として指定します。

出力引数

すべて折りたたむ

変換するイメージ内のコントロール ポイントの調整後の座標。movingPoints と同じサイズの数値行列として返されます。

データ型: double

ヒント

  • moving イメージと fixed イメージのスケールが同じでないと、cpcorr は有効になりません。

  • cpcorr がコントロール ポイントのペアを相関できない場合、その組の movingPointsAdjusted には movingPoints と同じ座標が含まれます。

  • 次の条件がどれか 1 つでも当てはまる場合、cpcorr は点を調整できません。

    • 点がいずれかのイメージのエッジに近すぎる

    • イメージ内で点の周辺領域に Inf または NaN が含まれている

    • 移動イメージで点の周辺領域にゼロの標準偏差がある

    • イメージ内の点の周辺領域に正しい相関がない

アルゴリズム

cpcorr はコントロール ポイントの位置を最大 4 ピクセルだけ移動します。調整後の座標の誤差は最大 0.1 ピクセルです。cpcorr は、イメージの内容とコントロール ポイントの大まかな選択からサブピクセル精度を得るように設計されています。

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する