TL;DR : 任意の 2D ポイント セットで自由に使用できる RANSAC またはその他の堅牢な対応アルゴリズムの C++ 実装はありますか?
RANSAC (Random Sampling Consensus) などの対応アルゴリズムを含む、または使用する多くの実装が存在することを私は知っています。これらは、コンピュータ ビジョン アプリケーションでよく使用され、OpenCV、PCLなどのライブラリで使用されます。一般的なアルゴリズムはよく知られており、さまざまなサイトでさまざまな手順がリストされています。
現在、私が見つけたすべての「高度な」実装(OpenCV、PCLなどで行われたもの)は、基礎となる一連の仮定を伴う特定の種類の問題用です。OpenCV では、最初の画像と 2 番目の画像の一部の間のホモグラフィ行列を見つけたいとします (この例)。PCL では、3D 点群の領域にあり、(私の知る限り) 特定の既に定義された形状 (線、球など) にのみ一致させることができます。
私が「単純に」したいのは、任意の 2D ポイント セット (ノイズが含まれている可能性があります) を取得し、より大きな 2D ポイント セット (ノイズや他のポイントも含む) で対応を見つけることです。2 組のポイントを入力する以外に、特定のモデル トレーニングを必要としない必要があります。私はC ++で自分で実装していますが、次のとおりです。
私は決して経験豊富なプログラマーではなく、すべてを非常に高速に実行する必要があります。よく知られているアルゴリズム (エッジ検出、ガウスぼかしなど) を自分で行った以前の実装は、実証済みの実装よりも大幅に遅い (> 10x) ことが証明されています。
既存のオープン ソース実装 (OpenCV など) を単純に盗用することは、私の現在の能力を超えていることが証明されています (依存関係や仮想実装テンプレートが多すぎるなど...)。
したがって、自由に使用できる (BSD のような) 実績のある C++ 実装を誰かが知っていれば、私は見逃しています...