ドキュメンテーション

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

cpcorr

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

構文

movingPointsAdjusted = cpcorr(movingPoints,fixedPoints,moving,fixed)

説明

movingPointsAdjusted = cpcorr(movingPoints,fixedPoints,moving,fixed) は正規化された相互相関を使用して movingPoints および fixedPoints で指定されたコントロール ポイントの各組を調整します。movingfixed はイメージです。cpcorrmovingPointsAdjusted に調整されたコントロール ポイントを返します。

メモ

moving イメージと fixed イメージのスケールが同じでないと、cpcorr は有効になりません。cpcorr がコントロール ポイントの組を相関できない場合、その組の movingPointsAdjusted には movingPoints と同じ座標が含まれます。

すべて折りたたむ

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

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

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

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

イメージを表示した後、コントロール ポイントを白色で表示します。

figure; imshow(fixed)
hold on
plot(fixedPoints(:,1),fixedPoints(:,2),'xw') 
title('fixed')

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

移動ポイントの位置にわずかな誤差が見られます。

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

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

  115.9000   39.1000
   97.0000   89.9000

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

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

入力引数

すべて折りたたむ

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

例: movingPoints = [127 93; 74 59];

データ型: double

参照イメージ内のコントロール ポイントの座標。M 行 2 列の double 行列として指定します。

例: fixedPoints = [323 195; 269 161];

データ型: double

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

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

出力引数

すべて折りたたむ

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

ヒント

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

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

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

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

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

アルゴリズム

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

R2006a より前に導入

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