SVOアルゴリズム学習の概要

序章

SVO: 高速半直接単眼視覚走行距離計
SVO: 半直接単眼視覚走行距離計

SVO: 単眼およびマルチカメラ システム用のセミダイレクト ビジュアル オドメトリ
SVO: 単眼およびマルチカメラ システム用のセミダイレクト ビジュアル オドメトリ

SVO アルゴリズムは元々、UAV の応用に基づいて提案された半直接視覚オドメトリでした。

1. アルゴリズムプロセスの概要

アルゴリズムは主にトラッキングとマッピングの 2 つの並列スレッドに分かれており、
トラッキング スレッドは主にフレーム間マッチング、3D 空間点投影マッチング、BA 最適化を含む 3 つのステップに分かれています。まず、最小測光に従ってカメラのポーズを最適化します。次に、特徴点ピクセル ブロックの位置を個別に最適化し、最後に新しい位置と初期ポーズに従って現在のフレームのポーズに対して BA 最適化を実行します。

  • フレーム間マッチングとは、前フレームを参照フレーム、前フレームのポーズを初期ポーズとして使用し、オプティカルフロートラッキングにより現フレームの特徴点の位置を取得し、前フレームの特徴を取得することができます。参照フレームの 3D 点を再投影することにより、現在のフレーム内の点の投影座標、現在のフレームの初期姿勢は、参照フレーム内のすべての特徴点のピクセル ブロック (4x4) の最小測光誤差を最適化することで取得できます。画像。
  • フレーム間の初期姿勢マッチングが得られた後、現在のフレームの特徴のピクセル座標がさらに調整されます。コモンビューキーフレーム内の対応するマップ点を現フレーム画像に投影し、参照キーフレームの特徴点画素ブロックと現フレームの特徴点画素ブロックとの間の測光誤差を最小限に抑えることで、正確な座標が得られる。現在のフレーム内の特徴点の位置を取得できます。
  • 次に、マッチング点の座標が固定され、現在のフレーム上のマップ点の再投影残差を最小化することによって現在のフレームの姿勢が取得されます。

マッピング スレッドは主に、キー フレームの深度フィルターの作成と維持を担当します。画像のフレームが追跡されるたびに、現時点でのいくつかのマップ ポイントが選択され、前の参照フレームとそのフレーム間のマップ ポイントの視差が計算されます。視差またはマップ ポイントが前の基準キーフレームからの距離があるしきい値より大きい場合、現在のフレームがキーフレームとして設定されます。

SVO はキーフレームの特徴点のみを抽出し、その特徴点を深度フィルタのシード点として初期化し、限界探索と画像ブロックマッチングの原理に基づいてシード点に対応する深度を推定します。複数回の観測でシード点の位置が異なる 確信度が一定の閾値未満の場合は収束しているとみなし、候補点と判断 10回観測に成功すると良好なマップ点とみなされる
ここに画像の説明を挿入

2. 画像の位置合わせ/フレーム間マッチング

  1. メインプロセス
    (1) は、前のフレーム (K-1) に表示されたマップ ポイント p1、p2、p3 を見つけます。
    (2) 現在のフレームに再投影します (k) 2 次元画像を取得し、2D ピクセル座標を取得します。 (
    3) 次に、グレースケール誤差関数を最小化します (オプティカル フローによって追跡されるピクセル ブロックと再投影によって得られるピクセル ブロックの間で最適化されたグレー レベル)差分) を取得してポーズを取得します。
    このプロセスは主に、一致する点の座標を固定し、フレーム間の動きを最適化することです。
    ここに画像の説明を挿入

反復最適化にガウス・ニュートン法を使用する場合、現在のフレーム内の参照フレームの投影位置が最適化ごとに選択されるため、導出時に毎回同じ位置で展開でき、ヤコビ行列は次のようになります。修正されました。

SVO では、隣接するフレーム画像間の動きが小さいとみなされるため、測光誤差を計算する際に、特徴点の周囲の 4x4 ピクセル ブロックが取得されます。

3. 特徴点の位置合わせ

このプロセスは、現在のフレーム内の特徴点の座標をさらに補正するものです。以前に取得したポーズは、オプティカル フロー トラッキングを通じて取得されます。ここに、固定され最適化された 3D ポイントがあります。キー フレーム内の 3D ポイントを最小化することで、対応するピクセル ブロックと現在のフレーム内の対応するピクセル ブロックにより、現在のフレーム内の特徴点の位置がさらに調整されます。
ここに画像の説明を挿入

3.1 コモンビューキーフレームとローカルマップポイントの選択

