>   >  NUKE プラクティカル・ガイド:Vol.5:3D トラッキングとカメラプロジェクションを用いたクリーンアップ
Vol.5:3D トラッキングとカメラプロジェクションを用いたクリーンアップ

Vol.5:3D トラッキングとカメラプロジェクションを用いたクリーンアップ

STEP 1:撮影プレートからカメラの動きを取得〜3D トラッキング

3D トラッキングというのは、撮影された映像から、それを撮影したカメラの動きを解析するというものである。NUKE の場合は、NUKEX という上位版でのみ使用可能であり、[CameraTracker] というノードに実装されている。一般的なスタンドアロンの 3D トラッキングソフトに比べても遜色ない、高機能さが魅力だ。ここからは、この [CameraTracker] ノードの使い方を解説しよう。

CameraTrackerノード

NUKEX に実装されている [CameraTracker] ノードは、半自動でトラッキングを行なってくれる。細かな調整も効くので、スタンドアロンの 3D トラッキングソフトと比べても見劣りしない。作業を Nuke 内で完結できるというのも大きなメリットだ

3D トラッキングは、今やかなりの部分をオートで処理してくれ、数年前に比べて精度もそれなりに高い。もちろん、ショットによっては色々と付加的情報を与え、さらにその情報を整理しないと上手くいかない場合もあるが、今回の作例のような、カメラ前を横切る人物を消すぐらいであれば、オートで処理しても高確率で良好な結果を得ることができる。
手順としては、feature track と呼ばれる画面内でコントラストのある特徴点を検出。これは 2D トラックであり、画面内からたくさんの feature を拾い上げ、feature の移動量、さらには feature 同士の相対的な移動量などを元に、静態したシーンにおいてのカメラの動きを解析(Camera solver)する。もちろん、先に述べたように撮影シーン内でのオブジェクトの大きさや、オブジェクト同士の配置距離、カメラのレンズの種類等、付加的情報があればそれを入力し、Camera solver の精度をさらに上げることが可能だ。

まずレンズの歪(ひずみ)の補正を行う。[CameraTracker] ノードで直接操作も可能だが、今回は [LensDistortion] ノードを用いた。撮影に使用した同じカメラ、同じレンズでグリッドを撮影し [LensDistortion] ノードに接続。線が細いグリッドだったので、プロパティから [GridAnalysis→Thin Line] を選び、その下の [Analysis Grid] をクリックしてレンズの歪みを補正する。

レンズ歪み補正

実写プレートの撮影と同じカメラ、レンズで撮ったグリッド。今回は The Pixel Farm で提供されているものを使った

レンズ歪み補正1 レンズ歪み補正2

別途撮影したグリッドを Nuke 内に読み、その [Read] ノードに [LensDistortion] ノードを繋ぐ。今回は動画ではなく、一枚画のグリッドを用いたが、動画から解析する手法もある。歪を補正しないと、Feature の解析が正確に行えず上手くトラッキングできない場合が多い。"決まり事"として必ず行うようにするのが賢明だ

[Analysis Grid] の結果は、[LensDistortion] タブ内にある「Radial Distortion 1」と「Radial Distortion 2」の数値で返される。

グリッドで確認 解析の結果

解析の結果として、ざっくりではあるが歪んでいたグリッドがほぼ真っ直ぐになったことが確認できる

このように、別途撮影したグリッド素材を用いて、いったん歪み補正値を得た [LensDistortion] ノードを使い、実際にクリーンアップを行う動画の歪み補正するわけだ。グリッドに繋がっている LensDistortion ノードを外して、それを実際の動画プレートに繋いでも良いし、新たに LensDistortion ノードを作成してから、先ほど取得した各数値を持ってきても良い。

解析の結果

動画プレートから歪みを除去し、トラッキングしやすい素材を作成できた。LensDistortion ノードを [d] ホットキーを使って ON/OFF してみると、実際にどれくらい変化があるかよく判る

基本的に 3D トラッキングは、静態したシーンを分析することはできるのだが、動態のオブジェクトを分析することは出来ない。厳密には、カメラの動きが判れば、そこからカメラの動きを引き算して、その動態のオブジェクトを割り出すことは可能である。ともかく静態シーンのカメラの動きを分析するには、動態のオブジェクトは邪魔になってしまう。作例では、手前を横切る人物がトラッキングの邪魔になるため、人物のマスクを切ることにした。

