Blog

インタラクション向け3Dセンサの仕様と撮影結果を比較してみた


AI Labの尾崎です。
主に人間とロボットとのインタラクションに関する技術開発を担当しております。

さて、インタラクションといえば、ARやVRを始めとしたxRが巷で流行っていると思います[1]。たとえば、家具のCGオブジェクトを現実空間に重ねて表示[2]したり、VRゴーグルをかぶって仮想空間の物体をリズムに合わせて斬るゲーム[3]なんかがあります。
このxRではユーザ体験を向上させるために、物体や人体との距離などを測定することがあります。たとえば、AR上でオブジェクトが障害物に隠れる現象(オクルージョン)を再現するため、VR空間上に手を表示するため、空間を3Dモデルとして保存するために測定されます。

このときに役立つハードウェアがデプスセンサやLiDARなどと呼ばれる3Dセンサ(俗称)[4]になります。しかし、この3Dセンサはたくさん種類があり、それぞれどのような特性を持つのか私を含め知っている人は多くないと思っております。

本記事では、インタラクションに役立つ3Dセンサについて、その測定原理や仕様、実際の測定結果を分析してお伝えします。

3Dセンサの測定原理とその比較

この章では3つの距離の測定方法について大雑把に説明します。

  • ToF (Time-of-Flight) 法[5]: 光をセンサの正面に投射し、その光が反射して返ってくるまでにかかった時間から距離を計算する測定法です。
  • アクティブステレオ法[6]: 光をセンサの正面に投射し、その反射光の位置から距離を計算する測定法です。
  • パッシブステレオ法[6]: ある点を2つの地点から撮影し、その点の見え方のズレから距離を計算する測定法です。

これらを一般論として定性的に比較すると表1のとおりとなります。

 

表1 センサの測定原理の定性的比較(○:良い、△:普通、×:悪い)

このように各測定原理には一長一短があります。次の章ではこれらの測定原理を用いた市販の3Dセンサを比較してみます。

3Dセンサの定量的比較

この章では前の章で説明した測定原理を使った市販の3Dセンサを仕様の観点から定量的に比較してみます。比較の結果が表2となります。

表2 市販の3Dセンサとその比較

※撮影モードが切り替えられる機種も含まれるため、それらの機種は比較しやすい撮影モードを選びました。詳しくはそれぞれの仕様書をご覧ください。

表2を見ると、どのセンサもおおよそ似たような数値が並んでいるように見えます。しかし、よくよく眺めてみると、各センサの違いが見えてきます。例えば、Azure Kinect DKでは測定できる距離が他のセンサに比べ短いものの、視野角は垂直水平ともに120度ととても広いことがわかります。なお、Azure Kinect DKには測定できる距離がそこそこ長くできる一方、視野角は狭くなる撮影モードもあります。一方でZED 2を見ると20mも取れて、視野角はAzure Kinect DKに及ばないもののそれに次ぐ広さを持っています。ぱっと見たところ、ZED 2が全体的にバランスが良く、ZED 2を使えばいいのではないかと感じさせられます。しかし、測定時にCUDAが必要なところがネックとなる場合があります。
表2を見ると、センサの性能はおおよそわかるものの、実際に撮影した画像を見ないと直感的にわからないところもあります。そこで次の章では実際の撮影結果を比較してみます。

3Dセンサの定性的比較

この章では、これまでの知識を踏まえ、実際に撮影した画像をもとに定性的に比較してみます。

撮影条件

撮影する照明条件によって測定結果が大きく変わってくるため、今回は撮影条件をコントロールしやすい屋内の広い場所にて撮影を行います。実験場所の写真を図1に示します。この場所の広さはおよそ18[m] x 17 [m]となります。今回は対角線上に撮影するので最大およそ20m程度の奥行きがあります。撮影ソフトや再生ソフトはそれぞれのセンサに標準で付属しているものを利用しました。たとえば、Azure Kinect DKの場合k4arecorderを、 RealSense L515はrealsense-viewerを利用しました。撮影モードは表3のとおりです。なお、表3に書いてあるパラメータ以外の設定はデフォルトとしました。視野角の違いが見た目でわかりやすくするため、測定位置は固定した三脚で行います。被写体はパンダのぬいぐるみ、デッサン人形、デッサン用の手、ペットボトルです。被写体の写真を図2に示します。パンダのぬいぐるみは各センサの弱点である黒色を含む物体として、デッサン人形は人の代わりとして、デッサン用の手は人の手の代わりとして、ペットボトルは透明な物体として被写体に選びました。今回は倫理的な観点から人の撮影をあえて行っていません。被写体とカメラがおおよそ2m程度となるように被写体とそれらを乗せる台を設置しました。

