fc2ブログ
 

アマレコVR Ver2.1.7 アルファ7 画像処理完成版 公開

背景透過等の画像処理の完成版です。メインプレイヤーで再生している動画の(動かない)背景部を透明にします。
そのほかOculus SDKがハンドトラッキングへ対応したのでパススルー機能と同時に使えるようになりました。また、コメント欄で公開したクロマキー合成も含まれます。

いずれも、パススルー映像にVR動画の被写体を合成したり、VRonVRにより複数の動画を合成し、さらに自分の手を合成するといった 一歩踏み込んだミックスドリアリティ体験が可能となります。



VRonVRで2D動画を背景にして手前に被写体を合成する例
今までのアマレコVRではVR動画を背景にして手前に2D動画といった構成しかできず、2D動画のスクリーンを大きく表示することができませんでしたが(背景が隠れてしまう)、
VRonVRにより巨大な2D動画のスクリーンを背景に 手前にVR動画といった構成が可能になっています。
もちろん背景をVR動画、手前もVR動画も可能です。
そして、VR動画を手前に表示するのに重要となるのが VR動画の背景を透明にする仕組みです。この例ではRobust Video Mattingを使って背景を緑にした動画を作成し、アマレコVRのクロマキー合成を使っています。
Robust Video Matting程ではありませんが、簡易的に済ます場合はアマレコVRの背景透過処理を使うこともできます。



1.内容
【更新内容 アマレコVRアプリ】
・画像処理追加(背景透過、クロマキー合成、シルエットモード)
・ハンドトラッキング復活
・サブカメラ画面へ横型を追加
・内蔵ストレージの動画ファイルへアクセスできなくなっていたのを修正(Ver2.1.3から使えなくなっていた)
・サーバーはVer2.1.3から変更なし
・Oculus software v35が必要


【Ver2.1.5から画像処理の更新内容】
・基本的な性能向上(背景は消えやすく、被写体は消えにくくなりました)
・背景画像の作成に時間がかかるようになりました
・パフォーマンスが低下しました(Quest 1では 60fpsを下回る)
・設定項目追加(背景サンプリング時間、レンダリング解像度)
・クロマキー合成、シルエットモード追加
・背景透過処理へ メイン画面設定の透明度が反映されるようになりました


【既知の不具合】
・アプリ起動時などファイルリスト読込中に リスト内検索等をすると 操作不能に陥る
(リストの読み込みが終わるのを待ってから操作してください チャンネル部に読込件数が表示されている間は待つ)
・サーバー側でサムネイルの自動作成をすると アプリが止まってしまうことがある
(サムネイルの作成が終わってから使うようにする)


【Ver2.1.1 アルファ2と同じ内容】
・サブカメラ機能の映像ソースを選択する[CL]、[CR]は機能しません
・ハンドトラッキングに関する機能は使えません(Ver2.1.7から使えるようになりました)
・アマレコVRアプリによりサムネイル画像を作成すると白っぽい画像になってしまいます (Ver2.1.3で対応しました)


2.使い方
・ 次の記事と合わせて見てください。
Ver2.1.0 アルファ1
Ver2.1.1 アルファ2 
Ver2.1.3 アルファ3 

・アマレコVR自体の使い方は オンラインヘルプを見てください。
・ベータ版、アルファ1、アルファ2、アルファ3とは異なるアプリとしてインストールされます。
・アマレコVRサーバーはアルファ3と同じです。


【アマレコVR パススルー実験 アルファ版 まとめ】
Ver2.1.0 アルファ1 2021-09-03 パススルー実験版 (アルファ版)
Ver2.1.1 アルファ2 2021-10-07 パススルー実験版 リアルスケールになった
Ver2.1.2 アルファ3 2021-10-10 VRonVR試作版
Ver2.1.3 アルファ3 2021-11-15 VRonVR パススルーAPIが正式版になった 円周魚眼パラメータ サーバー更新
Ver2.1.4 アルファ4 2021-11-20 画像処理試作版
Ver2.1.5 アルファ5 2021-11-27 画像処理試作版
Ver2.1.6 アルファ6 2021-12-14 クロマキー合成テスト版(コメント欄で公開)
Ver2.1.7 アルファ7 2021-12-28 画像処理完成版 ハンドトラッキング復活 ほぼベータ版




2.1.画像処理
メイン画面設定の画像処理メニューから設定します。
mainscreen_20211127065807d70.png

※ メイン画面設定は頻繁に使う為 アマレコVR設定のボタン機能[メイン画面設定を表示]を割り当てることをお勧めします。



■画像処理メニュー
image_menu.png


・処理なし
画像処理を行いません。

