いつもチェックしているAdafruitのAsk An Engineerで、再帰反射材を使ったクロマキー合成のやり方が紹介されていました。詳しいやり方はいつも丁寧なLearn Guideとしてまとめてくれています。
通常の緑色の布を使ったクロマキー合成だと、均一に照明を当てたり自分の影がかからないようにするために、かなり大きなスペースが必要だそうです。再帰反射材を使うと省スペースでできるらしい。
ちょうどWeb会議でプレゼンする必要に迫られ自分でもやってみました。
再帰反射材とは
再帰反射とは、光学上特殊な反射機構で、入射した光が再び入射方向へ帰る反射現象を指します。入射角と反射角が等しくなる鏡などの反射とは異なり、受けた光をそのまま光源にはね返します。
よく自転車に貼ってあったり、工事現場の安全ベストなんかでお馴染みのやつですね。
アマゾンから買えるし、100円ショップでも見かけます。
再帰反射材に向かって、カメラの方角から緑色のライトを当ててあげれば緑色として映るはず。これならバックと被写体は近くても大丈夫(というか近いほうがいいのかも)。さらにライトの色を青色に変えれば青色バックにも早変わり。被写体の色によって気軽に使う色を変えることもできますね。
大きな布の再帰反射材を入手
小さなシール形状や、テープ形状の再帰反射材はモノタロウなどで比較的容易に入手できそうなのですが、今回は大きな布状のものが欲しい。日本で買えるところを探したのですが見つけられず、Learn Guideで紹介されていたe-bayから買いました。
49inch幅(124cm)を3 yard分(274cm)で3,000円ぐらい。送料が5,500円ほどかかってちょっと悔しいですが、2週間ぐらいで届きました。
保護用に貼ってある透明のフィルムを剥がしたら柔らかい布でした。軽いしイイ感じ。突っ張り棒を組み合わせて壁に沿わせて設置。
照明装置をつくる
主な部材
照明の色や明るさは調節できるようにしたいので、Learn Guideと同じくNeoPixelリングを使うことにします。カメラを中心に設置することを考えると、24個66mmぐらいがよさそう。Learn GuideではマイコンはQT Py(SAMD21)を使ってCircuitPythonでコードを書いてる。そんなに複雑なことをやるわけでないので、安いArduino互換機の Pro Micro 5V版を使いました。Shigezoneは安いし通販ですぐに送ってくれるのでありがたい。ロータリーエンコーダに照明はいらないけど手元にこれがあったので。
ロータリーエンコーダのLEDの配線やスイッチの配線はあまり作例がなく、データシートにらみながらブレッドボードで試行錯誤。スイッチのチャタリング緩和にRCフィルタも入れてこんな感じにしました。
大した配線じゃないのでユニバーサル基板でもよいのですが、スッキリさせたかったのでKiCadで専用基板を描いてみました。Pro MicroもフルカラーエンコーダもSparkfunが出しているKiCadライブラリに含まれていたのでありがたく使わせてもらって。garberをJLCPCBに送れば5枚219円!で作ってくれます。送料込でも1,000円かかりません。10日もせず到着。笑っちゃいますね。
Arudino環境でのコードはこちら。電源を入れた直後は緑色モード。ロータリーエンコーダを回すと明るさを変えられます。エンコーダのスイッチを押すと、緑色->青色->任意色の3モードを切り替えられます。
カメラテスト
ノートパソコン内臓のカメラは意外と画角が広く扱いづらいので、USB接続のWebカメラの中では低照度を謳っているELP-USBFHD06H-SFV(5-50)-Jを導入。
リングLEDを点灯しないときには灰色の背景です。
リングLEDを青色にすれば青色バックに早変わり!
グリーンバックにして、
OBS Studioで映像キャプチャデバイスソースのエフェクトフィルタとしてクロマキーを選び、色キーの種類で緑を選べば合成出来上がり!
プレゼンを終えて
130人ぐらい相手にMicrosoft Teamsでプレゼンしました。共有画面と一緒に話している人のカメラ画像を見ることもできますが、他にカメラをONにしている人に埋もれがち。またフルスクリーンモードにすると共有画面しか見えなくなります。
パワポのスライドショーに自分の映像を重ねることで、話し手の臨場感が増し少しでもメッセージがより良く伝わったらいいなぁ。参加者数人に感想を聞いたところ概ね好評でした。
これでいつ会社を首になってもYouTuberとして活動できる?!