Image Registration
特徴量または輝度のマッチング、幾何学的変換、検証を用いて画像を位置合わせし、衛星画像の変化検出、医用画像処理、コンピュータービジョンに役立てる画像レジストレーションの仕組みをご紹介します。
画像レジストレーションとは、シーン内の同じ場所が対応する座標に位置するように、2枚以上の画像を位置合わせする処理です。6月に撮影した衛星画像を1月に撮影した画像に重ねる場面を想像してください。カメラの角度や位置が変わっていると、道路自体は移動していなくても、道路がずれて見えることがあります。レジストレーションでは、コンピュータービジョンシステムが画像を比較したり、画像の情報を統合したりする前に、この幾何学的なずれを補正します。
画像レジストレーションの仕組み#
レジストレーションのワークフローでは、ターゲット座標系を定義する画像を固定画像として指定し、これに位置合わせする画像を移動画像として指定します。システムは空間変換を推定し、移動画像をリサンプリングして、新しい位置でのピクセル値を計算します。結果はオーバーレイとして確認できます。変化していない構造は重なり、実際の変化は見える状態に保たれます。ImageJのレジストレーション概要では、対応点、変換、位置合わせされた画像の関係が説明されています。
変換を推定する一般的な方法は2つあります。特徴ベースのレジストレーションでは、両方の画像から角などの認識しやすい位置を特定し、同じ場所を表す点を対応付けます。次に、対応点に基づいて変換を当てはめ、可能な場合は誤った対応を除外します。OpenCVの特徴点マッチングとホモグラフィーのガイドでは、この方法が説明されています。輝度ベースのレジストレーションでは、代わりに画像のピクセル値間の類似度を示す指標が向上するよう、変換を調整します。この指標と、オプティマイザーと呼ばれる探索手順は、輝度ベースのレジストレーションワークフローの中心となる要素です。
変換の選択#
適切な変換は、画像が異なる理由によって決まります。平行移動は、単純な水平方向または垂直方向のずれに対応します。剛体変換では、距離を保ちながら回転も可能です。アフィンレジストレーションでは、さらに拡大縮小やせん断にも対応しますが、画像全体に同じ変換を適用します。射影変換、すなわちホモグラフィーは、対応するシーンがおおむね平面である場合に、遠近法の違いを補正できます。MathWorksによる幾何変換の種類の解説では、それぞれの違いが視覚的に示されています。
シーンによっては、領域ごとに異なる量の移動を可能にする変形可能レジストレーションが必要です。たとえば、スキャンの間に解剖学的構造の形状が変化する場合が該当します。この柔軟性により局所的な位置合わせを改善できますが、不自然な変形によって実際の違いが見えなくなる可能性があります。そのため、SimpleITKのレジストレーションフレームワークなどの医用画像ツールでは、変換、類似度指標、オプティマイザー、補間方法を明示的に指定します。
レジストレーションと関連するビジョンタスク#
レジストレーションが扱うのは、単なる見た目の類似性ではなく、共通の座標系です。画像マッチングでは、視覚的に対応するコンテンツを検出し、レジストレーションに必要な点のペアを提供することがあります。レジストレーションではさらに、空間的な位置合わせを推定して適用します。キーポイントを対応点として使用できますが、移動する人物や車両上の点は、通常、静止した背景の位置合わせに適した基準点ではありません。
同様に、オプティカルフローはフレーム間の見かけ上の動きを推定します。scikit-imageのオプティカルフローによるレジストレーション例で示されているように、その動きの推定結果はフレームのレジストレーションに役立ちますが、フロー自体が正確な位置合わせを保証するわけではありません。物体追跡の目的は異なり、時間の経過に伴って物体の同一性を維持することです。トラッカーは、カメラの動きと物体の動きを混同しないよう、背景の動きの推定結果を利用することがあります。
AIアプリケーションでの重要性#
衛星画像による変化検出では、アナリストが数カ月の間隔を空けて撮影された農地の画像を比較し、新たに開墾された区域を特定することがあります。レジストレーションでは、変化検出モデルが画像を比較する前に、農地、道路、境界線が同じピクセル位置に揃うようにします。そうしないと、農地の境界線のずれが土地被覆の変化に見える可能性があります。位置合わせ後も、季節、照明、センサーの種類の違いには注意が必要です。これは衛星画像解析でよく見られる課題です。
医用画像解析では、臨床医が別々の診察時に撮影したスキャンを比較し、病変に変化があったかどうかを評価することがあります。スキャンを位置合わせすると、同じ解剖学的領域を比較したり、セグメンテーションモデルに渡したりしやすくなります。解剖学的構造は変形する可能性があり、撮像方法によって明るさのパターンも異なるため、適切なレジストレーションでは、すべての領域の見た目を無理に揃えるのではなく、臨床的に意味のある違いを保つ必要があります。
実践的なレジストレーションと検証#
ずれをもっともらしく説明できる、最も単純な変換から始めます。画像間で十分な範囲のコンテンツが共通していることを確認し、解像度の違いを考慮したうえで、マッチングが最も強い箇所だけでなく、複数の位置で位置合わせを確認します。後で予測やアノテーションを元の画像に対応付ける必要がある場合は、推定した変換を保存します。OpenCVの幾何変換ガイドでは、画像ワーピングによって変換後のピクセルを配置する方法が説明されています。
以下の自己完結型の例では、scikit-imageの位相相関ワークフローを使用して平行移動を推定します。pip install scikit-image scipyで依存関係をインストールしてください。
import numpy as np
from scipy.ndimage import shift
from skimage import data
from skimage.io import imsave
from skimage.registration import phase_cross_correlation
# 基準画像と、同じ画像をずらした複製を作成します。
fixed = data.camera()
moving = np.roll(fixed, shift=(12, -8), axis=(0, 1))
# 移動画像を固定画像に位置合わせするために必要なずれを推定します。
estimated_shift, _, _ = phase_cross_correlation(fixed, moving)
aligned = shift(moving, estimated_shift, order=0, mode="grid-wrap")
imsave("registered.png", aligned)
print(estimated_shift)出力された値は補正量を示し、registered.pngには位置合わせ後の画像が表示されます。これは平行移動のみを扱う例であり、回転、変形、異なるセンサーで撮影された画像には対応していません。移動カメラを使う動画パイプラインでは、Ultralytics YOLOのトラッキングが関連する応用例です。カメラモーション補償によってフレーム間のワープを推定し、追跡対象の位置を一貫して保つのに役立ちます。このトラッカーの処理は、汎用的な位置合わせ済み画像を生成するのではなく、フレーム間の対応付けを支援します。