・背景透過
画像処理により映像内の(動かない)背景部を透明にします。

・クロマキー合成
画像処理により指定した背景色を透明にします。

・背景バッファクリア
現在の画像処理の解析結果を破棄し、ゼロから構築しなおします。また、クロマキー合成の背景色をクリアします。

・シルエットモード
メイン画面の映像を単色で塗りつぶします。
メイン画面設定の透明度が反映されます。
エッジがクリアでないと 何が表示されているかわからないので、クロマキー合成か背景透過の輪郭解像度を1024にして使って下さい。

※ 色はサーバー側の設定ファイルで変更できます(後述)。

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


■背景透過

【画像処理:背景透過処理 概要】

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

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

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

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

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

■良い結果が期待できるケース
・背景がCGの映像 (クロマキー撮影し、CGの背景と合成された映像や 全てCGの映像)
・背景が真っ黒な映像 (多少背景が映ってしまっても 影っぽく自然に見える)




■背景透過メニュー
image_menu_auto.png

・ぼかし(時間)
過去のフレームと加算し映像をぼかす度合いを設定します。
ノイズや画質、照明の影響を軽減し安定した処理結果が期待できます。

数値が小さいと背景画像の作成に時間がかかるため、なかなか背景が透明になりません。
数値が大きいほど映像のノイズや不安定な照明、差分フレームとキーフレームの画質差などを軽減し背景の判定がやり易くなります。
逆に、被写体の動きの検出が難しくなるため 動きの少ない被写体も背景と誤判定され消え易くなってしまいます。
また、数値が大きいと 新しいフレームの影響が少なくなるため タイムラグが生じます。

・背景閾値
低いほど被写体に有利な判定になります。代わりに背景の判定が上手くできず透明になりません。
高いほど背景に有利な代わりに 被写体が誤判定され消えやすくなります。

・背景時間
3なら 3秒間変化が少ない領域を背景として拾います。
数値が低いほど 素早く背景画像を構築できますが、動きの少ない被写体も背景として拾ってしまいます。
数値を大きくすると 背景画像の構築に時間がかかる代わりに 被写体を拾い難くなります。

・解像度
処理結果(透明、不透明のマスクパターン)の解像度を選択します。
256は解像度が極めて低いため 輪郭を強くぼかして使います。
1024は解像度が高く輪郭をくっきり表示したい場合に使います。

※ 1024は処理に時間がかかるため 他の機能と併用すると60fpsを下回ります。
fpsの低下が目立つ場合は256を使って下さい。

【処理能力】
Oculus Quest 2で4K,60fpsのVR動画を視聴(サブプレイヤー、3rdプレイヤーは停止、パススルーON、画像処理の設定は初期値)
・背景透過 解像度1024 のみ 60fps以上
・背景透過 解像度1024 と アルファマップA 約54fps
・背景透過 解像度1024 アルファマップAとB併用 約48fps

※ Oculus Quest 1で4K,60fpsのVR動画を視聴する場合は背景透過 解像度256のみでも約48fpsとなります。



・輪郭ぼかし、 輪郭サイズ
処理結果(マスクパターン)の輪郭を調整します。お好みで調整してください。


■クロマキー合成
image_menu_chromakey.png


・背景色
透明にする背景色を指定します。
具体的には 画像処理により指定した色に属する画面内で多く使われている色を検出し、透明にします。
自動は色を指定せず画面内で最も多く使われている色を背景色とします。
そのため、赤い服を着た人がカメラへ近づいて画面全体が赤くなると背景色が赤と判断されてしまう場合があります。

※ Ver2.1.6の青緑は廃止しました。Robust Video Mattingの初期背景色は緑で使えます。

・背景閾値
背景色と近い色を透明にする際の閾値です。
低いと背景に影があった場合に 影が見えてしまいます。
高いと被写体の一部が透明になってしまいます。

・輪郭サイズ
輪郭処理を行う大きさを指定します。
輪郭部は背景色の成分を除いて半透明にします。

※ Ver2.1.6と比べ 透明度を上げて ほぼ透明にしました。


2.2.ハンドトラッキング
Oculus Questのハンドトラッキングが「OpenXR」に正式対応したのでパススルー機能とハンドトラッキング機能を同時に利用できるようになりました。

アマレコVRのハンドトラキング機能に関する基本的な使い方はオンラインヘルプを参照してください。

今回からハンドトラッキングメニューが追加され 手のグラフィックを選択できます。
handtracking_menu1.png

handtracking_menu.png

