処理(1):動き推定

この処理では、グローバルな(画像全体の)動きと、その動きとは別の(撮影中の各物体の動きなどの)ローカルな(局所領域ごとの)動きの2つを計算します。

まずは、カメラの手ぶれなどによる、「画像全体の動き(グローバルな動き)」を推定します。こうして推定したグローバルな動きだけを用いて各フレームを移動すると、先程の図の上側のシーケンスのような「カメラ動きは安定したが、そのおかげで各フレームに欠損領域が生じている」というシーケンスが得られます。今回紹介している松下氏ほかの手法では、画像全体のレジストレーション(位置合わせ)から、ホモグラフィとして各フレーム間でのグローバル移動量を計算していますが、代わりに局所特徴量のマッチング計算によりグローバル移動量を推定することも可能です(スティッチングでの対応点計算などのように)。

次に、インペインティングの時に力を発揮する「ローカルな動き」をオプティカルフロー計算(Lucas-Kanade法など)で推定しておきます。ここで推定する局所領域ごとの動きは、グローバルな動き(カメラとしての全体的な動き)に対する、各物体の動きから生じる偏差分に相当します。つまり、オプティカルフローからグローバルな動きを差し引くと、各領域の動き量が導きだせるわけです。ただ、撮影方法やカメラの動き次第では、ローカルな動きとグローバルな動きが区別できず、分離できない場合もある点には注意してください(オプティカルフローが2次元モーションモデルでの動き推定であるので、奥行き変化の無い、上下左右の2次元的変化のみの映像ほど、正しくビデオ安定化の処理を行うことが可能とも言えます。デジタルビデオ安定化の初回で紹介した動画も、横に真っすぐカメラ移動している映像でした)。

こうしてまずはグローバルとローカルの動きを推定したものの、このグローバルな動きは手ブレ分の動きを含んだままの元の動き量です。従って、次の処理(2)でグローバルな動きを安定化した滑らかな動きに処理することになります。

処理(2)-1:モーション平滑化

処理(1)で推定したグローバルな動きに対して、平滑化によって細かい動き(手ブレ分など)の除去を行い、安定化したグローバル動き量に変換します。手ブレ除去後の安定したグローバルな動きは、フレーム間での「(1)変化量が少ない」「(2)変化がゆっくりである」と仮定することができます。従って、大きな変化が速く起こっている成分(高周波成分)を除去することで、安定化した滑らかなグローバル動き量を求めることができます(平滑化フィルタをかける際には、例えば10フレームごとくらいの窓で(前後5フレームずつ)平滑化を実施します)。

処理(2)-2:モーションインペインティング

平滑化により求めた安定したグローバル動き量で各フレームをとりあえず移動させると、元の動画とは違った位置に各画素が移動するので、各フレームには欠損領域が残ります。そこで、それらの欠損領域を自然な画素値でインペインティングするために、欠損領域中のローカルな動きも推定しておきます。推定したローカルな動きにより、周辺フレームから欠損していない画素を(推定したフローベクトルによる対応画素から)コピーして来ることができるようになり、より自然な画素値でインペインティングしやすくなるわけです。そこで、欠損領域のコピー元画素を推定するために、欠損領域の動き量を推定する「モーションインペインティング」という処理を行います。

(詳細のアルゴリズムの説明は割愛しますが)以前に紹介した1枚の画像に対するインペインティングにより、欠損していない領域の(オプティカルフローにより求めた)フローベクトルを、欠損領域との境界でのつながりが一番もっともらしくなるベクトル値で順々に埋めていき、隣り合う値同士がもっともらしいフローベクトルの値を伝播させていくことで、欠損領域のフローベクトル値を埋めて行きます。こうしてモーションインペインティングで求めた欠損領域のオプティカルフローは、(3)の処理で用いることになります。

処理(3)-1:モーションブラーの除去

ビデオ安定化では、「モーションブラーの除去」が行われないと、「せっかくカメラの動きは安定化したのに、安定化させる前に映っていたモーションブラーの領域はボケたままの状態で残ってしまう」という問題があります。そこで、ボケ除去処理を行い、モーションブラー領域をなるべく鮮明な画素へと処理しておきます(今回の焦点は「動き推定」ですので、ボケ除去の詳細は省きます)。今回は、実際はモーションブラーを除去して鮮明にした状態から、モーションインペインティングなどを行っても良いかもしれません。ボケ除去前と除去後の、どちらの状態で動き推定を行うかは、動画の動き状況や映っている各画素の対応具合ですので、先にボケ除去しておくのが適しているかどうかは断言できませんので。

処理(3)-2:局所変形による画像インペインティング

最後の処理として、モーションインペインティングで求めておいた欠損領域のオプティカルフローを活用して、欠損領域の画素をインペインティングしていきます。

処理(1)で推定したオプティカルフローにより、あるフレームと周辺のフレーム間で、推定したフローベクトルを用いた画素同士のフレーム間対応が既に推定されています。この対応を用いて、欠損領域の画素のインペインティングを行い、それらしい値で画素を埋めます。