問題タブ [pose-estimation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - キャリブレーション チュートリアルによる OpenCV エラー (solvePnPRansac)
このopencvエラーで何が起こっているのか誰にもわかりますか?
それを発生させる行コードは次のとおりです。
このチュートリアルを順を追って説明しました: http://docs.opencv.org/master/dc/dbb/tutorial_py_calibration.html
それcameraMatrix
は間違っているようですが、なぜですか?
cameraMatrix
このように見え、そうであるように見えます(ここを参照):
チュートリアルから : cameraMatrix – 入力カメラ マトリックス
opencv - オブジェクトを検出し、OpenCV でオブジェクト/カメラのポーズを計算する
3D 空間に 2 台のカメラが離れて配置され、同じシーンを見ていると仮定します。私はopencvを介して次のことを達成しようとしています:(私のアプローチが間違っている場合は修正してください)
- 固定された Camera1 はオブジェクトを見て、solvePnP を介してオブジェクトのポーズを計算します。
- Camera2 の位置はノイズが多いため、回転と移動の両方に関してノイズがあります。同じオブジェクトを見て、フレームごとにポーズを計算します。
- フレームごとに、移動するカメラのポーズを解決し、その情報を使用してカメラを安定させます。
シーン内の一般的な平面オブジェクト (チェッカーボードではない) を検出し、それを姿勢推定に使用することでこれを行うことは可能ですか? ポインタや提案は役に立ちます。
ありがとう、
サイ
geometry - 3D 回転の広がりの平均と測定
似たような質問をいくつか見たことがあり、何を試してみるかについていくつかのアイデアがありますが、スプレッドについては何も見た覚えがありません。
だから:私は、最終的にはコンピュータビジョンベースの測定システムに取り組んでいます。
N 個のキャプチャを取得し、平行移動と回転の 4x4 アフィン変換行列の形式で姿勢推定を出力するライブラリを使用してそれらを処理します。
これらの姿勢推定には多少のノイズがあります。各回転軸のオイラー角の標準偏差は 2.5 度未満であるため、すべての方向が互いにかなり近くなっています (すべてのオイラー角が 0 または 180 に近い場合)。0.25 度未満の標準誤差は、私にとって重要です。しかし、私はすでにオイラー角特有の問題に遭遇しました。
これらの非常に近い姿勢推定値をすべて平均して、単一の最終的な姿勢推定値を取得したいと考えています。また、精度を推定できるように、広がりの尺度を見つけたいと考えています。
ローテーションの「平均」が実際には明確に定義されていないことは承知しています。
(記録として、私のコードは Numpy-heavy Python です。)
一部のキャプチャ (および一部の軸) は他のキャプチャよりも正確であることが知られているため、この平均に重み付けすることもできます。
私の印象では、並進ベクトルの平均と標準偏差を取得できます。また、回転については、クォータニオンに変換して平均を取得し、これらのクォータニオンがかなり接近しているため、OK の精度で再正規化できます。
すべての四元数にわたる最小二乗法についての言及も聞いたことがありますが、これがどのように実装されるかについての私の研究のほとんどは悲惨な失敗でした.
これは実行可能ですか?この文脈で、合理的に明確に定義された拡散の尺度はありますか?
computer-vision - エッセンシャル マトリックス: ピュア ローテーション
点対応からエッセンシャル マトリックスを推定しようとしています。初期値を [rx,ry,rz,tx,ty,tz] に 0 に設定しました。しかし、最初に遭遇する問題は、すべての平行移動ベクトル エントリがゼロの場合、エッセンシャル マトリックスがゼロになることです。純粋な回転を得た場合、Essential Matrix は使用できないというのは正しいですか?
算数:
Hartley,Zisserman: 複数のビュー ジオメトリ p.257
初期値の計算に「正規化された 8 ポイント」のような線形アルゴリズムを使用する必要がありますか?
opencv - 特徴マッチングによる 2 台のカメラ間の実際の翻訳の推定
重なっているシーンを見ている 2 つのキャリブレーションされたカメラがあります。camera1 に対する camera2 のポーズを推定しようとしています (camera2 は移動している可能性がありますが、camera1 と 2 の両方には常に重複する機能がいくつかあるため)。
私は SIFT を使用して機能を識別し、基本行列を計算し、最終的には基本行列を計算しています。R と t (4 つの可能な解の 1 つ) を解くと、スケールアップした平行移動が得られますが、実際の単位で平行移動を計算することは可能でしょうか? シーン内に既知のサイズのオブジェクトはありません。しかし、私は両方のカメラのキャリブレーション データを持っています。Structure from Motion とステレオ ポーズ推定についていくつかの情報を確認しましたが、スケールの概念と現実世界の翻訳との相関関係に戸惑っています。
ありがとう!
python - 基本行列を使用した相対姿勢推定: 間違った R と T
opencv で必須の行列法を使用して、あるカメラポーズの R と t を別のカメラポーズと比較して取得しようとしています。私が従っている手順は次のとおりです。
- SIFT を使用して特徴をマークする
- FLANN マッチングを使用した特徴のマッチング
- 基本行列を計算します。
- 基本行列を計算する
- SVD を実行して U、W、Vt を取得する
- 正規化/均質化されたポイントがカメラの前にあるかどうかに応じて、R と t のどの組み合わせが正しいかを確認します。
簡単なチェックのために、これを画像ペアでテストしましたが、同じ画像を2回使用しました(カメラも画像ポイントも移動していないため)。したがって、平行移動ベクトルはnullで、回転は同一である必要があります. しかし、プログラムの出力は間違っています。
また、このコードを 1 組のカメラで使用し、X 方向に特定の距離だけ移動させました。しかし、この手法を使用して取得したオイラー角と平行移動 (ここでは、1 つではなく 2 つのカメラ行列を考慮しています) はまだ間違っています。平行移動ベクトルは、X と Z の両方で移動したことを示しており、回転マトリックスは正確ではありません。ここで何がうまくいかないのか混乱しています。どんな提案でも非常に役に立ちます。ありがとうございました!
編集:私のコードはここで見ることができます
python - エピポーラ ジオメトリの姿勢推定: エピポーラ ラインは適切に見えますが、姿勢が正しくありません
OpenCV を使用して、SIFT 機能追跡、FLANN マッチング、および基本行列と必須行列のその後の計算を使用して、カメラの 1 つのポーズを別のカメラと比較して推定しようとしています。本質的な行列を分解した後、縮退構成をチェックし、「正しい」R と t を取得します。
問題は、それらが決して正しくないように見えることです。いくつかの画像ペアを含めています。
- Y 軸に沿って 45 度回転し、画像 1 と同じ位置で撮影された画像 2。
結果
- 約から撮影した画像2。負の X 方向に沿って数メートル離れ、負の Y 方向にわずかに変位します。約。Y 軸に沿ったカメラ ポーズの 45 ~ 60 度の回転。
結果
2 番目のケースの並進ベクトルは、Y の動きを過大評価し、X の動きを過小評価しているようです。回転行列をオイラー角に変換すると、両方のケースで間違った結果が得られます。これは、他の多くのデータセットでも発生します。基本的な行列計算手法を RANSAC、LMEDS などの間で切り替えてみましたが、現在は RANSAC と 8 点法でインライアのみを使用して 2 番目の計算を行っています。特徴検出方法を変更しても、どちらも役に立ちません。エピポーラ線は適切なようで、基本行列は x'.Fx = 0 を満たします。
ここで根本的に間違っているものを見逃していますか? プログラムがエピポーラ ジオメトリを適切に理解しているとすると、完全に間違ったポーズになる原因は何でしょうか? ポイントが両方のカメラの前にあることを確認するためのチェックを行っています。どんな考えや提案も非常に役に立ちます。ありがとう!
編集: 間隔をあけて配置された 2 つの異なる校正済みカメラで同じ手法を試しました。必須行列を K2'.F.K1 として計算しましたが、それでも平行移動と回転はまだかなりずれています。
参考コード