【受付時間】 10:00〜18:00(土日祝日を除く)
【受付時間】 10:00〜18:00
(土日祝日を除く)
本記事では、iniVation社が開発しているイベントカメラのStereo Kitについて解説していきます。
イベントカメラは、通常のカメラと異なり、物体の動きや景色の変化を写すカメラです。また、Stereoはカメラを2台並べて撮影することで、奥行きの情報を取得する撮影方法のことを言います。
今回はまず初めにイベントカメラとは?Stereoとは?といったところを詳しく解説し、キットを用いて実際にデータ取得を行ってみます。
普段私たちが使っているカメラは、一定の間隔(たとえば30fpsなら1秒間に30回)で「画面全体」を丸ごと撮影します。動いているものも、まったく動いていない背景も、関係なくすべて毎回記録します。
これに対してイベントカメラは、画素(ピクセル)ごとに「明るさが変化した瞬間」だけを記録するカメラです。人間の網膜の仕組みをヒントにした「ニューロモルフィック(神経模倣型)」のセンサーで、変化のあった画素だけが、それぞれ独立して「いつ・どこで・明るくなったか暗くなったか」というデータを吐き出します。この1つ1つのデータを「イベント」と呼びます。

この仕組みのおかげで、イベントカメラには通常のカメラにない特長があります。
こうした特性から、イベントカメラは高速ロボティクス、自動運転、VR/ARの視線追跡、人物トラッキングなど、「速さ」と「効率」が求められる場面で注目されています。

ステレオ(Stereo)とは、カメラを2台横に並べて、同じ対象を少し違う角度から同時に撮影する手法のことです。これは人間が「両目」でものを見て距離を感じ取るのとまったく同じ原理です。
近くにあるものは、左の目(左カメラ)と右の目(右カメラ)で見える位置が大きくズレます。逆に、遠くにあるものはほとんどズレません。この「左右の見え方のズレ(視差)」の大きさを計算することで、対象までの距離を割り出せます。これがステレオ計測(ステレオビジョン)の基本原理です。
1台のカメラだけでは画像に奥行きの情報が含まれないため、こうして2台のカメラのズレを使って3次元的な距離を復元します。これにより、平面的な映像だけでなく、空間としての「深度マップ」を得ることができます。

2台のカメラで「同じ瞬間」を撮ることが、ステレオ計測の前提になります。タイミングがずれると、動いている対象の左右の位置がそもそも別の瞬間のものになってしまい、正しく距離を計算できません。そのため、2台のカメラを電気的に同期(シンクロ)させる仕組みが欠かせません。

iniVation社のStereo Kitは、イベントカメラを用いたステレオビジョンを行いたい人向けに、必要なものをひととおりまとめたキットです。イベントカメラを2台買って自分で並べる手間や、同期・固定の工夫を、最初から解決してくれるパッケージになっています。
Stereo Kitには、カメラ本体だけでなくステレオ撮影に必要な周辺機材が含まれており、以下の写真のようにステレオカメラを構築することができます。

ポイントは、カメラを2台設置するためのステレオプレートや同期ケーブルが含まれているので、前章で触れた「2台を正確に並べる」「同じ瞬間を撮る(同期)」という、ステレオで重要な点をカバーして、すぐに実験が始められるようになっていることです。
それでは、イベントカメラStereo Kitを実際に動かしてみたいと思います。
イベントカメラStereo Kitを動かすためのソフトは以下のものを使用します。
https://github.com/nanoxeed/dv-stereo-python-quickstart
これらのソフトを動かすためにPython3が必要になります。
まずは、2台のカメラのそれぞれの画像を表示させてみます。ターミナル上で以下を実行します。
・pip install -e .
python stereo_camera_capture.py
・実行すると以下のような画面が表示されます。
この状態で、カメラの前で手を振ったり、止めたりしてみてください。手を動かしたときだけ、カメラが反応し、映像が写ることが確認できます。

次に、イベントカメラの瞬間ごとのイベントを積算することで止まっているときも一定画像として残るようにして映してみます。
以下を実行することでこの積算バージョンのカメラ表示を行うことができます。
・python accumulate_stereo_preview.py
・実行すると以下のような画面が表示されます。
手を動かすと、先程は動いた瞬間のみの表示でしたが、止まった後も少し画像が残るようになっているのが分かります。

最後にステレオ画像の結果を表示します。ステレオ画像を取得するにはカメラのキャリブレーションが必要になりますが、ここでは詳細は割愛します。詳しくはクイックスタートのREADMEをご確認ください。
キャリブレーションが完了したら、以下のコマンドでステレオ画像を取得してみます。
・python stereo_pointcloud_rerun.py –calibration
calibration/stereo_calibration.json –sgbm-num-disparities 128 –max-depth-m 5.0 –pointcloud-interval 1 –stats-interval 1
・UIが立ち上がり以下のような画面が表示されます。
UIは左上が3D点群描画、右上がステレオの視差画像、下の画像が左右の画像になっています。イベントカメラでは通常のカメラよりも特徴が少ないため、綺麗な奥行きは取得できませんが、手を動かすと動きに反応して、3D上に動きが表示されるのが分かります。

イベントカメラとステレオの仕組みを説明し、iniVationのイベントカメラStereo Kitの特徴について述べ、実際にクイックスタートの内容に沿って動かしてみました。
イベントカメラは通常のカメラとは異なり、明るさの変化を捉えることで、高速に動くものや暗い環境でも動作することができ、ドローンや自動運転、人検出といったところでの活用が期待できます。
この記事を読んで、このカメラ面白いなと感じていただけた方はぜひ下記リンクよりお問い合わせ下さい。
最後までお読み頂きありがとうございました。
製品に関するご相談、デモ機器、お見積・納期などに関して お気軽に問い合わせ下さい
※は入力必須項目となります。