・パススルー透過:透明、カラー
手の形で穴を開け後ろのパススルー映像を見えるようにします。
また、スクリーンオブジェクトと干渉します(メイン画面を触れる)。
カラーの場合は、手の形でパススルー映像を着色します。

・非透過 半透明:黒、青
メインスクリーン等の上に半透明で手を表示します。
スクリーンオブジェクトとは干渉しません(常に手前に表示されます)。

※ 各色はサーバー側の設定ファイルで変更できます(後述)。


【ハンドトラッキングとVR動画の視差】
VR(3D映像)の仕組み上、VR動画やハンドトラッキングの手の表示、パススルー映像それぞれに視差があります。
それぞれの視差が合わないと一緒に観ることができません(視野闘争、視差闘争)。

アマレコVRではメイン画面設定のステレオ調整で視差の調整が可能です。
私が視聴したVR映像ではステレオ調整を+30から+60あたりにすることで 30cmから50cmほど手を伸ばしたあたりで視差が合いました。
また、メインスクリーンのスケールを50程度(50cm先にスクリーンを配置)にすると、両手を前に伸ばしたあたりでハンドトラッキングの手とメインスクリーンが干渉します。

handtracking_stereo.png

・ポジトラを ON (パススルー映像を使う場合はポジショントラッキングをONにします。)
・スケールを 50程度
・ステレオ調整を +30から+60程度 (VR映像の内容や 何センチ先で合わせるかで変わります。)
・ハンドトラッキングメニューで[パススルー透過:透明]または、[パススルー透過:カラー]を選択 非透過ではスクリーンオブジェクトと干渉しません。




3.その他

■サブカメラ画面へ横型を追加
16:9よりさらに横に広い視野の[横型]を追加しました。
subcamera_yokogata.png


■色設定
次の色はサーバー側の設定ファイル AmaRecVRServer.iniをメモ帳で編集して変更できます。
また、変更した後はアプリを再起動しなくても、選択項目を変更した際に再度設定値をサーバーから読み込みます。

・画像処理:シルエットモードの色
・ハンドトラッキングの色

【アマレコVRサーバー設定ファイル AmaRecVRServer.ini】

[ImageProcessing]
rw.param_silhouette_color_string=#0000FF7F

[HandTracking]
rw.color.0=#00000000
rw.color.1=r255g232b202a160
rw.color.2=#33333377
rw.color.3=#3333EE77


※ 10進数で指定する場合はr,g,b,aの後に各数値
※ 16進数で指定する場合は#の後にrgbaの順に数値




■背景透過処理へ 透明度が反映されるようになりました
画像処理を利用している場合も [メインスクリーンを半透明にする]をONにして、透明度を調整することができるようになりました。
半透明にすることでVRonVRの奥で再生している動画が見えなくなるのを防ぐことができます。
また、アルファマップAを使うと 視界の下半分にだけメイン画面を表示して、上半分へは表示しないなど メイン画面の表示範囲を制限することができます。


4.ダウンロード

アマレコVR Ver2.1.7 アルファ版7
アマレコVRサーバー Ver2.13


※ アマレコVRサーバーは更新なし
オンラインヘルプ Ver2.0.0




関連記事


コメントの投稿

No title

SteamVR版のサポートはまだ続いていますか?
再生しようとするとエラー落ちしてしまうのですが……

Re: No title

さっきOculus QuestのAirLinkを使って問題なくVR動画の視聴ができましたので
現在のSteamVRでも利用できます。

No title

amamanさん
返信ありがとうございます。
もう少し、試してみます。

pos xyzを6DoF連動で自動調節ってできませんか?

Re: タイトルなし

どうゆうこと?

No title

DeoVRなんかでも6DOF調整機能が実装されていて、それが欲しいな、と
本来1~2m先にいるモデルをpos z調整して膝上に召喚
その状態で首を前後左右に動かすとモデルも首の動きに連動してついてきてしまう
首の動きと反対方向にモデルを移動させて表示位置を空間に固定したいな、と
調整量は距離によって変わるだろうから設定できるようにして



Re: No title

メイン画面設定にある スケールとポジトラ(ポジショントラッキング)のことのように思うので
そうだと仮定すると次の通りです。

ポジトラをONにすればスクリーン等の位置がVR空間内に固定される
あと、VRスクリーンに投影した被写体を近くに表示したい場合は
pos Zではなくスケールを50程度に調整した方がいい(原点から半径50cmの球面へ投影する)
スケールなら画像が歪まないのに加え パススルー映像の50cm先辺りと スクリーンに投影した被写体の(向きの)トラッキングがぴったり合う
(逆に遠いところが合わなくなるから VR映像の背景を消せるなら消す)

No title

