問題タブ [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.

0 投票する
2 に答える
1788 参照

c++ - イメージ ポイント (ピクセル) から実世界の座標 (メートル)

天井に魚眼カメラがあり、床のいくつかの点を特定したいと考えています。カメラのすぐ下に参照システム (実世界) の原点を配置しました。すべてのオブジェクトの位置をセンチメートル単位で知りたいと考えています。この図は次のことを示しています。

参照系 - 実世界

まず、カメラのキャリブレーションを実行し、RMS が 1.11 の次の結果を取得しました。

キャリブレーション後の歪みのない画像

キャリブレーションの結果、内部パラメーター (カメラ マトリックス) を取得したので、cv::solvePnP を使用して回転ベクトルと並進ベクトルを取得しました。これを適用するために、歪みのない画像内のいくつかのポイント (ピクセル単位) をマークし、参照システムに従って実世界でそれらを測定しました。

たとえば、原点は 1024x768 画像の中心にあるため、次のようになります。

  • ポイント 0: ImagePoint(512, 384) [ピクセル] --> ObjectPoint(0,0) [センチメートル]

次のコードはこれを示しています。

これで、カメラ行列、回転行列、および移動ベクトルが得られたので、これを参照として使用することで、位置がピクセル単位であれば任意の点を計算できます。これはコードです:

パラメータを取得するために使用したのと同じポイントで、次の結果が得られます。

  • ポイント 0 --> (0.213, 3.391) ((0,0) のはずです) ERROR : 3.69 cm
  • ポイント 1 --> (-68.28, -112.82) ((-80, -132) のはずです) ERROR : 17.49 cm
  • ポイント 2 --> (84.48, 137.61) ((120, 188) のはずです) ERROR : 49.62 cm

残りのポイントもエラーが大きすぎることを示しています...さらに多くのポイントを使用しましたが、結果は改善されません。どこで間違えたのかわからない、誰か助けてくれる?

前もって感謝します。

0 投票する
0 に答える
662 参照

python - OpenCV ポーズ推定と projectPoints

ここのチュートリアルに似たようなことをしています: http://docs.opencv.org/3.1.0/d7/d53/t ... ポーズ推定に関して。基本的に、モデル座標系で軸を作成し、ProjectPoints を rvecs、tvecs、cameraMatrix と共に使用して、軸をイメージ プレーンに投影します。

私の場合、ワールド座標空間で作業しており、オブジェクトのポーズを伝える rvec と tvec があります。ワールド座標ポイントを使用して軸を作成し (オブジェクトがまったく回転または平行移動されていないと仮定します)、次に projectPoints() を使用して、イメージ プレーン内のオブジェクトの軸を描画します。

投影をなくして、それらの軸を回転および移動させた後、それらの軸の世界座標を取得できるかどうか疑問に思っていました。テストするために、軸ポイントの回転と平行移動を手動で行ってから、projectPoints を使用してそれらをイメージ プレーンに投影しました (それぞれ、回転と平行移動に単位行列とゼロ行列を渡します)。軸が回転して変換されたら、軸の世界座標を取得するために投影ステップを削除するにはどうすればよいですか? ありがとう!

0 投票する
2 に答える
1295 参照

opencv - opencv の solvePnP では、objectPoints に何を渡す必要がありますか?

solvePnp の OpenCV ドキュメント

拡張現実アプリでは、シーン内の画像を検出するので imagePoints を知っていますが、探しているオブジェクト (objectPoints) は、シーン内で検索するためにメモリに格納されている仮想マーカーであるため、わかりません宇宙のどこにあるか。
私が読んでいる本 (Mastering OpenCV with Practical Computer Vision Projects ) は、マーカーが 1x1 マトリックスであるかのようにそれを渡し、どのようにうまく機能しますか?
SolvePnP はオブジェクトのサイズとそのプロジェクションを知る必要があるので、誰がどのくらいのスケールが適用されているかがわかりますか?

0 投票する
1 に答える
1022 参照

opencv - Aruco のスケールの座標が間違っている

(新しくリリースされた) ArUco 2.0.7 を使用して、いくつかのマーカーを追跡しています。私が使用しているカメラは天井に下向きに取り付けられているため、必要なのは x 座標と y 座標だけです。2.6m×1.5mのエリアを表示できます。ドキュメントを正しく理解していれば、使用しているマーカーの横の長さを任意の単位で指定すると、ポーズの出力は同じ単位になります。したがって、マーカーの横の長さは 19.5cm です。結果をメートルで表示したいので、その値を 0.195 に設定します。

しかし、私が得た結果は正しくありません。カメラの視野の隅にマーカーを配置すると、対応する予想される x 座標と y 座標にはなりません。

視野の隅の 1 つにグローバル原点を配置しています。たとえば、(0,0) は左下隅です。これは、getRTMatrix() によって取得されたマトリックス変換を使用して、すべての着信位置をそのマーカー座標系に変換することによって行われます。x 座標と y 座標が間違った単位またはスケーリングされていることを除いて、すべてが機能しているようです。回転は完璧に機能します。

何か不足していますか?それとも精度が期待できないのでしょうか?エラーは重大です。たとえば、(2.6,1.5) のはずが (1.8, 1) と表示されますが、これはおよそ 33% のエラーです。

0 投票する
0 に答える
357 参照

c++ - real_time_pose_estimation ではエラーはありませんが、オブジェクトの検出に失敗します

私はリアルタイムのポーズ推定に取り組んでおり、コードは https://github.com/opencv/opencv/tree/master/samples/cpp/tutorial_code/calib3d/real_time_pose_estimation (opencv 3.1.0 で提供されたサンプル) にあります。

次の 2 つの段階があります。

  1. モデル登録(検出対象物体の3Dテクスチャモデルを.ymlファイルに登録)

  2. モデル検出

    • /real_time_pose_estimation/Data に既にある .yml ファイル (cookies_ORB.yml) を送信すると、期待どおりに検出が成功します。

    • オブジェクトの 3D テクスチャ モデルを .yml ファイルに手動で登録しても検出されず、予期しない出力で終了するのはなぜですか。

これが私がすることです:

キーポイント

独自のテクスチャ 3D モデルを作成する:

エラーモデル検出

期待される出力 -

cookies_ORB.yml ファイル入力を使用しているかどうかを正常に検出