ここでの SVO は、コモンビュー キー フレームの選択に 5 点法を使用しています。つまり、キー フレームの四隅と中央の特徴点を選択します。これら 5 つの特徴点のいずれかが現在のフレームに投影できれば、 、最初は、キー フレームが現在のフレームと同時表示されていると見なされます。

次に、キー フレームの距離が近い順に、これらのキー フレーム上の特徴点に対応するマップ点が現在のフレームに順番に投影され、同じマップ点は 1 回だけ投影されます。現在のフレーム上のマップ ポイントの投影位置が 8x8 タイルを取得できる場合は、マップ ポイントを現在のフレームの投影位置のグリッドに格納します。

次に、すべての候補マップ点を現在のフレームに投影し、現在のフレーム上の投影位置で 8x8 タイルが取得できた場合は、候補マップ点を現在のフレームの投影位置のグリッドに格納します。

3.2 マップポイントとキーフレームの対応

マップ ポイントを見つけたら、マップ ポイントの 2D 特徴に対応するピクセル ブロックを見つけます。各マップ ポイントは複数のキー フレームによって観察されます。マップ ポイントの光学中心とキー フレームを接続して、方向ベクトル 現在のフレームの方向ベクトル 夾角が最小のキーフレームを選択し、キーフレーム上の 3D 点に対応する画素ブロックを選択して特徴点位置合わせを行います。

3.3 逆オプティカルフロー法による測光誤差の最小化

バックライトフロー法で採用される戦略は、毎回参照画像の同じ位置に拡大することで、導出などの繰り返し操作を回避します。各最適化の後、基準フレーム上で特徴点 u1 の調整された特徴点座標 u1' が取得され、現在のフレームに対応する特徴点 u2 が同じ量だけ移動され、u2 の真の値は次のようになります。反復ごとに上記のプロセスを通じて継続的にアプローチします。

4. ポーズの最適化

正確な一致座標を取得した後、現在のフレームの特徴点の座標が固定され、現在のフレームのカメラの姿勢が最適化されますが、これは依然として 3D 再投影測光誤差であり、最終的に正確な姿勢を取得できます。得られた。
残差関数は次のとおりです。
ここに画像の説明を挿入
ここに画像の説明を挿入

新しい姿勢が取得された後、マップ ポイントがさらに最適化されます。つまり、3D マップ ポイントに対応する再投影誤差が計算されます。

5. マップ点の抽出

SVO は、画像がキー フレームの場合にキー ポイントのみを抽出し、エピポーラ検索とブロック マッチングを通じて現在のフレーム内の基準キー フレームに一致する特徴点の座標を見つけます。次に、深度フィルターに基づいて 3D ポイントの深度情報を復元し、新しく作成した 3D ポイントをシード ポイントとして使用します (シードは、深度が収束していないピクセル ポイントです)。

6. 深度フィルターに基づいてシードを更新します。

特徴点の深度測定を行う場合、一度算出される深度にはある程度の誤差が生じるため、同じ特徴点の深度については複数回の測定を行ってより誤差の少ない深度値を復元する必要がある。SVO は、ピクセル ポイントの深度情報がガウス分布に従うと仮定し、対応する特徴点の深度が画像のフレームごとに計算され、シード ポイントの深度情報が深度の不確実性がなくなるまで新しい測定値で継続的に更新されます。シード点が収束します。

シードの場合、各深度フィルタリング (新しいフレームを使用してシードの深度値を更新する、深度フュージョンとも呼ばれる) は次のプロセスを経る必要があります。

ここに画像の説明を挿入

7. バックライトフロー方式に関する議論

一般に、逆オプティカル フロー法の利点は、主にガウス ニュートン解法プロセス中のヤコビアン行列とヘシアン行列の計算に反映されます。反復プロセスにおける従来のガウス ニュートンの場合、ターゲット内の独立変数 x の位置画像は常にテイラー展開を実行します。各展開ポイントが異なるため、ヤコビアン行列やヘッセ行列などを計算するために各反復を再計算する必要があります。バックライトフロー法で採用される戦略は、毎回参照画像の同じ位置に拡大することで、導出などの繰り返し操作を回避します。

7.1 オプティカルフロー法の最小二乗問題

オプティカル フロー メソッドは、測光不変性 (同じ空間点にある各画像上の結像点のグレー値が同じ)、つまり次の式の仮定に基づいて実装されます。
ここに画像の説明を挿入

この式の物理的意味は、基準画像 T 内の点 x が座標変換 p を受けて x' を取得し、現在のフレーム I 画像の x' 座標におけるピクセル グレースケールが、その座標におけるピクセル グレースケール値と同じであるということです。画像Tの×です。

