カメラパススルー機能
カメラパススルー機能とはHMDに搭載されているカメラの映像をVR空間に表示する機能です。
また、アマレコVRでは視聴している動画の背景と思われる部分を透明にする機能がり、
カメラパススルー機能による周囲の映像とVR動画の映像を合成した ミックスドリアリティ体験ができます。

背景透過処理 概要

1.合成処理

■アマレコVRで利用可能な合成処理
項目 説明
半透明 最も基本的な合成処理です。動画を半透明にしてカメラパススルー映像と合成します。
他の合成処理と組み合わせて使うことができます。
アルファマップ 透明にするエリアと、不透明のエリアをビットマップを使って指定します。
他の合成処理と組み合わせて使うことができます。
背景透過処理 リアルタイム画像解析処理により動画内の背景と思われる部分を透明にします。
VR動画ではこの合成処理をメインで使うことになります
背景透過処理 概要
クロマキー合成 背景色を指定して透明にします。
クロマキー撮影された映像またはRobust Video Mattingで処理した動画用です。


2.基本的な使い方

カメラパススルー機能に関する設定項目は メイン画面設定に集約されています。
メイン画面設定から下記を設定し固定カメラで撮影されたVR動画を視聴してください。

また、メイン画面設定は頻繁に使うためボタン設定へ割り当てることをお勧めします。




基本的な設定項目
項目 説明
[ポジトラ]をON パススルー映像の動きに合わせてVR動画の表示位置を調整するためにポジショントラッキングをONにします。
ONにするとHMDの位置に合わせてVR動画の表示位置が動くようになります(ただし、大きく動きすぎると歪みます)。
OFFの場合はパススルー映像の位置は動くけど、VR動画の表示位置は動かないため合成した映像にずれが生じてしまいます。
[スケール]を調整 (視聴するVR動画の)カメラから被写体までの距離に調整します(多くの場合50cmから100cmくらい)。
VR動画やパススルー映像の仕組み上どうしても合成映像にズレが生じてしまいますが、スケールで設定した距離のところだけズレることなく合成することができます。

仮にスケールを50cmとした場合、VR動画内の被写体とパススルー映像の合成は上手くいきますが、VR動画の背景と自分の部屋の壁(パススルー映像)はズレます(2m先とか3m先あたりの映像はズレます)。
ただし、背景透過処理によりVR動画の背景は透明になるため背景のズレは気にならなくなります。
[背景透過]を選択 [画像処理▽]メニューから[背景透過]を選択してください。
[パススルー]をON カメラパススルー機能をONにします。

[メインスクリーンを半透明にする]は基本的にはOFFにして使います。うっすらパススルー映像を透けて見えるようにしたい場合やアルファマップと併用する場合にONにします。


3.カメラパススルー機能に関する設定

メイン画面設定にカメラパススルー機能に関する設定が追加されています。




項目 説明
白黒 動画を白黒で表示します。
Questの白黒パススルー映像に合わせる場合に使います。
縦反転 動画の表示を縦に反転します。
画面の端の方(上端、下端)が見づらい場合などに使います。
ポジトラ HMDの動きに合わせてメインスクリーンの位置を移動します。
通常VR動画はHMDの位置とは関係なく球面スクリーンの中心から視聴するようにできていますのでOFFで使ってください。
パススルー映像と位置を合わせる場合にONにします。ONにすると球面スクリーンの中心以外からVR映像を観ることになるため映像が歪みます。
メインスクリーンを半透明にする メイン画面全体を一律半透明にします。
単独で使うというよりは他の処理と組み合わせて 透明度を調整するのに使います。
また、ボタン機能に半透明のON/OFFを割り当てることができますので、通常は不透明で良いけど、とっさに半透明にしたいときにボタンへ機能を割り当てて切り替えます。
背消 現在の画像処理の解析結果を破棄し、ゼロから構築しなおします。
また、クロマキー合成の背景色をクリアします。
画像処理▽ 画像処理メニューを表示します。
パススルー HMDのカメラの映像を表示します。
透明度 メイン画面とパススルー映像を合成する際のメイン画面の透明度を設定します。
アルファマップA/B アルファマップを有効にします。



■画像処理メニュー


項目 説明
処理なし 画像処理を行いません。
背景透過 画像処理により映像内の(動かない)背景部を透明にします。
背景透過処理
クロマキー合成 画像処理により色を指定して透明にします。
クロマキー合成
背景バッファクリア 現在の画像処理の解析結果を破棄し、ゼロから構築しなおします。
また、クロマキー合成の背景色をクリアします。
シルエットモード メイン画面の映像を単色で塗りつぶします。
メイン画面設定の透明度が反映されます。
輪郭がクリアでないと 何が表示されているかわからないので、主にクロマキー合成で使って下さい。


※ 画像処理を使うには アマレコVRのプレイヤー設定でAmaRec Playerを選択してください。(初期値はAmaRec Playerなので通常はそのままでOKです)
AVProでは利用できません。



背景透過処理

動画をリアルタイムで解析し、動きの少ないエリアから背景画像を作成します。作成した背景画像と動画を比較し背景と思われるエリアを透明にします。
これは固定カメラで撮影されたVR動画の背景を透明、被写体を不透明にするのに使います。

