解决PnP方法估计距离误差

问题描述 投票:0回答:0

我正在用

PnP
方法处理物体的估计距离。我已经做了一些测量,我计算的距离远高于实际距离。我还使用了经过校准的相机。对于距离计算,我使用 PnP 的 3 个轴的结果距离和 3D 中的距离模式:

        tvec = cv2.solvePnP(
                objectPoints = model,
                imagePoints = key_points,
                cameraMatrix = camera_matrix, 
                distCoeffs = dist_coeffs,
                flags=cv2.SOLVEPNP_ITERATIVE
            )[2]
pnp_distance = mt.sqrt(tvec[0]**2 + tvec[1]**2 + tvec[2]**2)

enter image description here 在图像上,您可以看到计算出的测量值(点)高于实际值(线)。是否有一些额外的选项可以使 PnP 方法更精确,或者我做错了什么?

一开始我使用从图像大小计算的相机矩阵。有了这个并绘制了误差分布图,我决定将 x 轴距离除以 2,这实际上有所帮助。计算值比实际相机矩阵更接近。 enter image description here 如何使用 PnP 方法和相机矩阵改进我的距离估计?提前致谢!

python opencv vision opencv-solvepnp camera-matrix
© www.soinside.com 2019 - 2024. All rights reserved.