Intel RealSense Depth Camera D435i を動かしてみた

せーのでございます。
最近私の中ではDepthカメラブームが来ております。
そこでDepthカメラ界ではおなじみのIntel RealSenseの2019年最新版、「Intel RealSense Depth Camera D435i」をゲットしましたので早速動かしてみました。

Depthカメラとは

普通のカメラ(RGBカメラ、といいます)で映像を映すと、対象は2次元として切り取られます。その映像から例えば「そこに人間が映っている」と認識するためには画素ごとの色の違いやグラデーションから類推して判定する必要があります。そこに機械学習の仕組みを使うわけですが、カメラに映る色というのは太陽の光や照明、服のシワなど様々な要因で細かく変わるので、精度を高く判定するのは難しいです。

DepthカメラというのはDepth、つまり「深さ」を計れるカメラです。
カメラと対象との距離を測り、そのグラデーションにより「そこに物体がある」と検知できます。

深さの測り方は色々あり、TOF(Time of Flight)センサーと呼ばれるものは光を発光して、その飛行時間を元に算出します。他にもカメラを2台平行に並べ、画像処理によって奥行きを測ったり、各カメラメーカーがパターンの模様を赤外線で照射し、その歪み方で物体の形や奥行きを計算したりします(Structured-Light、と言います)。iPhoneのTrue Depthカメラ(Face IDなどに使われるカメラ)はこのStructured-Light方式で顔の形を判別しています。ちなみに、この模様によって認識精度が大きく変わるため、大抵のメーカーはこの模様の仕様を非公開にしています。

このようにDepthカメラは色々な方法で深さを測った結果、奥行きを含めた「3次元画像」のデータを取得できるため、骨格検知や人物認識などの精度を上げることができます。

と、ここまで聞いたら大体予想がつくように、Depthカメラというのはそれなりのお値段がします。通常のTOFセンサーでも数十万、LiDARと呼ばれる自動運転などに使われるセンサーは数百万単位です。最近では日立のTOFセンサーなどがだいぶコストが下げてきましたが、そこに革命をもたらしたと言われるのがMicrosoftの「Kinect」でした。

Depthや赤外線センサーがついたカメラが2万円台(当時)で手に入るという事で大きな話題になったKinectですが、残念ながら販売停止となってしまいました。

※ちなみに今年新たにビジネス向けとして「Azure Kinect」というデバイスが発売されました(米中のみ)。これも待ち遠しいところです。

そして、Kinectに代わりコスパ最高のDepthカメラとして注目されているのが、今回ゲットした「Intel RealSense Depth Camera」となるわけです。

RealSense D435i

RealSense DシリーズのフラッグシップとなるD435iの最大の特徴はなんと言ってもその手軽さにあります。今VTuberなどリアルタイムモーションキャプチャをサクッとしてみたい、というニーズは意外とありまして、こういったコスパの良いDepthカメラがそういった願いを叶えてくれます。更に今回ゲットしたこのD435iはIMU(慣性計測ユニット)がついています。これは加速度センサー、ジャイロ、地磁気などのセンサーを統合したユニットで、これがあることで動いている対象の3D姿勢検知などが正確にできるようになります。

とにもかくにも開けて動かしてみましょう。普段はmacを使っているのですが、macだと全機能が使えない、という事でWindows機を用意しました。

開封の儀

まあ、小さいです。これで本当にDepthカメラなのか、とKinect世代にとってはこれだけで関心します。

比べてみましょう。

うん、小さい。

レンズ部分です。真ん中にあるのがRGBカメラ、いわゆる普通のカメラで、両サイドにあるのがIRセンサ、赤外線ですね。この2つのカメラで深さを計測します。
一番右側にあるのがプロジェクタです。ここからパターン模様を照射してその歪みを計算して深さの計測に使います。ただD435iの場合はこのプロジェクタは深さを計るメインのセンサーではなく、あくまでIRカメラで計測する際の補助として使われるようです。

レンズと三脚とType-C <=> USBのケーブルのみ、というシンプルな構成です。このケーブルが1m程で少々硬いため、ちょっと取り回ししずらいです。手元に別なケーブルがあるなら変えたほうが良いかもしれませんね。

ファームアップデート

RealSenseのパッケージには特にマニュアルなどはなく、スタートアップのURLが入っているだけです。

そのURLにアクセスしてみると「まずは最新のソフトウェアにファームアップデートして下さい」とあるので、やってみます。ここが地味に引っかかりました。

ファームアップデートには「アップデートソフト」と「アップデータファイル」の2つが必要です。
このページの下の方にファームアップデートソフトと最新のアップデータファイルがありますので、ダウンロードして一つのフォルダに入れます(最終的にはパスを指定するのでバラバラでも構わないのですが相対パスが使えるので同じフォルダの方が分かりやすいです)。この「アップデートには2つファイルをダウンロードしなくてはいけない」というのがサイト上には書かれていないので戸惑いました。

あとはソフト側を開くとコマンドプロンプトが現れるので、フローに沿って進むだけです。

動かしてみた

ファームアップデートが終わったらいよいよ動かしてみましょう。

この部分はRealSense、とても分かりやすいビューツールがありますので、これを使ってみましょう。

と言っても、カメラのテストだけなら[PRESET]と[RESOLUTION(解像度)]を調整するだけです。

D435の解像度は 1280x800までサポートされているので、通常の画像分析には充分かと思います。

PRESETは以下の6つ。

Density、つまりピクセルの密度を高くするかAccuracy、つまりDepthセンサーの正確性を重要視するか、という目安に使えます。Accuracyを高くすれば、必然的にFill Factor、つまりアクティブな画素数は少なくなり、映像としては見づらいけれど、物質スキャンやロボットの目、衝突回避システムのベースデータなどには役に立つ、というわけです。

これが通常のRGBカメラの映像です。意外と画質がいいのに驚きました。

こちらが同じ映像のDEPTHセンサー表示です。距離が遠い方が赤く、手前の方が青く表示されています。

まとめ

という事でRealSenseをまずは触ってみました。 どうも前のシリーズでは姿勢推定や画像認識のサンプルアプリがついてたみたいなのですが、D400シリーズになってからは提供が止まりました。ここからはガチの領域、て事なのでしょうか。逆に言うと生データが取れれば色々なモデルやミドルソフトへの連携ができそうで、非常に楽しみでもあります。

これからどんどんいじっていきたいと思います。

参考リンク