この式では、T(x) は参考图象中点 x のピクセル グレー値を表します。W は x と p に関する関数を表し、W(x;p) は変換後の点 x の座標を表します (変換は純粋な変換またはアフィン変換の場合があります)。p は、関連する変換を構築するために使用されるパラメーターのベクトルです。I(.) は、当前图像内の特定の点のピクセル グレー値を表します。最後に、p の値を調整することで上記の式が確立されます。

式 (1) は 1 点のみに関するものですが、実際には p 上の複数の点の解の制約が考慮されます。したがって、一般的なオプティカル フロー手法では次の式を解きます。
ここに画像の説明を挿入

これは、式(2)のpの最小二乗解を求める処理であり、反復法(ガウス・ニュートン法など)で解くことができます。式 (2) の場合、p と W(.) の更新式は次のとおりです (これらの更新式は理解するのが難しくありません。p と W(.) を単純に重ね合わせたものです)。
ここに画像の説明を挿入

反復解法では必然的に元の式を導出する必要があります。まず、式 (2) の I(W(x;p+△p)) における 1 次テイラー展開を求めます。
ここに画像の説明を挿入

式中の I(W) は、I 画像の W(x;p) ピクセル座標点におけるピクセル勾配であり、現在のピクセル座標、つまり p に関連します。同時に、p に関する W のヤコビ行列も、p の現在の値に関係します。したがって、上記の方法では、最適化を繰り返すたびに新しい導関数を見つける必要があります。その後、ヘッセ行列を構築することによって△p 増分が得られ、反復解法操作が完了します。一般的な手順は次のとおりです。

ここに画像の説明を挿入

簡単にまとめます:上記で損失関数を構築した後、それはガウス ニュートン法に基づいて最小二乗法を解くプロセスであることがわかります。基準フレームでの x の座標に基づいて、p を反復変換して次の値を求めます。現在のフレーム内の新しい一致。点 x' は、この連続反復プロセスで現在のフレームの新しい点 x' で更新されます。各更新では、対応するヤコビ行列とヘッセ行列を計算する必要があります。このプロセスでは、多くのコンピューティング リソースが無駄になります。この現象に対して逆オプティカルフロー法が提案されている。

7.2 逆オプティカルフロー法における最小二乗問題

逆オプティカル フロー手法もグレーの不変性の仮定に基づいて実装されていますが、異なる反復最適化問題を解決します。その解決策の目標は次の式です。
ここに画像の説明を挿入

式(2)と比較すると、式(6)の画像Tと画像Iの位置が変わっている。△p のオブジェクトは画像 I から画像 T に変わりました (これが、このアルゴリズムがリバース オプティカル フローと呼ばれる理由です)。この時点で、W(.) の更新式は次のようになります。
ここに画像の説明を挿入

式(7)についての私の理解を話しましょう。まず、2 つの画像 T と I で照合されている 2 つの点のペアをマークし、それぞれ Pt と Pi として記録します。現在推定されている 2 つの画像のアフィン変換は W(x;p) であるため、次の図を使用して現在の状況を表すことができます。

ここに画像の説明を挿入

このとき、画像 T 内で微調整、つまり Pt に対して W(x;△p) 演算を実行し、変換された点を Pt' として記録します。このときの状況は下図のとおりです。

ここに画像の説明を挿入

この△p の更新後、Pt' と Pi の間の階調誤差が最も小さくなったと仮定し、Pt' が Pi に対応するマッチング点であると考えることができます。さて、久しぶりにPt'のマッチングポイントを見つけました。しかし、それは問題ではありません。少なくとも、Pi が Pt のマッチング ポイントにならないことがわかっています。したがって、画像I内での探索を継続する、すなわち、Piの位置を移動させて新しい点Pi'を取得する必要がある。どうやって移動させるのですか?このように考えると、Pt'は△p変換で得られるので、Piに対しては△pと逆方向の変換を利用します(ここから、逆オプティカルフロー法の制限によりW(が必要であることがわかります)。 ;△p)リバーシブル!)Ptに応じたポイントを獲得することが可能です。このステップは式 (9) によって実現され、その状況は次の図に示されます。

ここに画像の説明を挿入

では、そのようなアプローチにはどのような利点があるのでしょうか? まず、式 (8) に対して 1 次テイラー展開を実行します。この展開から、この方法の利点がわかります。
ここに画像の説明を挿入

式中の▽T は W(x;0) 点でのピクセルの勾配を表し、固定量です。p に関する W のヤコビアン行列は (x;0) で得られます (これは、p がヤコビアンの計算に影響を与えないことを意味します)、これも固定量です。その後、ヘッセ行列を構築することによって△p 増分が得られ、反復解法操作が完了します。一般的な手順は次のとおりです。
ここに画像の説明を挿入

