画像一枚でのインペインティングでは、欠損領域以外の画素から、最もパッチごとの類似度が近いものをコピーして埋める処理を繰り返し続けることで穴埋めを行います。

それに対してビデオ安定化での穴埋めは、モーションインペインティングで先に欠損領域のオプティカルフローを穴埋めしたのちに、今度は(オプティカルフローはフレーム間の画素の移動度なので)隣り合うフレームの欠損していない画素の値をコピーしてきて、欠損領域の画素を埋めていきます。これにより、動いている途中の物体に対しても、より自然で滑らかな穴埋めが実現できます。

具体的には、たとえば周辺の前後5フレームまでを探索対象とすると、探索領域のフローベクトルを用いて対応する隣のフレームの画素に移動し、欠損領域で無い移動元の画素が見つかるまで、前後5フレーム内で探索します。そうして最初に見つかった周辺フレームでの非欠損領域画素を用いて、欠損領域の画素を埋めていきます。これにより、画像一枚の中で一番近い類似画素を探すよりも、より自然な画素で欠損領域を埋めていけることになります(ただし、動き推定がうまくできていない場合は、自然な画素でインペインティングしにくくなり、穴埋め結果は悪化することになる点には注意してください)。

以下の図は、ビデオ安定化で動画的に処理したものと、一枚のフレームによるインペインティングでの処理結果の比較です。

図中、左がビデオ安定化による結果で、自然で滑らかな変化になっていることがわかります。一方、右は一枚の画像だけからインペインティングした結果で、この対象人物が動いていることから、(周辺フレームでの類似パッチを用いてないことや、動きによるモーションブラーの影響などから)、多少不自然な穴埋めになってしまっています。

まとめ

以上、手ブレ補正をソフトウェア的に後処理で行う「デジタルビデオ安定化」の仕組みを紹介しました。

また、これを通じて、オプティカルフローという2枚のフレーム間での動きベクトルフィールドの推定という技術を紹介しました。このオプティカルフローは、非常に汎用性の高い技術です。今回のビデオ安定化で用いられていたような「動き補償」の目的で古くらから動画符号化で応用されており、自動車分野での前方車載カメラの各種処理でも用いられています。また、近年では(私の所属する青木研究室も得意とする)人間の「行動認識(Activity Recognition)」での応用も活発です。

コンピュータビジョンでは、一枚絵の画像に対する処理も当然重要ですが、それと同じくらい動画からの時系列シーケンス的な処理も重要です。その時系列的な処理において、「動き量」という一番基本的な計測を行うオプティカルフローの技術は、出力はただの動きベクトル場なので地味かもしれませんが、非常に重要な技術だと言えます。今回の記事の焦点がビデオ安定化なので、オプティカルフローの技術の詳細説明までは行いませんでしたが、ビジョンが専門の方は、是非オプティカルフローについては仕組みを良く理解して、かつご自分の問題でも使いこなせるようにされることをおすすめします。

以上、「コンピュータビジョンを用いた写真・映像編集技術シリーズ」は今回で終了です。

次回からは、がらっと雰囲気を変えた新シリーズの開始を予定していますので、ご期待ください。