ちなみに本記事のデータは私の研究の一部として取得したものであり、この記事を書くことを主目的として撮影したものではありません。

図1 実験場所を撮影した写真。前者は正面から、後者は横から撮影したもの。

図2 今回使う被写体たち。左からパンダのぬいぐるみ、デッサン人形、デッサン用の手、ペットボトル。

表3 各センサの撮影モード設定

撮影結果と比較

各センサごとに撮影した結果を順に並べていきます。

Azure Kinect DKの撮影結果

Azure Kinect DKにはさまざまな撮影モードがあるため、今回は画角が広いが距離は短い撮影モードWFOV 2×2 Binnedと画角が狭いが距離は長い撮影モードNFOV 2×2 Binned を試しました。まず、表3にあるWFOV 2×2 Binnedで撮影した結果を図3に示します。

図3 Azure Kinect DKのWFOV 2×2 Binnedモードで撮影した画像。1番目から順にカラー画像、深度画像、色なし点群を示している。(点群に色がないのは深度画像の画角の広さを優先したため)

次に、NFOV 2×2 Binnedで撮影した結果を図4に示します。

図4 Azure Kinect DKのNFOV 2×2 Binnedモードで撮影した画像。1番目から順にカラー画像、深度画像、色付き点群を示している。

Azure Kinect DKの撮影モード同士の比較

Azure Kinect DKの撮影モードWFOV 2×2 BinnedとNFOV 2×2 Binnedで比較してみます。図3を見るとWFOV 2×2 Binnedモードでは、カメラの真上にある天井から真下にある床まで点群が取れていることがわかります。ただし、ToF法の弱点である透明なペットボトルが測定できていません。図4を見ると、WFOV 2×2 Binnedと違い、遠くの壁まで点群が撮れていることがわかります。また、ペットボトルもかろうじて撮れていることがわかります。このようにAzure Kinect DKは撮影モードで撮影時の特性が変わるという性質を持っています。この原因は詳しくはわかりませんが、2つの撮影モードで光を投影する方法が異なるため、撮影後の後処理が異なるためだと考えられます。後処理でのパラメータ調整次第ではペットボトルを測定できるようになるかもしれません。

RealSense L515の撮影結果

表3に示した撮影モードで撮影した結果を図5にしめします。


図5 RealSense L515で撮影した画像。1番目から順にカラー画像、深度画像、色付き点群を示している。

Azure Kinect DKとRealSense L515との比較

同じToF法で測定しているAzure Kinect DK (NFOV 2×2 Binned)とRealSense L515とで比較してみます。 表3を見てもわかりますが、L515のほうが深度の解像度が高く、これが深度画像や点群の細かさとして測定結果に現れています。例えば、デッサン人形の両手を見るとわかりますが、Azure Kinect DKではだいぶギザギザになって見えますが、L515では直線状に見えます。一方で、L515ではペットボトルを測定できていません。また、床面や天井があまり測定できていないのも気になります。

RealSense D455の撮影結果

表3に示した撮影モードで撮影した結果を図6にしめします。

図6 RealSense D455で撮影した画像。1番目から順にカラー画像、深度画像、色付き点群を示している。

 

RealSense D415の撮影結果

表3に示した撮影モードで撮影した結果を図7にしめします。

図7 RealSense D415で撮影した画像。1番目から順にカラー画像、深度画像、色付き点群を示している。

RealSense D455とD415との比較

同じアクティブステレオ法で測定しているRealSense D455とD415で比較してみます。 D455はD415よりも新しいセンサであり、画角が広く測定限界距離は2倍となっており、上位互換のようなセンサになっています。それぞれの深度画像を見てみると、D455のほうが画角の広さからか床面や天井がなめらかに検出されていることがわかります。ただし、白飛びしている床の深度はいずれも撮れていない事がわかります。なお、表2の仕様では10mほどの深度までが撮影できるのに撮影できていないように見える原因は再生ソフトの仕様が4mまでしか表示されないようになっているためです。このため、RealSense SDKでデータを見ると4m以上も取得できていることが確認できます。ただし、4m以上から誤差が非線形に大きくなっていきます[11]。

ZED 2の撮影結果

表2に示した撮影モードで撮影した結果を図8にしめします。

