ステレオビジョンシステム用のカメラの選択方法


18

私は、UGVで使用するステレオビジョンシステムを構築中です。このシステムは、大きな屋外フィールドで比較的小さな色の岩を見つけるために遠隔操作される競技で使用されるロボット用です。このようなシステムを調整し、ステレオビジョンシステムのデータを処理する方法を理解しています。しかし、そのようなシステムにカメラを選択する方法は知りません。ステレオビジョンシステム用のカメラを選ぶためのベストプラクティスは何ですか?

回答:


11

私の頭の上から、私は次の選択基準で行きます

  • color / b&w-通常、ステレオアルゴリズムは1つのチャネルのみを使用するため、b&wの方が優れています
  • ベースライン-これは本当にシーンに依存します。ベースラインを使用すると、距離によってどれだけの精度が得られるかを制御できます。ベースラインが広いと、視差値が高くなり、距離推定のノイズが少なくなります。ベースラインが高いということは、視野の重なりが少なくなることも意味します。最も重要なことですが、ベースラインが広いほど、2つのビュー間のマッチングが難しくなります。そのため、結果の品質は低下します。
  • シャッター-移動ロボットのコンピュータービジョンを備えたものには常にグローバルシャッターを使用する
  • 解像度-ほとんどのステレオアルゴリズムは計算コストが高くなります。そして、多くの3Dポイントは必要ないでしょう。近距離音場では通常、サンプリング密度で十分です。遠距離音場では、低視差からの誤差はサンプリング密度よりも問題になります。ほとんどの場合、640x480で十分です。一部のチップはより広いアスペクト比を持ち、オーバーラップには適していますが、チップのサブウィンドウを使用しても同じことができます。
  • 目標/視野-モバイル屋外ロボットの場合、狭い目標よりも広い視野を好みます。解像度と同じ理由で多かれ少なかれ。対物レンズが固定されており、焦点距離の調整など、可動部品を固定する手段があることを確認してください。ほとんどの場合、ベースラインの選択によって制限されるため、固定焦点距離はとにかく問題ありません。
  • トリガー-独自のステレオリグを作成する場合、カメラはハードウェアトリガーをサポートし、理想的には一方が他方をトリガーする必要があります。
  • フレームレート-私の意見では、最も重要でない考慮事項。あなたが多くの処理能力を持っていない限り、とにかく5 Hzのようなものよりもはるかに多くを得ることはありません。そのため、アルゴリズムは、チップや接続ではなく、ボトルネックになる可能性がはるかに高くなります。
  • インターフェイス-ほとんどのカメラにはFirewire / USB2 / USB3 / Ethernetが付属しています。USB2は大量のCPUを消費するため、役に立ちません。Firewireはポートがあれば良いのですが、最近ではUSB3を好む傾向にあるようです。USB3の経験はまだありませんでした。現時点では、USB3よりもGigEthernetを使用した組み込みシステムを見つける可能性が高いため、イーサネットは非常に優れています。
  • ハウジング-可能な限り剛性。再調整は煩わしい手順です。

6

まず、必要な1秒あたりのフレーム数と、そのフレームレートで処理できるカメラの解像度を計算することから始めます。それ以外の場合、それはあなたがあなたのニーズに合わないカメラを使いすぎたり、購入するのを防ぎます。

それ以外にも、選択をより困難/興味深いものにするさまざまな機能があります。異なるカメラ(特にAxisのようなネットワークカメラ)を使用すると、画像品質を変更したり、画像ストリームの最大ビットレートを指定したりできます。一部のカメラでは、シャッタースピードを選択できるため、画像の露出時間を一定にしたり、平均照明を一定にしたりできます。一部のカメラは他のカメラよりも感度が高くなります(これで最後に作業したのは2009年であり、PS3 Eyeは低光量の条件下で非常にうまく機能することに気付きました)。

おそらく最善の方法は、DSLRで撮影したいくつかの静止画像で画像処理アルゴリズムを実行し、フレームサイズと品質を下げて、どこから問題が始まるかを確認することです。


6

次のことに注意する必要があります。

  • グローバルシャッターとは、基本的に、すべてのピクセルが同時にキャプチャされることを意味します。ローリングシャッターは、ラインスキャン方式で連続してキャプチャされます。UGVは動き回って、キャプチャした画像上でステレオアルゴリズムを実行するため、下の写真(ウィキペディアから取得)で見られるようなカメラの移動時に発生する収差を回避することが重要です。

