私は、コンピューター ビジョン (c++ の opencv 2.4) を使用したプロジェクトに取り組んでいます。このプロジェクトでは、特定の機能を検出して、世界のマップ (内部表現) を構築しようとしています。
私が入手できる情報は、カメラの姿勢 (3 つの位置と 3 つの角度の値を持つ 6D ベクトル)、キャリブレーション値 (焦点距離、歪みなど)、追跡対象のオブジェクトで検出された特徴 (この特徴は基本的にオブジェクトの輪郭です) です。しかし、それは実際には問題ではありません)
カメラのポーズ、機能の位置、およびその他の変数はエラーの影響を受けるため、オブジェクトを 3D 確率密度関数としてモデル化したいと考えています (空間上の特定の 3D ポイントで「オブジェクト」を見つける確率で、これは各輪郭には、ノイズ輪郭ではなく実際にオブジェクト輪郭である確率が関連付けられているため、重要です (我慢してください))。
例:オブジェクトが球体の場合、円(輪郭)を検出します。カメラのポーズはわかっていますが、深度情報がないため、そのオブジェクトの内部表現はぼやけた円柱(または、カメラの遠近法が含まれているが関係ない場合は円錐) である必要があります。新しい情報 (別の場所からの新しい画像) が利用可能である場合、新しい輪郭が検出され、それ自体のあいまいな円柱が以前のデータとマージされます。これで、オブジェクトを見つける確率が一部の領域で大きくなり、別の領域で弱くなる領域が必要になります。新しい情報が利用可能になると、モデルは元のオブジェクトの形状に収束するはずです。
アイデアが明確になったことを願っています。
このモデルは、次のことができる必要があります。
- 必要に応じて動的に拡張します。
- 新しい観測が行われると効率的に更新します (内部の確率を更新して、複数回観測された領域を強くし、それ以外の場合は弱くします)。理想的には、システムはリアルタイムで更新できる必要があります。
ここでの質問:この種のあいまいな情報を、これらのタスクを実行できるよう に計算で表現するにはどうすればよいでしょうか?
適切なアルゴリズム、データ構造、C++ ライブラリ、またはツールが役立ちます。