ポジトラはオンにしていたのですが効果ないなと思ってました
スケールの調整で期待通りに動作になりました
これは素晴らしい

ボタンVRコン(左)をカスタマイズ出来るようにする予定はありますか?

Re: タイトルなし

カスタマイズできるけど現状と何が違うの?

現状は右コンを使うか左コンを使うかを切り替えられるだけですよね?
右コンをメインで使っている時に別アサインされた左コンをサブで使いたいと思ったのですが

あと、カスタマイズ内容にデバイスボリュームの調節とかメイン画面のスケール調節とかもあったらいいなと思います

大変素晴らしいアプリを公開して頂きありがとうございます。

スクリーン移動、調整時にポジトラをオンにした地点を原点とする絶対座標の立体格子をオーバーレイさせる事は可能でしょうか?
ポジトラをオンにしてパススルー空間内にスクリーンを配置する際、目安というかアタリの様なものがあるといいなとおもいました。
グラビティスケッチのような感じでしょうか?
次回のアプリ公開を楽しみにしています。

承認待ちコメント

このコメントは管理者の承認待ちです

承認待ちコメント

このコメントは管理者の承認待ちです

Re: 機能要望:ファイルの表示名変更

データベースに関する要望について
私は使っていないので 詳しくは分からないですが
恐らくDLNAサーバー側の機能と思われます。
DLNAに対応したアプリであればそういった使い方が可能なのだと思います。

アマレコVRのベータ版はDLNAへ対応することはありません。
また、表示だけ変えるのも無理です。

将来アマレコVRの正式版を作ることがあれば SMBかDLNAへ対応すると思うので
そのときかなと思います。
 
 
あまラボへようこそ
このブログでは自作ソフトの最新情報やtips、PC動画に関する話題を掲載していきます。各記事へは下にあるカテゴリからアクセスして下さい。

ファイルのダウンロードはホームページの方でお願い致します。

質問・要望・不具合報告はこちら
アマレコTV
アマミキ!
アマレココ
アマレコ・ライト
ファンタジーリモート
AMVコーデック



ホームページ
カテゴリ
最新コメント
カレンダー
04 | 2023/05 | 06
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
最新記事
最新トラックバック
ブログ内タグ

アマレコTV ビデオキャプチャ アマレコVR AMVコーデック Oculus Quest アマレココ アマミキ! コーデック gQuest SC500 動画配信 Pico GO ファンタジーリモート 4K アマレコライト プラグイン G2 AMV4 oculus Unity SC512 ライブ機能 パススルー機能 デスクトップキャプチャ AVX2 Passthrough FAQ リモートソフト 質問コーナー ニコニコ動画 HDキャプチャ DirectShow 120Hz 背景透過 遅延 可変再生速度 レゴ 解説動画 Meta 組み換え VR LEGO XL2420T GV-USB2 2 アセット機能 液晶モニター 倍速液晶 デインターレース PS4 ベンチマーク アマステ AMV2MT Asset Intensity Pico4 MetaQuest Pro VRonVR MonsterX3A designs VideoKeeper2 AVX Alternate XCAPTURE-1 SD-USB2CAP4 GV-USB インストール RDT233WX-Z 32ZP2 31006 ffmpeg WindowsMR Rift 画像処理 31024 T2 60fps RGBキャプチャ UtVideo Shadow Play RYZEN 電源オプション HDCP Haswell HDMI 音遅延 QSV MonsterXU3.0R LameACM MP3 31021 フィギュア 音ズレ 録画 ゲームスムーズモード HT OBS MPC ハイパースレッディングテクノロジー NVEnc 液晶テレビ DirectShowFilter プレビュー 擬似NTSCキャプチャ SD-USB2CUP4 Livetube AtomでHDキャプチャ キャプチャーツール シンクライアント イベント IntensityPro DC-HD1 額縁遅延 REGZA ZP3 32ZP32 オーバーレイ リプレイ機能 モノステ 倍速駆動 倍速補完処理 キャプチャカード Robust Video Matting API APIパススルー機能 60Hz 検証 passthrough python pytorch ハンドジェスチャー パカラーススルー機能 AssetBundle 2.0 Tracking ファイルマネージャプラス SkyBox Hand AMPlayer 新プレイヤー機能 GPU使用率 LAVFilters Preferred 可逆圧縮 GV-USB3 Kabelake SSE SKnet Filter Tweaker Windows 90Hz 新アマレコVR MR VRコントローラー SteamVR VR動画 フレーム間圧縮 XCapture-1 

ブログ内検索
月別アーカイブ
アマレココに関するリンク
お世話になっているソフトのリンク
RSSリンクの表示
管理画面
  • 管理画面