0

私はc#用のEMGUOpenCVラッパーを使用しています。視差マップがうまく作成されています。ただし、特定のアプリケーションでは、必要なのはごくわずかなピクセルの視差値だけであり、リアルタイムで必要です。現在、計算には約100ミリ秒かかります。数千ではなく数百のピクセル値の視差を取得することで、かなり高速化されると思います。ステレオソルバーコードの「内部」で何が起こっているのかよくわかりませんが、必要なピクセルの視差を計算するだけで処理を高速化する方法はありますか?

4

1 に答える 1

0

まず第一に、実際に達成しようとしていること、さらには使用しているアルゴリズムについて言及していません。たとえば、StereoGC は、StereoSGBM と StereoBM の両方に比べて非常に遅い (つまり、リアルタイムではありません) が、通常ははるかに正確です)。最後の 2 つは、いくつかの条件が満たされていれば、リアルタイムで使用できます。

  • 入力画像のサイズはかなり小さいです。
  • 贅沢なパラメータ セットを使用していません (たとえば、 の値を大きくするnumberOfDisparitiesと計算時間が長くなります)。

ただし、精度に関しては奇跡を期待しないでください。

それとは別に、「ほんの数ピクセル」の問題があります。私が理解している限り、OpenCV に実装されているアルゴリズムは通常、視差値を決定するために複数のピクセルからの情報に依存しています。たとえば、画像 A のどのピクセルが画像 B のどのピクセルにマッピングされるかを検出するには、近傍が必要です。その結果、一般に、画像のピクセルを 1 つおきに破棄することはできません (ちなみに、位置が既にわかっている場合は、両方の画像で、ステレオ法はまったく必要ありません)。したがって、関心のあるピクセルが見つからないことがわかっている入力画像の大きな境界線を破棄できない限り、質問のこの部分に対する答えは「いいえ」です。

関心のあるピクセルが常に入力画像の特定の四角形内にあることがわかっている場合は、入力画像の ROI (関心領域) をこの四角形に指定できます。ここでOpenCVにバグが含まれていないと仮定すると、これにより計算が少し高速化されるはずです。

少しグーグルで検索すると、YouTube で GPU を使用して EmguCV (またはプレーンな OpenCV) を使用してステレオ対応を見つけるリアルタイムの例を見つけることができます。多分これはあなたを助けることができます。

免責事項:質問に詳細が含まれていれば、これはより完全な回答であった可能性があります。

于 2012-03-19T17:51:12.517 に答える