[画像処理▽]メニューから[背景透過]を選択すると 画像処理メニューへ背景透過処理に関する設定項目が表示されます。




項目 説明
ぼかし(時間) 過去の画像と現在の画像とで移動平均のような処理を行います。
照明の不安定さや動画のノイズを軽減する効果があります。
数値が大きいほど安定した結果が得られる一方、早い動きについていけなくなります(追従性が低下する)。
数値が小さいと追従性は改善されますが、背景画像の信頼性が上がるまで時間がかかるようになります。
背景閾値 背景かどうか判断する閾値です。
数値が大きいほど多少の変化があっても背景と判断されます。
背景時間 背景として確定するまでの時間です。
3の場合、背景と判断される状態が3秒間続いたら背景として確定します。
数値が大きいほど安定した結果が得られますが、確定するまで長い時間がかかります。
解像度 1024の方が輪郭部がはっきりします。輪郭をしっかりとらえられる場合は有効ですが、輪郭をうまくとらえられない場合は256で自然にぼやけた方が好ましい場合があります。
好みで設定してください。
輪郭ぼかし 処理解像度が低いため判定結果をそのまま表示に反映させると輪郭部分がカクカクになってしまう為、ぼかしてごまかします。
数値が大きいほど強くぼかします。
輪郭サイズ 輪郭部を一回り大きくしたり小さくします。




【背景透過処理 概要】

動きの少ない部分(前のフレームからの変化が少ない領域)を検出し背景画像を作成します
一度のサンプリングでは背景画像の信頼性が低いので数秒間解析を続けて信頼性の高い背景画像を作成します。
信頼性の高まった背景画像と現在のフレームを比較して一致する部分を背景とみなし透明にします

・背景画像と一致する領域は背景と判断し 透明にします
・一致しない領域は被写体と判断し 不透明にします
・信頼性の低い領域は常に 不透明となります

解析処理は常に行われ 家具の位置が変わったり、シーンチェンジすると背景画像もアップデートされます。

基本的に被写体が映った状態の映像から背景画像を作成しますので
被写体と被写体の周辺領域については背景画像の信頼性が高まるまで時間がかかります
そのため、被写体周辺の背景が表示されてしまったり、被写体が退いた後もしばらく背景が表示されることがあります。
また、動きの少ない被写体が背景と判断されてしまい、消えてしまう場合があります

■前提条件
屋内の固定カメラで撮影されたVR映像であることが前提となります
・背景が一切動かない (とにかくこれが大事)
・照明が安定している (ロウソクや太陽光などはNG)
・画質が安定していること (ノイズが多い、差分フレームとキーフレームの画質差が激しいなどはNG)
・被写体は基本的に1つ (複数の場合は 被写体と被写体の間が不透明になる)
・被写体が適度に動くこと (数秒間 止まられると 背景と判断されて透明になってしまう)







クロマキー合成

背景色を指定して透明にします。
クロマキー撮影された映像またはRobust Video Mattingで処理した動画用です。それ以外では使いません。





項目 説明
背景色 背景色を指定します。
ここで指定した色(色味)から実際の動画内で使われている色の登場回数を調べて、最も多く登場した色を透明にします。

赤を指定した場合は 赤や濃い赤、ピンクなど赤っぽい色の登場回数をカウントして、ピンクが一番多かったらピンクに近い色を透明にします。
自動は色を指定せず、最も登場回数の多い色を透明にします。

Robust Video Mattingを使う場合は緑に設定して下さい。
背景閾値 背景色と同じとみなす許容範囲を設定します。
数値が大きいほど透明になりやすくなります。
輪郭サイズ 輪郭部から背景色を除きます。
被写体へ背景色が乗ってしまっている場合に調整してください。


Robust Video Matting

AI技術を使って画像内から人物と思われる領域を抽出し、それ以外を緑で塗りつぶします。通常の動画からクロマキー撮影したような動画を作成することができます。

https://github.com/PeterL1n/RobustVideoMatting






アルファマップ機能

ビットマップパターンを使って 透明エリアと、不透明エリアを指定します。
ビットマップの黒い箇所を透明 白い箇所を不透明にします。中間のグレーは半透明になります。


■予め用意されているビットマップパターン


丸いビットマップパターンを使って中央を不透明、周辺を透明にしたり、グラデーションパターンを使って画面の上の方を透明、下の方を不透明にすることができます。


■アルファマップ機能に関する設定


項目 説明
アルファマップA / B アルファマップを有効にします。
AとBの2つがあり 基本的には同じ働きをします。
2つのパターンを掛け合わせて複雑なパターンにできます。
Bにはブラックマスクオプションがありません。
α値ゲイン 透明度を調整します。ゲインをマイナスにすると 透明と不透明の箇所が入れ替わります。
拡大 横 縦 パターンを拡大、縮小します。
位置 縦 パターンの縦方向の位置を調整します。
選択▽ パターンを選択します。
ブラックマスク 透明部分を透明ではなく黒の不透明にします。
動画内の観たくない部分を隠すのに使います。
連動メニュー メインスクリーンなどの位置と連動してアルファマップの位置を動かします。

[メイン] メインスクリーンと連動します。
[3rd] 3rdスクリーンと連動します。
[HMD] ヘッドマウントディスプレイの向きに連動します。
[固定] パススルー映像の位置に固定されます。