この図から、一部の量は反復プロセス全体で固定されるため、その値はアルゴリズムの開始時に計算でき、反復プロセス中は更新せずに常に使用できることがわかります。この固定量がアルゴリズム全体の計算量を削減する鍵となります。

8.デプスフィルタースペシャル

8.1 エピポーラ探索とブロックマッチング

下図は限界探索の概念図です。
ここに画像の説明を挿入

1. エピポーラ線は、
既知の基準フレームの特定の特徴点 p1 を検索します (左図)。カメラ幾何学原理によれば、p1 に対応する 3D 空間点は、光学中心 O1 と p1 を結ぶ光線上のどこかにあります。 3D ポイントの深度。範囲は (d_min, +∞) です。

同様に、3D点は隣接する現フレーム画像上にも投影点p2を有しており、p2は3D点と現フレームの光学中心O2を結ぶ線の交点でもある。3D 点の位置は不明であるため、現在のフレーム上の (d_min, +∞) 範囲内のすべての 3D 点の可能な位置の投影はエピポーラ ライン l2 を形成します。p2 はこのエピポーラ ライン上にある必要があることがわかります。現在のフレーム内の p1 の一致点 p2 は、エピポーラ ラインに沿って検索することで見つけることができます。この処理が限界探索である。

2. ブロックマッチング
直接法の考え方により、エピポーラライン l2 上の各画素点の濃淡値を p1 と比較し、濃淡値の差が小さいほどマッチング点の可能性が高くなります。ただし、エピポーラ線上に p1 に類似した点が多数ある場合、個々の画素間の差分を比較する際に大きな不一致が発生する可能性があるため、ブロックマッチングの概念を導入します。すなわち、識別度を高めるために特徴点の近傍の画素ブロック間の差分を比較し、対応するマッチング点p2を求める。

3. ブロック マッチング法
ここで、ピクセル ブロックのサイズを と仮定して、p1 の周囲の小さなピクセル ブロックを取得しw×w、エピポーラ ライン上にも多数の小さなブロックを取得します。A ∈ Rw×wp1 の周りの小さなブロックを Bi として記録し、エピポーラ線上の n 個の小さなブロックを Bi (i=1,...,n) として記録することをお勧めします。

(1) SAD (絶対差の合計)。名前が示すように、2 つの小さなブロック間の差の絶対値の合計が取られます。
ここに画像の説明を挿入

(2) SSD (Sum of Squared Distance)。2 つのピクセル ブロックのグレー値の差の二乗の合計です。
ここに画像の説明を挿入

(3)NCC(正規化相互相関)(正規化相互相関)。この方法で、2 つの小さなブロックの相関関係が計算されます。
分子は行列 A と行列 B の対応する要素の乗算の合計、分母は行列 A の要素の二乗和と要素の二乗和の平方根です。 B マトリックスの。
ここに画像の説明を挿入

同時に、平均値演算を実行することができ、平均値演算はAB行列に対してそれぞれ実行され、その後、上記の方法を使用して隣接するフレーム間の明暗の変化に対処します。

8.2. ガウス深度フィルター

ここで、A とエピポーラ ライン上の各 Bi の間の類似度を計算します。説明の便宜上、NCC を使用すると仮定すると、エピポーラ ラインに沿った NCC 分布が得られます。この分布の形状は、画像自体がどのように見えるかに大きく依存します。探索距離が長い場合、通常は非凸関数が得られます。この分布には多くのピークがありますが、実際の対応点は 1 つだけである必要があります。この場合、深度を表す単一の値ではなく、確率分布を使用して深度値を表す傾向があります。そこで、私たちの質問は、さまざまな画像に対してエピポーラ検索を実行し続けると、推定された深度分布がどのように変化するかということになります。これがいわゆる深度フィルターです。
ここに画像の説明を挿入

1. ガウス分布に基づく深度フィルターの中心的な考え方
は、特徴点の深度値と観測された深度値(複数のフレームの三角測量によって得られる)がガウス確率分布の影響を受けると仮定することです。特徴点の深さは深さの観測により継続的に更新され、その値の確率分布において、深さの不確実性が閾値未満の場合は収束しているとみなされ、このときの深さの値は特徴点の深さ。ただし、奥行き推定には 2 つのフレーム間の平行移動が使用され、単眼マッチングによって計算される平行移動には実際のスケール情報がないため、このとき推定される奥行きもスケールフリーとなります。
[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-mfvQjyUW-1678784847423)(./pic/ Depth-filter/uncertain.png)]

