ねこでじ(Nekodigi)

Nekodigi’s diary

学習中の気づきをまとめています。応援よろしくお願いします

【Processing】特殊装置なしで立体映像を映す。(Head Tracking)

成果物

www.youtube.com
今回は、カメラで顔認識をする事によって視点を求めるHead Trackingを使って立体映像を映してみました。画面自体は2Dなのですが、動いて見えることでかなり立体に見えるようになります。

コード

OpenCVのライブラリを利用しています。

仕組み

ベースにしたのはこのサイトですが、近似的に求めているようだったので、私なりに正確な計算方法を考えてみました。atan2極座標の考え方を使っています。
https://discourse.processing.org/t/headtracking-negative-space/4620
FOV(視野角)が60°だとすると、ピクセル単位での奥行はカメラの幅*√3、それをもとに、atan2(顔の位置の中心からの差のx成分,カメラの幅*√3)をするとx方向の角度がわかります。同様にy方向の角度も求めます。映った顔のサイズから距離を、定数(任意)/サイズという式で求めます。ここでわかった3つの数値(極座標)をもとに、デカルト座標を求めます。そしてカメラをその位置に設定します。