このターンテーブル・フォトグラメトリの基本シリーズのエピソードでは、Blenderを使って写真からグリーンの背景を削除し、Color Spillを取り除く方法を見ていきます。



動画の書き起こし

こんにちは、皆さん!このターンテーブル・フォトグラメトリの基本シリーズのエピソードでは、Blenderを使って写真からグリーンの背景を削除し、Color Spillを取り除く方法を見ていきます。

このプロセスの最終段階で得られる画像は、透過情報を持つPNGファイルになります。これにより、Meshroomは対象物だけにフォーカスしながら、特徴抽出のフェーズを進めることができます。

このチュートリアルは Blender 4.3 を使用して録画しましたが、使用するコンポジティングノードは以前のバージョンから利用可能であり、今後のバージョンでも引き続き利用できる可能性が高いです。

すべての作業は Compositor Editor 内で行われるため、シーン内に仮想カメラを配置する必要はありません。実際、新しいコンポジティングセットアップにデフォルトで含まれている Render Layers ノードも削除できます。

まず、プロジェクトの出力フォーマットを写真の解像度に設定する必要があります。私の場合、X 解像度は 4000、Y 解像度は 3000 です。

Properties Editor の Output タブで、出力フォーマットを PNG に設定し、RGBA(つまり透過情報を含む)を選択し、圧縮率を低めに設定します。

このタブ内で、処理されたファイルを保存するディスクのパスも設定する必要があります。

画像をプロジェクトに読み込む前の最後の準備として、End Frame の値を処理する画像の枚数と同じに設定する必要があります。私の場合、146 枚の画像を処理するため、End Frame を 146 に設定します。

画像に関しては、フォルダー内の画像が連番で番号付けされていれば、Blender は画像シーケンスとして認識します。

Windows環境では、この連番を簡単に設定する方法があります。元の写真が入っているフォルダー内のすべてのファイルを選択し、最初のファイルを右クリックして Rename(名前の変更)オプションを選択します。その後、名前を入力して Enter を押すと、Windows が自動的にファイル名に連番の数値サフィックスを追加します。

これで、最初のファイルを Blender の Compositor Editor にドラッグし、ノードのタイプを Image Sequence に変更できます。

ノード内の Frames フィールドに、処理するファイルの数を入力します。この値は、以前に Timeline の End フィールドに入力したものと同じにする必要があります。

画像ノードの Image 出力を Viewer ノードに接続すると、Compositor Editor の Backdrop に画像が表示されるようになります。

写真を撮影した際、スマートフォンの向きを変えたことがあり、一部の画像が逆さまになっていることがあります。この問題は Rotate ノードを使うことで簡単に修正できます。Degrees フィールドをアニメーションさせれば、必要なときだけ回転を適用できます。ただし、この回転は Meshroom にとって問題にならないため、この段階で修正する必要は必ずしもありません。

Color Key ノードと Color Spill ノードをセットアップに追加します。

Backdrop のプレビューは、Color Key ノードのために画像から適切なグリーンの色合いを選択するのに役立ちます。Color Key ノードの Key Color フィールドでデフォルトの色をクリックし、その後 Eyedropper ツールを使用して写真内の緑色のポイントを選択します。

次に、画像ノードの Image 出力を Color Key ノードの Image 入力に接続します。

Color Key ノードの Matte 出力は、画像の透明マスクを表すため、Viewer ノードと Composite ノードの両方の Alpha 入力に接続する必要があります。

一方、Color Key ノードの Image 出力は Color Spill ノードに接続します。Color Spill ノードは、緑色の背景で撮影されたオブジェクトに映り込んだ緑の反射を除去するために使用されます。Color Spill ノードの出力は、Composite ノードと Viewer ノードの両方の Image 入力に接続します。

今回のケースでは、Color Spill ノードの Despill Channel は当然グリーンを選択します。アルゴリズムは Simple または Average から選択し、Backdrop のプレビューを見ながら最適なものを決定します。

ここで、Color Key ノードの Hue、Saturation、Value チャンネルの許容値を調整し始めます。これらの許容値は、ピクセルの色が Key Color フィールドで指定した色から、それぞれの情報チャンネル内でどれだけずれてもよいかを定義します。

Blender でこの操作を行う利点は、ノードの値をアニメーションさせることができる点です。最初のフレームで適切な値を設定し、その値が有効な間は保持し、特定の画像で機能しなくなった場合に調整できます。

