7

数週間前、単純なブロック マッチング ステレオ アルゴリズムを実装しましたが、結果は良くありませんでした。そこで、より良いアルゴリズムを見つけるためにインターネットを検索しました。そこで、Heiko Hirschmueller が発行したセミ グローバル マッチング (SGM)を見つけました。処理時間に関しては、最高の結果の 1 つが得られます。

ここでわかるように、アルゴリズムを実装したところ、(単純なブロック マッチングと比較して) 非常に良い結果が得られました。

視差とRGB画像

計算された視差値を使用して 2D ポイントを 3D に再投影し、次の結果を得ました。

点群

SGM の最後に、各ピクセルの総コストを含む配列があります。格差は、コスト値が最も低いインデックスに相当します。

問題は、最小値を検索しても離散値しか返されないことです。これにより、ポイント クラウドに個別のレイヤーが作成されます。言い換えると、丸い表面は多くのレイヤーにカットされます (点群を参照)。

Heiko は彼の論文で、多項式関数をコスト配列に当てはめ、最低点を視差として取得することで、サブピクセル精度を簡単に取得できると述べました。

問題はステレオ ビジョンに限定されないため、言い換えると、タスクは次のようになります。

  • given : 多項式関数を表す値の配列。
  • want : 多項式関数の最低点。

これを行う方法がわかりません。画像内のすべてのピクセルに対してこのコードを実行する必要があるため、高速なアルゴリズムが必要です

: 500x500 ピクセルにそれぞれ 60 ~ 200 のコストがかかる => アルゴリズムは 15000000 ~ 50000000 回実行する必要があります!!)。

リアルタイムのソリューションは必要ありません。私の現在の SGM 実装 (L2R と R2L のマッチング、cuda またはマルチスレッドはまだありません) は、500x500 ピクセルの画像を処理するのに約 20 秒かかります;)。

私は図書館を求めません!私は独自の独立したコンピューター ビジョン ライブラリを実装しようとしています :)。

ご協力ありがとうございました!

敬具 アンドレアス

4

1 に答える 1

0

一般多項式の正確な最低点を見つけることは、多項式の導関数の根を見つけることと同じであるため、難しい問題です。特に、多項式の次数が 6 の場合、導関数は 5 次多項式であり、ラジカルによって解けないことが知られています。したがって、次のいずれかを行う必要があります: 導関数の根を計算する制限されたファミリを使用して関数を適合させる。 APPROXIMATE 最小値 (ニュートン法、勾配降下法)。

于 2020-09-14T15:22:10.860 に答える