CMOSカメラ付き携帯電話で撮影した移動中の車にスキューが見られる 部分的な露出を示す写真。 照明条件は、写真の上部と下部の露光の間で変化しました。 ターボプロッププロペラのショット

  • ハードウェアでのカメラの同期は、一部のカメラ、特にファイヤーワイヤーカメラで実現できます。これにより、物事が動き回っているときのステレオの結果が大幅に改善されます。

  • 取り付けは、ステレオペアの外部パラメーター(カメラ間の相対的なポーズ)の変更がキャリブレーション後に変更されないように行う必要があります。UGVは屋外の不整地に直面し、物事が振動するため、リグではより重要です。

  • 専用のステレオハードウェアにより、視差画像をステレオビジョンシステムの出力として直接取得できるため、組み込みコンピューティングの負荷が軽減されます。また、ソフトウェアでまったく同じアルゴリズムを実行するよりもはるかに高速になる傾向があります。

いつものように、あなたが喜んで支払うほど、より良い結果が得られます。正直に言うと、Bumblebee2のような本格的なステレオカメラを購入できるなら、それが私がしたいことです。そうでなければ、もしあなたが安い側にいるなら、私は単にKinectを使うだろう。同じ価格でそれよりも優れたシステムを手に入れることができるとは思えない。


質問は屋外システムに対するものでした。これはKinectを事実上除外します。また、バンブルビーに付属するアルゴリズムは最適とはほど遠い、と私たちは発見しました。
ヤコブ

Kinectのコメントであなたと一緒にいますが、Bumblebeeに付属のステレオアルゴリズムを独自のコードで置き換えることはできませんか?私が指摘していた最大の利点は、バンドルされているソフトウェアではなく、実際のハードウェアにありました。
ジョージブリンデイロ

はい、それは本当です。通常の2台のカメラと同じように使用でき、剛性の高いハウジングという利点があります。
ヤコブ

それだけでなく、グローバルシャッター、良いレンズ、その他のグッズ
ジョージブリンデイロ

4

これは興味深いトピックであり、最初の試行で正しく理解するのはそれほど簡単ではありません。これに関する経験から、最も重要なことは次のとおりです。

  • 同期。カメラは100%同期されている必要があります。たとえば、UGVが控えめな36Km / hr(10m / s)で走行しており、30フレーム/秒でフレームを記録しているとします。つまり、UGVはすべてのフレームで3mをカバーします。ここで、同期が1ミリ秒ずれているとしましょう。カメラの1つは0.3ミリほどずれていますが、これは悪いことです(頭のてっぺんから外れています)。同期の問題を検出するのは非常に困難です。

  • δZ=Z2BfδdδZBfδZδdδd1/2δd

  • 重複します。ステレオを取得するには、カメラをオーバーラップさせる必要があります。したがって、アプリケーションに十分なオーバーラップが得られるように、レンズの焦点距離(視野)とベースラインの組み合わせを選択する必要があります。基本的に、三角法はボード上で動作するか、簡単なmatlab / pythonスクリプトです。

UGVの場合、ステレオには2つの用途があります。

  1. ナビゲーションとポーズの推定この場合、おそらく大きなベースラインと長い焦点距離が必要です。これにより、ステレオは深度をより良く、より長い範囲で確認および解決できます。

  2. 障害物の検出と回避おそらく、より近いものに焦点を合わせることができるように、より短いベースラインとより広いレンズ(より短い焦点距離)が必要になるでしょう。

いくつかのUGVには、ナビゲーション用の大きなベースラインの狭い視野と障害物回避用の別の1つまたは2つのステレオ設定の両方がある場合があります。

あなたが買うものに非常に注意してください。一部の企業は、既に構築されたステレオセットアップを提供しています。これらは物事の堅牢性の面で素晴らしいです、彼らは簡単にキャリブレーションを失うことはなく、常に同期しています。問題は、市販のもののベースラインが小さいことです。独自に構築したい場合。私はあなたがそうすることになると思います、カメラが同期可能であることを確認してください。Firewireはこれに最適です。同じバス上の2台のカメラは、そのままで125マイクロ秒の精度で同期します。USBとGigeのカムは同期するのが大変です。すべてをまとめるとき、レンズがまったく動かないようにし、ベースラインが硬く、アプリケーションにとって非常に硬いことを確認する必要があります。

レンズの選択にも注意してください。すべてのレンズがすべてのカメラで動作するわけではありません。レンズにも解像度があります。これは別のトピックです。これは、http://www.qualitymag.com/articles/90642-qa--selecting-lenses-for-machine-vision-systemsの短い記事です


4
同期計算が間違っています。10 m / sで30 FPSの場合、フレームあたりの距離は33 cm(3 mではない)です。また、この速度での1ミリ秒は、(FPSに関係なく)1 cmの距離を意味します。そのため、msレベルでの同期は、実際にそのような速度では非常に優れた結果です。
コズチ14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.