1

2D 特徴点と三角形分割された 3D ランドマーク ポイントを使用して、画像データセットで solvePnPRansac を実行しています。それは素晴らしく走り、回転、そして前軸と横軸の結果は見栄えがします。ただし、Y 軸は完全に間違っています。

データ セットのグラウンド トゥルースに照らして出力をテストしていますが、下降するはずの場所で上昇し、グラウンド トゥルースから非常に急速にずれています。他の軸は、はるかに長い間ロックされたままになります。

これは奇妙に思えますが、他の軸では正しく、1 つの軸では間違っているのでしょうか? さすがにそんなことはあり得ないので、どの軸も悪いか、どの軸も良いかのどちらかだと思っていたでしょう。

これを実現するために何が間違っている可能性がありますか? そして、どうすればこの奇妙さをデバッグできますか? 私の PnP コードは非常に標準的です。

  cv::Mat inliers;
    cv::Mat rvec = cv::Mat::zeros(3, 1, CV_64FC1);      

    int iterationsCount = 500;        // number of Ransac iterations.
    float reprojectionError = 2.0; //2.0   // maximum allowed distance to consider it an inlier.
    float confidence = 0.95;          // RANSAC successful confidence.
    bool useExtrinsicGuess = false;
    int flags = cv::SOLVEPNP_ITERATIVE;

    int num_inliers_;
    //points3D_t0
    cv::solvePnPRansac(points3D_t0, points_left_t1, intrinsic_matrix, distCoeffs, rvec, translation_stereo,
        useExtrinsicGuess, iterationsCount, reprojectionError, confidence,
        inliers, flags);
4

1 に答える 1

0

ドローンで撮影した画像でも同様の問題が発生しました。Y 値 (カメラの視線軸 - 私の場合は高さ軸) が地面より下になることがありました。平面図 (または平面の近く) について考えてみると、2 つの「y」ソリューションが考えられます。平面の前と平面から離れた場所 (私の場合は地下と地下) です。したがって、どちらも法的解決策です。

于 2019-06-01T16:35:56.730 に答える