市販 Stereo Cameraについて調査中

市販のステレオカメラは、イメージセンサの世代交代や画像処理のチップの世代変更によって大きく変わっていきます。
しかも自動運転やドローンなどの関連のさまざまな思惑によって競争が激しい分野です。
この記事をヒントにより新しい情報を検索してみてください。

(元記事はJetson TK1の記事のはずだったのに、ステレオマッチングの市販品の記事になってしまったため、あらためて市販のステレオカメラ技術の記事として書き直す。)

最近の画像認識の流れとしては、組み込み分野でも画像認識技術の広がりを高めようとする流れがある。
マルチコアで性能を高めようとするアプローチもあるし、GPUで性能を高めようとするアプローチもある。
RaspberryPi Zeroの記事を調べていくと、
ドローンなどの機器で画像認識の利用が高まっていることを感じている。


ロボットの分野では、実空間を認識する必要があり、それらが共通の問題として存在している。

ステレオカメラはそのような問題に対するアプローチの１つである。
ステレオカメラは、計測に失敗しやすいさまざま条件がある。

- テクスチャーのない物体に弱い。
- 周期的なパターンでも失敗する（ことがある）。
- 透明な物体をうまく扱えない。
- 光の反射の輝点もうまく扱えない。
- 左右のカメラでの明るさが違っていてもうまくいかない。
- 遠距離では距離の計測精度が悪くなる。

そのような特性を理解した上で利用したい。

イメージセンサを２台購入して、ステレオ計測をするのは勉強するのはいいだろう。
しかし、何かさっさと結果を出さなければならないときには、市販のステレオカメラを使うことだ。

- 解像度
- フレームレート
- カメラ間距離
- 視野角

そういった条件が、あなたの用途にそうものを探そう。

以下の記述ではTOF方式のカメラについても一部含めている。


