パノラマ処理の手順

それではさっそく、パノラマ画像の作成に用いる入力画像が2枚の場合の処理手順を考えていきましょう。すなわちソース画像とターゲット画像の2枚の入力画像を撮影する場合です。ソース画像をターゲット画像に合うように位置合わせ移動をしてパノラマ画像の生成を行うには、主に以下の4つの処理を行います。

  1. (レジストレーション1)局所特徴量記述子による画像間の点対応の抽出:対応隣り合った画像同士を位置合わせするために、各画像から局所特徴量記述子を検出し、それらの画像間での対応関係を決定する(どの特徴量記述子同士が3次元空間上で同じ点を指し示しているかの対応)。
  2. (レジストレーション2)点対応を用いた画像間の移動量の算出:2枚の画像を1つに張り合わせる先であるパノラマ画像の「座標系モデル(円筒座標系、球面座標系など)」を選択したのち、(1)で求めた点対応からその座標系モデル上での「移動量(平行移動量、回転量など)」と「画像の変形量(ホモグラフィ)」を推定。
  3. (合成処理1)座標系モデルへの各画像の貼付け:(2)で求めた移動・変形量に沿って、実際に画像の移動と変形を実行し、座標系モデル上でソース画像とターゲット画像を張り合わせる。(例:球面座標系へ貼付けるには球面に沿って各画像を変形させる)。
  4. (合成処理2)自然なパノラマ画像にするための合成処理:各種画像処理(ぶれ補正やゴースト除去など)を行ったのちに、最終画像が自然な画像になるように2枚の画像の画素値合成処理を行う。これにより2枚の入力画像から1つのパノラマ画像が完成。

パノラマ画像の処理手順

入力画像が3枚以上の場合は、(1)の処理においてどの画像とどの画像のペアがそれぞれ重なり合うのかを決定する処理が新たに必要になります。また、(2)~(4)の処理では2枚だけではなく用いたすべての画像を用いて、最適な各画像の移動量、変形量、合成量を決定する必要が出てきます。このときStructure from Motionの時にも紹介した「バンドル調整」という各画像のパラメータの全体での最適化処理を行います。

今回は理解を楽にするため、そのような3枚以上の入力画像の時に必要な処理の説明は省略させていただき、「基本的な2枚の入力画像からのパノラマ画像生成処理」である、上記(1)~(4)の詳細のみをみていくことにします。

(1)の局所特徴量記述子による点対応の抽出では、パノラマ画像の張り合わせでは最初の処理として、Scale invariant feature transform(SIFT)に代表される「局所特徴量記述子」を各画像上でそれぞれ検出し、それらが(別の画像に写っているものの)実世界上においては同じ1点の3次元座標を共に示しているという「対応関係」を求める操作を行います。この対応関係を用いることで、ソース画像とターゲット画像の間にカメラ位置がどれだけ移動したかを計算することができます。ここでは1枚の画像から複数のSIFTを抽出する方法と、その抽出したSIFT同士の画像間での対応関係の作り方を紹介します。

以下の図は、2枚の画像からそれぞれ個別にSIFT特徴量を検出した結果と、それらの特徴点の中から対応する点同士を関係づけて、RANSACというアルゴリズムにより画像間の位置合わせを行った様子を示しています。

SIFT特徴量の検出によるパノラマ生成

「局所特徴量」とは、画像内のある局所的な領域が回転もしくはスケール変化(拡大縮小)しても、安定して同じような局所領域に特徴量を算出(検出)してくる事ができる特徴量です。この性質により、異なる画像間で似たような特徴を持つ場所を安定的に検出してきて、それらの対応関係を作ってレジストレーションや位置合わせ、ステレオ計算にパターン認識などが非常に安定的に行えるようになることから、局所特徴量はコンピュータビジョンの様々なアルゴリズムにおいて活用されています。

局所特徴量の代表格・元祖であるSIFTは、スケール不変特徴量変換(Scale invariant feature transform)の略で、画像に映る対象のスケールが変わっても安定的に同じ性質を持つ局所的な領域を検出してくれる特徴量算出アルゴリズムです。導入部で紹介したAutoStitchの論文の研究チームのDavid Lowe教授により発明された技術です(特許取得済み)。

SIFTの計算には、以下の2つの処理を行います。

  1. キーポイント(Blob特徴)の検出:(前処理)ガウシアンピラミッドを用いた最適なスケールにおける特徴点(キーポイント)を検出。回転変化とスケール変化に強い「Blob特徴」がキーポイントとして検出される。
  2. キーポイント上でのSIFT記述子の計算:(本処理)検出したキーポイント周辺領域(16×16画素)においてSIFT記述子(=輝度勾配のヒストグラム)を計算。

実際には他にも細かい処理を行うのですが、全体の処理手順を理解しやすくするためにそれらの説明は今回は割愛します。

SIFT特徴量記述子の計算