【This Web Policy】
You should make JavaScript available to read this page.
Please enable the execution of JavaScript!











【Infrared Depth】【普通のWebカメラをデプスカメラに変身させる方式


『Kinectが変えるセンシングの世界』
    【リンク・フリー】
  【私設研究所 Neo-Tech-Lab】 Neo-Tech-Lab.co.uk
【報告者】 上田智章(Tomoaki Ueda)
作成日 2014/08/15
ここにチェックボックス型外部コンテンツ・メニューが入ります。




【ブラウザはGoogle Chrome】
●最新版ダウンロードはこちら

【お知らせ】

Windows7でChromeがフリーズを起こす場合は、コントロールパネル⇒管理ツール⇒サービス でWindows Media Player Network Sharing Serviceを停止かつ無効にします。Micorosoftのバグです。

【Microsoft社の発表したWebカメラをデプスカメラに変身させる方式】

2014年8月11日、Microsoft社によってデプスカメラの別方式が発表されました。なんとたった10分で普通のカメラをデプスカメラに改造することができます。ToFカメラに比して少し性能は劣るかもしれませんが、手や顔のトラッキング、表情判定には十分な性能を備えています。何よりカメラの解像度は一気にフルHD以上になります。詳細は右のYouTube動画(英語)で見る事ができます。
また、関連記事は下のTwitterにリンクがあります。
ここでは、動画から得られた情報に基づいて推定される方式について解説します。
Microsoftの論文は下のTweetにリンクあり。




【準備】Webカメラの改造

Webカメラやスマートフォンに実装されているカメラのCMOSデバイスは通常の可視光帯域以外に近赤外線帯域にも感度があります。従って可視光成分をカットするフィルタをレンズの前に取り付けてやれば赤外線カメラに改造することができます。但し、建物内には赤外線光源が存在しないので、フィルタの周囲に波長850nmの赤外線LEDを複数個配置して赤外線照明を構成します。このLEDは単に照明が目的ですので点滅させる必要はなく、点灯状態で十分です。また、電源容量もLED1個50mA程度で十分なのでUSB電源の容量で間に合います。以上の10分程度の改造でアクティブ照明型の赤外線カメラを作る事ができます。


【性能】手や顔のトラッキングが行える!

動画に登場するように、Hand Tracking(手のトラッキング)や顔のトラッキングが行えるようになります。右のように予めデプスイメージで処理されたセグメンテーションに基づいて骨格トラッキングや顔の表情をトラッキングすることができるのです。でも一体どうしてそんな事が可能なのか?
ヒントは次のクリップに登場しました。


【Inverse Squareの歪み原因とその補正方法】

右画像の下段に、左からToF(Time of Flight)カメラ画像、Inverse Square法、InfraredDepth(Microsoft方式)、ToF方式とInfraredDepth方式の誤差が示されています。
ToFカメラについては、KinectV2やSenz3Dで採用されている光の飛行時間をパルスの位相差に基づいて計測する方法です。現状、デバイスノイズや多重反射ノイズ等の問題があります。
ではInverseSquare法とは何か。これは点光源からの距離rの2乗に反比例して明るさIが減衰するという法則から、画素の輝度Iから距離を逆算する方法です。しかしながら、この方式は凄く歪んだ画像になってしまいます。それはどうしてでしょう?
物体には反射光に関して周囲から斑なく均質に照明される環境光で反射する環境光反射以外に、拡散反射と鏡面反射という性質があります。

拡散反射とは点光源の方向と物体の法線方向のなす角度によって反射量が変化する性質です。
また、鏡面反射(人体の皮膚表面は特にこの性質が激しい)とは、カメラの位置と光線の位置、及び物体の法線方向によって定まる光線の入射角と反射角が近いほど反射が激しくハレーションを起こし易い性質です。
先程のInverseSquare方式はこれを無視していたので拡散反射と鏡面反射の大きな場所が近距離に変換されてしまったのです。結果として顔全体も小さくなり、ひどい変形も起こっていますね。
これに加えて、人体の赤外線吸光度は皮膚、眼球、髪の毛、唇で大きく異なります。この吸光度も考慮して実際の距離依存性反射強度を補正する必要があるのです。
また、この補正に必要な物体の法線情報は各画素のx方向及びy方向に隣接する4画素のデプス値から求めることができます。
従って、観測した赤外線画像の輝度値との誤差の2乗値が最小となるように、デプスを未知数として推定することで実現すると考えられます。
このデプス推定処理中で重要な人体各部の吸収率等の多くのパラメータの多くはKinectV2のToF画像とアクティブ赤外線画像から演算して取得することができます。


【まとめ】