##ZED with Jetson TK1
![ZED](https://www.stereolabs.com/img/product/ZED_product_main.jpg)

Stereolabs ZED Depth Camera on Nvidia Jetson TK1 - Quick Observations on Performance
https://www.youtube.com/watch?v=n8YsrmxJgBQ


[NVIDIA Jetson Partner Story: Stereolabs](https://developer.nvidia.com/embedded/learn/success-stories/stereolabs)
この動画の中でドローンを飛ばして３Ｄ計測している住宅はつたが絡まりテクスチャーの多い住宅になっており、ステレオ計測がうまくいきやすい被写体となってる。
　ガラス張りが多いビルなどの場合には、ステレオ計測の結果がどうなるのかが気になるところです。




Stereolabs / バーチャルリアリティ
ドローンで、Stereolabs の ZED ステレオカメラと Jetson TX1 スーパーコンピュータと組み合わせることで、最新のバーチャルリアリティ・アプリケーションにもたらす能力をご覧下さい。
http://www.nvidia.co.jp/object/embedded-systems-jp.html

Stereolabs Brings Advanced Computer Vision Capabilities to 3D Mapping
https://developer.nvidia.com/embedded-computing

Jetson TX1でZEDを使う
http://qiita.com/furushchev/items/ef6b0c1b471cef6228c0


ZEDを開封している動画
https://www.youtube.com/watch?v=tf5mgdF43Xc


これらの例を見ると、ドローンを使って建物の3Dの形状を測定するということが、一昔前よりも、容易に実現可能になってきていることがわかります。
　ステレオカメラは、目的にそった構成のカメラがあれば、それを使うべきであって、自作することは勉強目的ですることと考えるべきでしょう。イメージセンサ・レンズの選択とイメージセンサ基板の固定方法、イメージセンサの同期の確保、イメージセンサでのゲインや色バランスの問題などがあるからです。
　ロボットのプロトタイプでは、Kinectをそのまま使ってある例を見たことが多くあります。

capture 110° wide-angle video and depth
175 x 30 x 33 mm (6.89 x 1.18 x 1.3’’)
159 g (0.35 lb)
であるというZEDの視野角の広さや寸法など驚きを感じています。
計算の部分は、PCやJetsonにゆだねる設計になっています。
USB3をインタフェースとして使用しています。


これらの記事で紹介されているZEDは次の場所でより詳しく知ることができます。

StereoLabs ZED 2K Stereo Camera
https://www.stereolabs.com/


Stereolabs
https://github.com/stereolabs


[Youtube でStereoLabs ZED　を検索](https://www.youtube.com/results?search_query=StereoLabs+ZED)


[Jetson TX1でZEDを使う](http://qiita.com/furushchev/items/ef6b0c1b471cef6228c0)

[ZED camera offers positional tracking for mobile VR](http://www.hypergridbusiness.com/2016/07/zed-camera-offers-positional-tracking-for-mobile-vr/)

[‘ZED’ Clip-On SLAM Camera Brings Positional Tracking To Gear VR](http://uploadvr.com/new-clip-slam-camera-brings-positional-tracking-gear-vr/)

--
## ZED mini　が出てるよ(追記 2019.08.23)

https://www.stereolabs.com/zed-mini/

https://www.stereolabs.com/developers/nvidia-jetson/

Jetson Nano と使うこともできるようです。

---


ZEDという特定のステレオカメラを使うのではなく
自力でステレオを行いたい方には次のslideShareが役立つはずです。

Jetson TK1でSemi-Global Matching

http://www.slideshare.net/RyoSakamoto/jetson-tk1semiglobal-matching

Jetson/Cameras
http://elinux.org/Jetson/Cameras

　NVidiaの Jetson TK1で使えるカメラについての情報がまとまって書かれています。


Jetson TK1 +
PlayStation Camera
ROS package
http://pt.slideshare.net/ssuser4d25e1/20160126-jetson-ps4eye01


JETSON TK1のセットアップ(JETPACK, GRINCH, ROS JADEのインストール)
https://daichiahl.wordpress.com/2016/07/18/jetson-tk1%E3%81%AE%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97/



2015年度GPGPU実践基礎工学　第14回　GPGPU組込開発環境
http://www.slideshare.net/ssuserf87701/2015gpgpu14?qid=fb380186-b963-463b-8a51-52731d350225&v=&b=&from_search=1



車載組み込み用ディープラーニング・エンジン NVIDIA DRIVE PX
http://www.slideshare.net/NVIDIAJapan/nvidia-drive-px-64192446?qid=f8521865-2f65-4a68-9772-8a2e9270bf13&v=&b=&from_search=8



NVIDIA、「Maker Faire Tokyo 2016」でディープラーニングをDIYで行なう方法を解説
「AIを使う電子機器が簡単に設計できる」とNVIDIA 矢戸氏
http://car.watch.impress.co.jp/docs/news/1014414.html


トヨタの自動運転研究も紹介された「NVIDIA Deep Learning Day 2016 Spring」
http://car.watch.impress.co.jp/docs/news/755996.html


Hardware Acceleration of OpenCV
http://elinux.org/Jetson/Computer_Vision_Performance


Jetson TK1 の開発環境構築 Step by Step
https://yseosoft.wordpress.com/2016/01/11/jetpack_install_step/

比較：
##**kinect**
　kinectの視野角は
Kinect v1とKinect v2の仕様比較
http://www.buildinsider.net/small/kinectv2cpp/01
を見ると
	　　　　　　　Kinect v1	Kinect v2
水平（Horizontal）	57度	70度
にとどまり、capture 110° wide-angle video and depthというZEDの視野角の広がりは
着目に値します。


[気になる中身は…？海外サイトでKinectがバラバラに分解される](http://www.gamespark.jp/article/2010/11/05/25525.html)

![kinectの分解写真](https://d3nevzfk7ii3be.cloudfront.net/igi/eORRRALtniStOpl3.medium)


###量産対応可能 インテリジェント３D TOFカメラ開発キット
[TB-7Z-TCDK-GC2/TB-7Z-TCDK-GC3]
![３D TOFカメラ開発キット](http://www.inrevium.com/assets/img/product/tofcamera/tb_7z_tcdk_gc2/section_02_01_image_01.png)
Field of view	67.1 deg(D) x 54.6 deg(H) x 41.4 deg(V)

これと比較しても、視野角の広がりがだいぶ違います。


TEDの提供しているTOFカメラ（追記 2019.08.23）

https://www.inrevium.com/product/tofcamera/tb-7z-tcdk-hc2.html

---

##**Stereo Vision IP Suite**
視野角約 42°
以下のメーカーのサイトには
評価キットの認識距離範囲・距離精度理論値が記されています。
ステレオマッチングでの視差の計算式を元に評価した値と
比べてみると理解が進むことでしょう。

http://www.fsi-embedded.jp/_emb/sv/evaluationkit.html
![ステレオビジョン評価キット](http://www.fsi-embedded.jp/_emb/sv/img/sv_evakit.jpg)


##**RoboVision 2**
水平画角 45度
[超高感度ステレオカメラモジュール　RoboVision 2] 
(http://www.zmp.co.jp/products/robovision2)

![画像とグラフ](http://www.zmp.co.jp/wp-content/uploads/2016/05/RoboVision2_ObstacleDetection1-1024x740.png)

## RoboVsion3 https://www.zmp.co.jp/news/pressrelease_20180329

##**Bumblebee**
[Bumblebee®2 ステレオビジョンカメラ]
(https://www.ptgrey.com/bumblebee2-firewire-stereo-vision-camera-systems)

![https://www.ptgrey.com/Content/Images/uploaded/MarketingImages/bb2-models-family.jpg](https://www.ptgrey.com/bumblebee2-firewire-stereo-vision-camera-systems)

外部トリガーとストロボ機能のための GPIO コネクターも搭載しています


Bumblebe のサイトは現在ではFLIRのサイトにリダイレクトされます。

FLIRは赤外画像の他にも距離画像にも手をだしてきたということでしょうか。

---

次のステレオカメラはおそらく産業用のステレオカメラです。
どの距離範囲をどれだけの視野範囲で撮影するのかによって、どの製品を選べばよいのかを示しています。

##**ENSENSOカメラ選択ツール**
https://jp.ids-imaging.com/ensenso_calc.html
![ENSENSOカメラ](https://jp.ids-imaging.com/system/modules/ensenso_ids/html/images/workspaceParams.jpg)

----
##**ステレオ位相シフト方式(ステレオ相関方式にも対応)ＦＡ用3次元画像計測カメラ【国産】**


http://www.forks.co.jp/products.html

https://premium.ipros.jp/forks/product/detail/2000231229/#catalogDownloadArea

----
###**Leopard Imaging Inc** [3D Stereo Camera](https://www.leopardimaging.com/LI-USB30-V024STEREO.html)

![ステレオカメラ基板の画像](http://shop.leopardimaging.com/images/14005647430451365589066.jpeg)

カメラ間距離：50 mm

[TX1 Camera Kit](https://www.leopardimaging.com/TX1_Camera_Kit.html)
[LI-TX1-KIT-IMX185M12-D TX1 Camera Kit ](https://www.leopardimaging.com/LI-TX1-KIT-IMX185M12-D.html)
TX1 Adapter Board can support up to 3 4-lane MIPI 
を使って、Dual Camera Streamingができるようだ。

この会社の製品では、USB-3.0もある。カメラのインタフェースのが複数書いてあり、それぞれで、どれくらいの画像サイズ、fpsが実現できているのかを調べてみるといいでしょうう。
　問題は、対象とする開発でのCPUボード側のインタフェースです。その組み合わせで実現できるデータのやり取りが決まります。

------

###**Tara - USB 3.0 Stereo Vision Camera** 
https://www.e-consystems.com/3D-USB-stereo-camera.asp

Baseline distance of 60mm 
Depth ranges from 50cm to 300cm

最初からOpenCVを使ったサンプルアプリケーションを提供しています。
>TARA SDK（OpenCV）アプリケーションに含まれるもの
顔検出
高さ推定

----
###**DUO MLX**
https://duo3d.com/product/duo-minilx-lv1

カメラ間距離： 30 mm
Baseline: 30.0mm
Field of View
170° Wide Angle Lens
Low Distortion < 3%

![DUO MLX](https://duo3d.com/public/media/products/web_00-4.png)


利用できるソフトウェアの説明 [DUO Dashboard](https://duo3d.com/docs/articles/dashboard#Dense3DApp)

「Configurable Parameters:」の説明を読むとOpenCVのSGBMを使っているのではないかと推測される。
また、次の動画の中でキャリブレーションをしている様子をみると、画像中のテクスチャを使ってキャリブレーションができるようになっているようだ。

Youtube上のduo3d　によるページ　[duo3d](https://www.youtube.com/user/duo3d)

- [Youtube: Unboxing DUO MLX - 3D Senzor](https://www.youtube.com/watch?v=kvipvH52nSI)
- [Youtube: DUO MLX Hands On](https://www.youtube.com/watch?v=1nySpQR9Ejw)

- [Duo3D Stereo Camera (MLX) on JTX1](https://devtalk.nvidia.com/default/topic/935519/duo3d-stereo-camera-mlx-on-jtx1/)
- [DUO AudioSight](https://www.youtube.com/watch?v=uKZtILPnvX4)
- [What would you do with DUO?](https://www.youtube.com/watch?v=lqIKz8FZxmA)
- [DUO Automated Calibration](https://www.youtube.com/watch?v=OUjHyRWNaPc)
- [DUO Developer Kit (DDK) - Overview](https://www.youtube.com/watch?v=7KeAAHuiPUs)




----

###**Intel RealSense**
[Intel® RealSense™ Developer Kit (SR300)](http://click.intel.com/intelrrealsensetm-developer-kit-featuring-sr300.html)
[Intel RealSense まとめ](http://www.naturalsoftware.jp/entry/2015/08/10/110737)

Amazon Picking Challenge で使われた例があります。
SlideShare [Amazon Picking Challenge 結果報告](http://www.slideshare.net/pfi/amazon-picking-challenge)
この記事の中でも、棚の座標とカメラからみた座標とを校正(キャリブレーション）することを述べています。

ステレオカメラや他の距離画像が得られるセンサにしても、カメラ座標系と対象物の世界の座標系の相互関係を得ることが極めて重要です。生物の場合であっても、それはされています。特に重力の方向を考えて動きを作ることが重要です。視野の下方向を、常に空間の下とは関係しないことを、重力の方向を感知する器官を持っています。


　ステレオカメラ類を開発しようとする人は、何をするために作成しようとするのか、自分の実現したい目的を十分に明確にすることです。
structure from motion の拡張の１つとしてステレオカメラがある場合もあるでしょう。





---------------------------------------------------------
##いくつかの距離画像の得られるカメラの比較：
Kinect v1とKinect v2の仕様比較
http://www.buildinsider.net/small/kinectv2cpp/01
を見ると
	　　　　　　　Kinect v1	Kinect v2
水平（Horizontal）	57度	70度
にとどまり、capture 110° wide-angle video and depthというZEDの視野角の広がりは
着目に値します。



|Stereo Camera         | Field of View | maker                 | 参考 URL     | 参考  |
|:---------------------|:-------------:|:----------------------|:-------------|:-------|
|ZED                   | 110           |                       |[ZED 2K Stereo Camera](https://www.stereolabs.com/)　 |: Jetson TK１との併用 |
|kinect                |  57           |Microsoft              |[Kinect v1とKinect v2の徹底比較](http://www.buildinsider.net/small/kinectv2cpp/01)　　|
|kinect2               |  70           |Microsoft              | 同上 |
|TB-7Z-TCDK-GC2        |  54.6         |Tokyo Electron Devices |[量産対応可能 インテリジェント３D TOFカメラ開発キット](http://www.inrevium.com/product/tofcamera/tb-7z-tcdk-gc2.html)| time of flight 方式|
|Stereo Vision IP Suite|   42          |Fujisoft               |[Stereo Vision Evaluation Kit](http://www.fsi-embedded.jp/_emb/sv/evaluationkit.html)   |Altera® Cyclone® V SoC の評価ボード、FPGAを利用するシステム|
|RoboVision 2          |   45          |ZMP                    |[超高感度ステレオカメラモジュール　RoboVision 2](http://www.zmp.co.jp/products/robovision2)
|Bumblebee             |               |PointGrey              |[Bumblebee2 1394a](https://www.ptgrey.com/bumblebee2-firewire-stereo-vision-camera-systems)  |外部トリガーとストロボ機能のための GPIO コネクターも搭載しています|


付記：
　もっと詳しいまとめは、次のリンク先にあります。
　[デプスセンサのまとめ（2016）](http://qiita.com/fukushima1981/items/77930d3775117d66e5e8)

SlideShare [デプスセンサとその応用](https://www.slideshare.net/FukushimaNorishige/ss-77520495?platform=hootsuite)

ステレオカメラの選択のポイント

- 視野角はどれくらいなのか
- 奥行きの範囲はどこからどこまでか
- 奥行きが遠いときには、それに応じて画素数が必要になる
- フレームレートはどれくらい必要なのか
- 提供されるものにソフトウェアは含まれるのか




付記：
ステレオカメラへの関心が高まってきていることは、雑誌「interface」の裏表紙の広告にステレオカメラの広告が載っていたことにも現れているように思います。実空間で動作するロボットの場合、何らかの空間認識が必要になります。


[デンソー､小型のステレオ画像センサーを開発](https://www.denso.com/jp/ja/news/news-releases/2016/20161227-01/) 
製品サイズ：幅125mm(カメラ幅：80mm)×高さ35mm×奥行き85mm　「高精度なレンズ歪み補正とステレオマッチング技術の組み合わせ」　画素数は？　画角は？
![denso_image](https://www.denso.com/common/compulsory-published/news/global/news-releases/2016/Stereo%20Vision%20Sensor.jpg) 

 私の推測：
　カメラ間距離がEyeSight(初代)に比べて小さくできている理由は、image sensor の画素数の増大と、増大した画素数でもステレオマッチングが可能になっていることが効いているのではないかと推測している。
　また、OpenCVのstereo_SGBMなどのようにsubpixel での視差を求めることができるようになっていること、Circular gridのように、subpixel精度でのカメラ校正(=ステレオ並行化のためのパラメータの決定)ができるようになっていることも効いているのではないかと思う。
　カメラ間距離が小さくなれば、２つのカメラ向きが変わってしまうような湾曲は減る。
　M12マウントのレンズと、それにマッチするimage sensor の組み合わせだろうか。
　取り付けている筐体に四角い角が多いのは、筐体の変形を抑えるためではないかと推測される。

軽自動車の「ルームミラーの裏側に搭載が可能となり」、低価格が期待される軽自動車で、予防安全が普及していくことが、交通事故の削減につながっていくのではないかと期待している。

Youtube[人とくるまのテクノロジー2017名古屋デンソーの超小型ステレオカメラ、実現のカギはレンズにあった 画像](https://www.youtube.com/watch?v=XvudhaF6ynY)


[振動と熱が襲うクルマで、カメラ精度を10年間保つ難しさ](http://trendy.nikkeibp.co.jp/article/pickup/20120831/1042777/?P=4)

>　ステレオカメラの本体ユニットは、角型アルミフレームの両端に左右のCCDカメラを固定した形状だが、長期間使えばどうしてもズレが出てくる。この問題を解決したのが、「システムの自動学習機能で精度を保証する」（松浦氏）というアイデア。カメラの機械的な変形を、信号を処理する制御回路で補正して、10年間使えるシステムを実現した。


![ステレオカメラの本体ユニット](http://trendy.nikkeibp.co.jp/article/pickup/20120831/1042777/thumb_240_13_px240.jpg)
![左右両端のCCDカメラ]
(http://trendy.nikkeibp.co.jp/article/pickup/20120831/1042777/thumb_240_14_px240.jpg)

[高精度なステレオビジョンを手軽に導入、「Stereo Vision IP Suite」を聞く](http://monoist.atmarkit.co.jp/mn/articles/1504/08/news008.html)　富士ソフトの石井友盛氏、日本アルテラの生嶋氏、小山氏、それと實吉准教授

>、最近ではキャリブレーションの重要性が認識されるようになり、需要が増えてきました。実際、0.1pixel程度の誤差範囲を狙うと従来手法では補正・校正が不十分なので、私は格子を利用した方法でこれを行っています。この方法が、今回の日本アルテラのIPに搭載されています。

![「Stereo Vision IP Suite」の評価キット](http://image.itmedia.co.jp/mn/articles/1504/08/hi_fj01.jpg)
「Stereo Vision IP Suite」の評価キット

![「Stereo Vision IP Suite」の評価キット](https://www.fsi-embedded.jp/contents/themes/fsi-embedded/dist/img/product_stereo-vision/sv_evakit.jpg)
----

[差分ステレオとは](http://www.yomiuri.co.jp/adv/chuo/research/20110224.html)
![差分ステレオの処理の流れ](http://www.yomiuri.co.jp/adv/chuo/photo/research/20110224b.gif)
図 差分ステレオの処理の流れ



参考URL
[デプスセンサのまとめ（2016）](http://qiita.com/fukushima1981/items/77930d3775117d66e5e8)




---

USBの帯域
USB Hi-Speed (USB2.0)	480 Mbit/s	60 MB/s
USB SuperSpeed (USB3.0)	5 Gbit/s	625 MB/s
USB SuperSpeed+ (USB3.1)	10 Gbit/s	1250 MB/s

https://ja.wikipedia.org/wiki/%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E5%B8%AF%E5%9F%9F%E5%B9%85%E3%81%AE%E4%B8%80%E8%A6%A7#.E5.91.A8.E8.BE.BA.E6.A9.9F.E5.99.A8.E6.8E.A5.E7.B6.9A.E8.A6.8F.E6.A0.BC

----
私見：
　近距離すぎるときには、ステレオカメラでは、扱いにくい。
　ToFカメラも候補になるだろう。
 ステレオカメラの場合、２つのカメラが一定の基線長で離れている必要があるので、それだけの大きさを組み込みに必要としてしまう。
　そのため、ステレオカメラを組み込んだスマートフォンは考えにくだろう。
　ステレオカメラの場合、テキスチャーに乏しい被写体の場合だと、計算が不安定になりやすい。
　

## 関連記事
[ZED2はステレオカメラ以上のものになろうとしている](https://qiita.com/nonbiri15/items/e3fd6ec51f7c97ddd077)