KinectとOBSで映像の背景ぼかし
遠隔会議などでカメラを使用する際に,映像をより良いものにしたいという気持ちは起こるもの.
中でも,映像の背景がボケていると被写体を際立たせた画作りができ,同時に雑然とした背景を隠すことができる,プライバシー保護になるといった効果が得られて良い.
一般に,映像の背景をボカすとなると,センササイズの大きいカメラと望遠レンズを使用したり,GeForce RTXシリーズのグラボとNVIDIA Broadcastを使用したり,あるいはPerfectCamを使用するといった選択肢がある.
一方,Kinectシリーズのどれかを持っている場合,OBSの仮想カメラ機能とobs-kinectというプラグインを用いることでこれを実現することができる(obs-kinectはKinect v1,v2,Azure Kinectに対応している).dGPUのない環境でも動作するので,ビジネス用ノートPCなどとの相性も良い.
画像は公式GitHubリポジトリのissueより.
NVIDIA Broadcastなどは人物領域(前景)とそれ以外(背景)に分離して背景部分をボカしているのに対し,Kinectを使った処理では深度によってボカすか否かを判断しているので(一定の距離の範囲外がボケる),カメラの被写界深度にやや近い感じのボケかたとなる.
また,NVIDIA Broadcast同様,背景のぼかし以外にも背景除去などができる.
使用するKinectは映像が最も高精細かつ小型で設置が楽であるという点でAzure Kinectをおすすめしたいが,記事執筆時点ではAzure Kinectへの対応は開発中であるため,開発中のビルドをダウンロードする必要がある.
背景ぼかしの機能は実装されているものの,筆者の環境だと最新の開発ビルド ( #25)を設置しただけだと深度の取得ができず,一旦古いバージョンを設置した後に最新の開発ビルドで上書きする手順をおこなったら正常に動作するようになった.