主なプロセス:

  1. すべてのピクセルの深さが初期ガウス分布を満たすと仮定します。
  2. 新しいデータが生成されると、投影点の位置はエピポーラ探索とブロック マッチングによって決定されます。
  3. 幾何学的関係に従って三角測量後の深さと不確実性を計算します。
  4. 現在の観測値を以前の推定値に融合します。収束した場合は計算を停止し、そうでない場合は 2 を返します。

特徴点の深さは、平均 μ と分散 σ のガウス分布に従うと仮定します。P(d) ~ N(μ,σ^2)

新しいデータが到着すると(新しいマッチングが生成されると)、観測値も確率分布に従うと仮定して、幾何学的原理に従って観測値を取得できます。P(d_obs) ~ N(μ_obs,σ_obs^2)

次に、現在の観測情報を使用して、特徴点の以前の確率分布を更新することができ、ガウス分布の特性に従って、次の更新を実行できます。
ここに画像の説明を挿入

融合分布不確かさがある閾値に収束したとき、そのときの推定値が対応する特徴点の深さであるとみなされる。

2. He Jiajia による深度フィルターの説明
最も基本的な深度推定は三角形分割であり、これは多視点幾何学の基本的な内容です。この点の奥行き値は、2 フレームの画像の点を一致させることで計算できることがわかっており、画像が複数ある場合は、この点の複数の奥行き値を計算できます。これは、同じ状態変数に対して複数の測定を行ったようなものであるため、ベイジアン推定を使用して複数の測定値を融合し、推定の不確実性を減らすことができます。以下に示すように:
ここに画像の説明を挿入

最初は深度推定の不確実性が大きい(薄緑色の部分)が、三角測量によって深度推定を取得した後、この不確実性は大幅に低減できます(濃い緑色の部分)。

8.3 SVO での深度フィルターの使用

次のコンテンツは、https: //zhuanlan.zhihu.com/p/85190014から参照されています。

ここではまず、svo における三角形分割の深度計算のプロセス、主に対応点を決定するエピポーラ探索のプロセスを簡単に紹介します。参照フレーム Ir では、深度値が [d_min,d_max] の間にあると仮定して、特徴の画像位置がわかります。その後、これら 2 つのエンドポイントの深度値に従って、現在のフレーム Ik での位置を計算できます。 、上の図の草緑色の円内の線分です。

特徴が現れるエピポーラセグメントの位置を決定した後、特徴の検索とマッチングを実行できます。エピポーラ セグメントが 2 ピクセル未満と非常に短い場合は、ポーズの計算時に前述のフィーチャ アライメント オプティカル フロー メソッドを直接使用すると、フィーチャの位置をより正確に予測できます。

エピポーラ線分が非常に長い場合は、エピポーラ線分上で間隔をあけてサンプリングし、サンプリングした特徴ブロックを参照フレーム内の特徴ブロックと一つずつ照合し、各サンプリング特徴ブロック スコアのゼロ平均二乗差分和法。最も高いスコアを持つものは、それが参照フレーム内の特徴ブロックに最もよく一致することを示します。2 番目のステップでは、最も高いスコア点の近くで特徴位置合わせを使用して、サブピクセル精度で特徴点の位置を取得します。ピクセル位置が決定されると、三角測量によって深さを計算できます。

最後に、新しい深度推定値を取得した後、ベイジアン確率モデルを使用して深度値を更新できます。

奥行き推定のプロセスでは、奥行き値の計算に加えて、この奥行き値の不確実性も計算する必要があります。これは、エピポーラ内のエピポーラ線の開始位置や長さの決定など、多くの場所で使用されます。ベイジアン確率を使用するなどのライン探索は、深度ポイントが収束したかどうかの判断、収束する場合はマップするなど。

8.4 深さの逆数

エピポーラ線を探索する場合、複数の極値が存在する場合があるため、真の深さ値を決定するために、深さの確率分布を使用して深さ値を記述します。

(1) 逆深度誤差は、現実世界のより遠い深度ポイントによって引き起こされる誤差を減らすことができます。たとえば、100 m と 50 m の異なる深度ポイントでは、画像内では数ピクセルの距離として表示される場合があります。深度誤差を使用すると、その差は 50 になりますが、逆深度誤差は 1/50-1/ にすぎません。 100=0.01
(2) 逆深度を使用する場合、座標を正規化することで逆深度係数と特徴量の均一な表現が得られ、最適化変数が削減されます (3) 逆深度の表現は、次のように表現できます
。より遠い点を示し、ガウス分布に近づきます。

おすすめ

転載: blog.csdn.net/guanjing_dream/article/details/129533570