動画を見る限り、汎用的なデプスカメラとして最も安いコストでそれなりの精度が達成されているように思えます。
モーションキャプチャセンサとしては十分な性能であるように思えます。
この方式は逆問題と呼ばれる物理量推定処理であり、現時点で数通りのアルゴリズムが存在しているので、そのうち試作してみたいと思います。

なお、推定中のデプスから推定演算に必要な法線ベクトルを演算する方法については下記のNTL方式DepthFusionのソース中にありますので、ご参考まで。
Kinect V1かV2をお持ちであれば確認することができます。
【Kinect for Windows V1用DepthFusion】
【Kinect for Windows V2用DepthFusion】

ソースをご覧になればわかりますが、これはデプス値に基づいてカメラから見た赤外線画像を推定するのと同じ処理で順方向問題と呼ばれる部分です。但し、ソースでは光源は平行光源で取り扱っていますが、この問題では点光源の扱いに変更しなければなりません。従って、Microsoft社の方式にするには、それに加えてこの演算された画像(輝度値)と実測赤外線画像が一致するように(最小二乗誤差となるように)デプス値を推定する逆問題に書き換えれば良いわけです。


【雑感】

それにしても3Dカメラの世界に3D-CGと逆問題の知識が強く関係するようになるとは10年前には予想さえできませんでした。いよいよ面白くなってきたというところでしょうか。

【Kinect V2でToFカメラ画像とInverseSquare法の比較をしてみた】

Microsoft方式の検証を行う前に、まずToFカメラとInverseSquare法をKinect V2を使って比較してみました。Kinect V2にはToFカメラ機能(DepthFrame)に加えてアクティブ赤外線カメラ機能(InfraredFrame)も実装されています。InverseSquare法とは、明るさIは距離rの2乗に反比例すると言うモデルを用いて、距離rは1.0/√Iに比例すると考え逆算する方法です。毎回1/√Iを計算するのは馬鹿げているので、明るさIが16bit(0~65535)の整数であることを利用して、サイズ65536の配列を確保して、予め全ての係数を演算しておきます。これによって演算負荷が重い√や除算の処理を単なる配列のアクセスで置き換えることができます。これをハッシュ技法と言います。
左側がToFデプス、右側がInverseSquare法です。皮膚や髪の毛、眉毛、眼、服等で、物体の赤外線反射率が異なる事と、法線方向に起因する拡散反射と鏡面反射が存在するため、服の皺や腕の血管などが目立つ結果になります。これを反射現象を考慮して、よりToFの結果に近づける方法が今回のMicrosoft社の発表した方式になります。
なお、鏡面反射に関しては、照明側とカメラのレンズ側に、赤外線領域でも有効な偏光板(WGF: Wire Grid Film)を直交状態(クロスニコル)で貼り付けておくと、ほぼ無視できる状態になります。


また、KinectV2のアクティブ赤外線カメラは予め、環境光オフセットを差し引いた画像になっているので、拡散光のみ補正すれば良い事になります。
InverseSquare法は確かに問題はありますが、相対的に大雑把な距離変化は得られますので、非接触バイタルセンシングなどの特定用途では使える方法かもしれません。
より汎用的なデプスカメラの用途への適用を考えるなら、この拡散光+鏡面反射光による影響を補正してToFカメラの精度に近づけるMicrosoft社のアプローチは確かに正しい方法と言えます。

【Kinect V2でToFカメラ画像とInfraredDepth法の比較をしてみた】

Microsoft社のInfraredDepth方式の検証をKinectV2を使って行っている。偏光板(WGF: Wire Grid Film)を直交状態(クロスニコル)で赤外線ブラスターと赤外線カメラの前に貼り付けて撮影している。この状態では鏡面反射がかなり抑制されます。
右図の左上がToFカメラ画像。50cm未満の近距離は距離が測定できません。左下がアクティブ赤外線画像。このままでは法線ベクトルの影響で、輪郭付近程遠方に出てしまうので、InverseSquare法でデプスを求めてもかなり歪んだデプス画像しか得られません。
右側は組織反射率補正は行わず、法線ベクトル補正のみをかけたInfraredDepthです。ノイズが多い原因は現在調査中ですが、ハッシュ技法などに基づく量子化ノイズと思われます。




【Microsoft ResearchのInfraredDepth法を独自アルゴリズムで実現する試み】

試作中。国プロとの兼ね合いによりソース公開はしないかもしれません。DLLは公開するかもしれません。
また、11月28日のトリケップスセミナーではその時点での内容説明とデモを行いたいと思います。
あるいは現在調整中の展示会にてデモを行う可能性はあります。



【訂正】右2番目の図中のRと|L|には√がかかります。