ただし、注意が必要です。もし設定した値が他の画像で適切でないと気づいた場合、変更を加える前に前のフレームに戻り、そこにキーフレームを挿入して、これまで適用されていた値を固定する必要があります。この作業を行った後で次のフレームに進み、新しい要件に合わせて値を調整し、新しいキーフレームとして記録します。この「変更を加える前に前のフレームにキーフレームを設定する」手順は重要です。そうしないと、Blender がフレーム間で補間を作成し、マスクに悪影響を与える可能性があるからです。

一般的に、Hue パラメータは低い値に設定するのが最適です。値を高くしすぎると、本来保持すべき他の色まで除外されてしまうリスクがあります。基本の色相は低い許容値で維持し、他の 2 つのパラメータを調整するのが良いでしょう。ほとんどの場合、グリーンスクリーン上の不均一な照明によって明るさに変動が生じますが、色相自体が大きく変わることはありません。

値を調整するときは、常に対象となるオブジェクトに注意を向ける必要があります。不要な領域をすべて削除することが目的ですが、場合によっては完全に除去できないこともあります。また、誤って必要なオブジェクトの一部を削除してしまう可能性もあります!

より複雑な領域を取り除くには、1 つまたは複数の Box Mask ノードを使用し、それらを Color Key ノードの Matte 出力に順番に接続することができます。Compositor には他にも様々なマスキングツールがありますが、今回の目的では 2 つほどの Box Mask ノードで十分でしょう。

これらのノードは長方形のマスクを作成し、入力マスク上で位置調整や回転を行うことができます。パラメータを調整することで、マスクの位置、サイズ、回転を自由に変更できます。マスクにはいくつかの適用モードがありますが、今回は Subtract モードを使用します。ただし、このモードではマスクされた領域が透明ではなく黒くなる点に注意してください。

この問題を解決するには、Composite ノードと Viewer ノードの Image 入力の前に Set Alpha ノードを挿入するだけです。まず、Composite と Viewer の Alpha 接続を切断します。その後、Color Spill ノードの Image 出力を、新しく追加した Set Alpha ノードの Image 入力に接続します。最後に、Set Alpha ノードの Alpha 入力を、セットアップ内の最後の Box Mask ノードの出力に接続します。

ここで、コンポジティングの最終結果にスキップしてお見せします。このセットアップは基本的に、Color Key ノードの許容値や使用したマスクの位置・サイズに対するキーフレームの組み合わせになっています。

マスクの位置やサイズのパラメータもアニメーション可能なので、必要なタイミングでのみワークスペースに表示させることができ、他のフレームで対象オブジェクトを覆ってしまうリスクを避けられます。

ここでも、Color Key ノードの値にキーフレームを設定する際と同じ注意点が当てはまります。マスクの位置がアニメーション全体で正しく補間されるようにするため、フレームを変更する前にキーフレームを設定することが重要です。

Color Key の値やマスクを分析・調整するプロセスには多少時間がかかるかもしれませんが、Meshroom で元の画像ではなく、クリーンアップされた画像を処理できるようにすることで、後の工程で大幅な時間短縮が可能になります。

ただし、すべての不要な要素を完全に除去できなくても、大きな問題にはなりません。Meshroom は、小さなアーティファクトをノイズとして自動的に無視するためです。可能な限り丁寧に処理するのが理想ですが、過度に複雑にする必要はありません。

Color Key やマスクの品質を複数のフレームで確認したら、いよいよシーケンスのレンダリングを開始し、Meshroom にインポートする画像を生成します。このレンダリングプロセスは、フル 3D シーンをレンダリングするのではなく外部画像を処理するだけなので、それほど時間はかかりません。生成された画像は、無料パッケージに含まれているものと同じなので、次回のチュートリアルで説明する手順を再現できます。今回のエピソードはこれで終了です!また次回お会いしましょう!

チュートリアルを検索

フレーズ、または複数のキーワードをカンマで区切って入力してください。

Francesco Milaneseによる3Dモデル、チュートリアル、コンピューターグラフィックス関連の資料を掲載しています。3Dモデルの使用ライセンスは、各モデルのページに掲載されているリンク先の外部ストアで購入できます。ご利用には、適用されるライセンス条件が適用されます。 Francesco Milanese — イタリアVAT番号:06321250877。お問い合わせ:info@francescomilanese.com


プライバシー及びクッキーの使用に関する拡張情報の通知