厳密なマスクは必要ではないので、ざっくりと [Roto] ノードを使い、マスクを作成。前回 紹介したように [Tracker] ノードを用いて、簡単に人物の移動の動きを検出し、それをマスクに適応すれば効率良くマスクが切れる。今回はフレーム数も少なかったので、適当なところにキーフレームを打ちながら、多少大きめのマスクを作成した。

解析の結果

こんな感じでざっくりとマスクを切っていく。撮影したカメラによってはコントラストのあるエッジ部分などにノイズの入りやすいものもあるので、多少大きめに切ってトラッキングのエラーを避ける

マスクを切り終えたら、ようやくトラッキングだ。[Roto] ノードの下に [CameraTracker] ノードを繋ぎ、そのプロパティで CameraTracekr タブの [Mask]「Source Alpha」 に設定。この状態で、先ほど作成したマスクで発生したアルファ(rgba.A)のある部分を避けてトラッキングが行われる。
ここまで準備ができれば、同じく CameraTracker タブの 「Track Features] をクリックして、Featureの検出を行う。

マスクを作成しトラッキング マスクを作成しトラッキング マスクを作成しトラッキング マスクを作成しトラッキング

トラッキングしたくない領域のマスクを作成し、それを CameraTracker ノードで指定することで、トラッキングのエラーを極力少なくする

トラッキング処理が完了すると、動画プレート上にあるオブジェクトの同一ポイントが自動的に検出され、プレート上でのその軌跡がオレンジの小さな十字(=Feature)とラインで表現される。
同一の Feature の検出期間が長ければ、それだけ信頼度が高い可能性があるので、精度を上げるために [Refine] タブにある 「Min Length」 の値を高くし、その値以下の Feature を 「Delete Rejected」 ボタンで削除する。

Featureの検出と調整 Featureの検出と調整

オレンジ色で表示されているのが Feature だ。赤くなっているものは、 Refine タブで「Min Length」 を25としたため、Feature の検出期間が 25 フレームに満たなかったモノを示している。あまりにも短いモノは同一オブジェクトの同一ポイントとして信頼度に欠け、エラーの原因になるので 「Delete Rejected」 をクリックして、これらの赤い Feature を削除しよう

この他にも、[Tracking] タブにある 「Number of Features」 を大きくすれば、検出される Feature は多くなり、カメラの動きを検出する際の情報を増やすことができる。
さらに、カメラの情報を与えて精度を上げることも可能だ。[Solver] タブにある 「Camera」 でレンズの焦点距離(ミリ数)やフィルム面(素子面)のサイズ、もしくはカメラの動きの種類を指定することができる。

Featureの精度を上げる Featureの精度を上げる

Feature が増えて、カメラの動きを検出する手がかりが多くなるのは良いのだが、反面、エラーになる可能性もあるため、前述の「Min Length」などで信頼度を上げて、Feature 全体を精査する必要もある。カメラの情報を与えて精度を高めるのも有効だ

ここまで終わった後は、[CameraTracker] タブにある 「Solve Camera」 ボタンでカメラの動きの分析を開始しよう。と言っても、実際の作業としては、ボタンを押すだけだ。2次元である動画プレートから検出された Feature が、3次元空間上の座標を特定し、カメラの動きが分析される。

Solve Camera の処理

実際には、信頼度の高い順に「緑→オレンジ→赤」 で3次元座標を与えられた Feature が確認できる。さらに 「Create Scene」 をクリックすれば、分析されて動きの付いたカメラと Feature に、3次元空間で座標が与えられたポイントクラウドが生成される。これにて、3D トラッキングは完了だ。

Solve Camera の処理 Solve Camera の処理

思うように結果が得られない場合は、プレートのレンズ歪みや余計な Feature によるエラーなどがトラッキングの邪魔になっている場合があるので、その辺りの設定を見直してみると良いだろう。

Solve Camera の処理 Solve Camera の処理

あくまでも筆者の経験測だが、上手くカメラトラッキングできる場合は、Solve Camera の処理はそれほど時間がかからない。時間がかかる場合は、設定にエラーが含まれている可能性を疑ってみることをお勧めする

その他の連載