【NeoTechLabの独自アルゴリズム(InfraredDepth)の現状】

 Infrared Depthの別解をいくつか考案し、試してみました。まだ、深度によって物体色を変更していませんが、こんな感じで光源計算までを行って右側レベルの表示が行えるようになってきました。
 暗視カメラのレンズに赤外線透過フィルタ(バンドパス)を追加し、光源をMicrosoft社のように配置することで、リアルタイムにデプス画像が得られます。右の例では640x480画素、30FPSでアクセスしていますが、1920x1080画素でも同様に処理を行うことができます。YouTube動画は10FPSで表示していますが、GPUは使っていません。
 下の写真は試作したカメラ。レーザーが中距離版。LEDが近距離版。









【講演・技術セミナー予定メモ】

【トリケップス セミナー】

【題  名】㉕『Azure Kinectと距離画像センサの測距原理、3Dセンサの応用』
【副  題】~Azure Kinect(Kinect v4)のTime of Flight方式、RealSense(D415, D435, SR305) のStructured Light方式、LiDAR等、非接触生体センシングの原理とその応用まで~
【開催日時】2020年6月18日(木) ⇒ 2020年9月1日(火) 10:00~17:00
【会  場】オームビル
【受講料】47,000円(税別、1名) 59,000円(税別、1口・3名まで)
【開催履歴】
  (1)2013年05月24日 (2)2013年08月30日 (3)2014年02月07日
  (4)2014年06月20日 (5)2014年08月29日 (6)2014年11月28日
  (7)2015年03月18日 (8)2015年07月10日 (9)2015年11月06日
  (10)2016年03月17日 (11)2016年4月14日 (12)2016年07月14日
  (13)2016年11月02日 (14)2017年03月24日 (15)2017年07月7日
  (16)2017年11月02日 (17)2018年03月13日 (18)2018年5月28日
  (19)2018年8月29日 (20)2018年12月5日 (21)2019年4月12日
  (22)2019年7月17日 (23)2019年10月30日 (24)2020年2月7日

【概略内容】
 Azure Kinect(Kinect v4)は2019年7月に北米・中国で発売開始され、2020年3月に日本でも発売予定が決まった。デプスカメラの視野角もWFoVモードで120度、解像度は1024×1024画素となった。SDKはオープンソースであり、C言語ベースのDLL、C++ラッパー、C#ラッパーを備える。360°マイクロフォンアレイの他、3軸加速度・ジャイロセンサも備える。これまでのゲーム機用モーションキャプチャセンサではなく、工業用、健康見守りなどの本格的な応用を視野に入れたものとなっている。
 近年、自動車分野では、自動運転化を実現するための探索センサとしてだけでなく、搭乗者の健康状態モニタやユーザーインターフェースとしても、距離画像センサを組み込んだ3Dセンサにも関心が集まっている。
 また、世界的な先進国少子高齢化を踏まえ、2025年開催予定の大阪万博のテーマは『健康と医療』に決まり、病院または老人ホームだけでなく、独居老人見守り・看取りやスマートホームとしてのシステムに対する関心も高い。
 本セミナーでは距離画像センサとカラーカメラを組み込んだ3Dセンサの基本機能、ソフトウェアで実現できる応用事例をデモを通して紹介するとともに、方式別に測距原理の説明を行い、非接触生体センシングを中心とする応用とその原理について解説を行う。また、Shannonのチャンネル容量の法則を利用した増感処理やマッチング処理の原理や応用についても触れる。
■その他、SDKのセットアップや基本的な事例の資料は添付、あるいはサンプルプログラムのダウンロードができます。


Microsoft社のAzure Kinectの内部構成図


高解像度デプスイメージの例 (Kinect V2)


iPhone6で撮影したカラーJPEG画像から真皮層内毛細血管や皮下組織内の血管を可視化した事例など


■修正日2014年12月25日■06:10頃記載

【奈緒(にゃお)プロジェクト】

Kinect V1/V2, Leap Motion, RealSense等のデバイスを使った研究(UIやロボット、Agent等)、雑誌投稿、学会及び展示会などでの成果発表、個人の動画作成利用などの趣味を支援するために、著作権フリーのオリジナル3Dモデル(MikuMikuDanceのPMDフォーマット)を製作する私的プロジェクトを開始しました。現在、たかはる氏によるキャラクタ・デザイン・フェーズから衣装デザインフェーズに移行しつつある状態です。
他に並行して私的ロボットプロジェクトもスタートしました。将来的にこの2つのプロジェクトを融合する予定です。

【奈緒のプロフィール】

猫耳、巨乳、ナースタイプのロボット。身長:159cm。しっぽの先からは回路の信号を取得したり、送り込める光る触手状プローブが伸ばすことができる。

【現行利用規定案】

雑誌記事、研究成果の展示利用に関して申請不要。他の商用利用はペンディング。趣味などの私的利用や研究利用は著作権フリー。

【キャラクタデザイン作画】

  (奈緒)たかはる氏  (にゃお)えゐみーさん