ビデオから3Dメッシュを再構築するなど、かなり長い間(約17年)画像処理に取り組んできました。また、自社でそのような製品を販売しています。 しかし、私は開発に参加することを決定し、特許ブロッキングなしで重要なアイデアをオープンアクセスに入れました
既存の比較的高速なアルゴリズムの一般的な考え方は次のとおりです。
- (特徴検出)各ピクセル内の特別なポイントを、できればサブピクセルの精度で見つけます。
- (機能の説明)次の要件を完全または部分的に満たす各ポイントの機能の特定の配列を作成します。
- 不変性:
- (物理)ノイズ、露出の変化(明るさとコントラスト)、圧縮アーチファクト
- (2Dジオメトリ)回転、シフト、スケーリング
- (3Dジオメトリ)投影歪み
- コンパクト(メモリが少なく、比較が高速)
- 種類(特定の定義済みパターンで選択したポイントの近く):
- グラデーション、明るさ、色の棒グラフ。 (SIFT、SURF ...)
- 不変性:
- 値の読み取りとレベルの正規化(ORB、BRIFF ...)
- 一対の画像の場合、特徴配列間の最小距離(絶対差の合計(L1)または差の二乗の合計(L2))を使用してポイントの対応を見つけます。このステップの漸近的複雑度はO(N ^ 2)です。Nは特異点の数です。
- (オプション): RANSACなどを使用してペアの幾何学的な互換性を確認し、手順3を繰り返します。

提案されている登録スキームは次のとおりです。
各画像について(検出):

- 特徴点を見つける
- 点の値と小さな近傍の平均値の差( DoG )に従って、特異点を2つのグループに分割します。
- 最初のグループの各ポイントについて、約12個の近隣を見つけます。
この段階では、〜N / 2 * 10方向のエッジのバイグラフがあります - 各エッジについて、エッジに沿ってスケーリングおよび回転されたパターンのポイントでサンプリングします
- サンプルを比較してビット(〜26ビット)ハッシュを作成する

登録(バインド)するには:
- ハッシュ値によって適切な画像の端からLUTを構築します
- 左の写真の各エッジについて、LUTで同じハッシュを持つO(1)エッジを探します
- 左端からの2つのポイントのインデックスを右からの2つのポイントのインデックスに追加します
- 適切な写真のすべてのポイントを調べて、投票数を数えます

結果:
シングルコアを使用したi7-6900K上のFullHD向け
画像あたり約10,000ドット
画像ごとに29.0556 msを検出
バインド10.46563ミリ秒/ペア
利点:高速で信頼性が高く、小さな遠近法の歪み(少数の誤って接続されたポイント)、単純なコードは、特許の対象ではありません(私の知る限り)。


実際のソースコード
このスキームに基づいて、空き時間にRaspberry Pi SLAMのブランクを作成しています。