コントロール ポイントを使用した投影歪みのあるイメージのレジストレーション
この例では、2 つのイメージに共通のコントロール ポイントを選択し、そのコントロール ポイントの位置を揃える幾何学的変換を推定して、両イメージのレジストレーションを行う方法を説明します。
イメージの読み取り
イメージ westconcordorthophoto.png
をワークスペースに読み取ります。このイメージは、地上にレジストレーションされた正射写真です。
ortho = imread('westconcordorthophoto.png'); imshow(ortho) text(size(ortho,2),size(ortho,1)+15, ... 'Image courtesy of Massachusetts Executive Office of Environmental Affairs', ... 'FontSize',7,'HorizontalAlignment','right');
イメージ westconcordaerial.png
をワークスペースに読み取ります。このイメージは飛行機から撮影されたもので、正射写真と比較して変形されています。レジストレーションされていないイメージは遠距離から撮影されており、地形が比較的平坦なため、歪みの大部分は射影になる可能性が大きくなります。
unregistered = imread('westconcordaerial.png'); imshow(unregistered) text(size(unregistered,2),size(unregistered,1)+15, ... 'Image courtesy of mPower3/Emerge', ... 'FontSize',7,'HorizontalAlignment','right');
コントロール ポイントのペアの選択
コントロール ポイントを対話的に選択するには、関数 cpselect
を使用してコントロール ポイント選択ツールを開きます。コントロール ポイントは、道路の立体交差や地勢など 2 つのイメージで識別できるランドマークです。cpselect
が射影変換をコントロール ポイントに近似できるように、コントロール ポイントのペアを 4 つ以上選択します。対応する移動点と固定点を選択したら、ツールを閉じてワークスペースに戻ります。
[mp,fp] = cpselect(unregistered,ortho,'Wait',true);
幾何学的変換の推測
関数 fitgeotrans
を使用して、移動点と固定点の位置が最も良く揃う射影変換のパラメーターを求めます。
t = fitgeotrans(mp,fp,'projective');
レジストレーションされていないイメージの変換
レジストレーションされていない航空イメージの変換を適用するには、関数 imwarp
を使用します。名前と値のペアの引数 'OutputView'
を使用して、変換後のイメージのサイズと位置が正射イメージのサイズと位置に一致するように指定します。
Rfixed = imref2d(size(ortho));
registered = imwarp(unregistered,t,'OutputView',Rfixed);
元の正射写真に変換後のイメージを重ねて表示し、レジストレーションの結果を確認します。
imshowpair(ortho,registered,'blend')
参考
cpselect
| cpcorr
| cpstruct2pairs
| fitgeotrans