図8 ZED 2で撮影した画像。1番目から順にカラー画像、深度画像、色付き点群を示している。

Azure Kinect DK とZED 2との比較

ToF法で測定しているAzure Kinect DK (NFOV 2×2 Binned)とパッシブステレオ法で測定しているZED 2とを比較してみます。Azure Kinect DKでもそれなりに遠くまで測定できていましたが、ZED 2の深度画像を見るとカラー画像から見えるほぼすべての領域を測定できているように見えます。最も遠いところで20m程度あるのですが、それでも測定できているように見えます。これはAzure Kinect DKよりも遥かに測定できているように思えます。しかし、ZED 2 の点群を見ると、天井部分や壁部分がぐちゃぐちゃになっているように見えます。また、デッサン人形と手の間に謎の壁が測定されており、Azure Kinect DKと比べ、非常に測定誤差が大きいことが見て取れます。仕様だけ見るとZED 2がとても良いように見えたものですが、このように壁などの平面を測定することにはZED 2は向いていないといえます。

撮影結果全体に対する考察

3Dセンサ共通の弱点である黒色がどのセンサでも測定できたのは技術の進歩だと思いました。今回用意したパンダのぬいぐるみは白色と黒色が混ざったふさふさした物体になりますが、本来であれば、黒色は測定できないと想定して設置したものでした。しかし、どのセンサでも測定できているのは、後処理による工夫がなされているからかもしれません。例えば、RealSense D415では、黒い物体を測定した結果に対して穴埋め (Spatial Hole-filling) などの後処理を行い、測定した結果の欠損を補間することができます[12]。

まとめ

本記事ではxRなどに役立つハードウェアである3Dセンサの仕様と撮影結果をいくつか紹介しました。結論から言うと、センサごとに特性があり、目的に応じてその特性を活かせるようにセンサを選定したほうがよいという気持ちになりました。たとえば、屋内空間をきれいに3Dモデルにしたいのであれば解像度の高いRealSense L515が向いていそうですし、近くを通りかかる人の距離を測定したいのであれば画角の広いAzure Kinect DKが向いていそうですし、遠くにいる人との距離を大雑把に測定したいのであればZED 2が向いていそうです。

今後の課題として、カラー画像から深度を推定する技術と差別化することがあると考えられます。最近では3Dセンサを用いずにカラー画像から深度を推定する研究が流行っています[13]。ただし、これらの研究の問題として、物体の大きさや距離の単位がわからないというところがあります。その点を踏まえ、3Dセンサの強みとは何かを強く押し出していく必要があるのではないかと思います。

 

参考文献

[1] 星 貴之, 檜山 敦, 稲見 昌彦, “VR/AR/MRの産業分野への応用展開”, https://www.jstage.jst.go.jp/article/jjspe/83/6/83_485/_article/-char/ja/
[2] “RoomCo AR”, https://apps.livingstyle.jp/roomco/launchApp.html
[3] “BEAT SABER”, https://beatsaber.com/
[4] “3D Sensor Advent Calendar 2019”, https://qiita.com/advent-calendar/2019/3d-sensor
[5] 安富他, “Time-of-Flight カメラ”, https://www.jstage.jst.go.jp/article/itej/70/11/70_880/_pdf
[6] 樋口未来, “カメラを用いた3次元計測(1)”, https://news.mynavi.jp/article/cv_future-6/
[7] “Azure Kinect DK hardware specifications”, https://docs.microsoft.com/ja-jp/azure/Kinect-dk/hardware-specification
[8] “LiDAR Camera L515 Datasheet”, https://dev.intelrealsense.com/docs/lidar-camera-l515-datasheet
[9] “Intel RealSense D400 Series Product Family Datasheet”, https://dev.intelrealsense.com/docs/intel-realsense-d400-series-product-family-datasheet
[10] “ZED 2 Camera and SDK Overview”, https://www.stereolabs.com/assets/datasheets/zed2-camera-datasheet.pdf
[11] “Best Known Methods for Tuning Intel® RealSense™ Depth Cameras D415 and D435”, https://www.intel.com/content/www/us/en/support/articles/000027833/emerging-technologies/intel-realsense-technology.html
[12] Anders Grunnet-Jepsen, Dave Tong, “Depth Post-Processing for Intel® RealSense™ Depth Camera D400 Series”, https://dev.intelrealsense.com/docs/depth-post-processing
[13] “Depth Estimation”, https://paperswithcode.com/task/depth-estimation

 

Author

ozaki
ozaki