要在最接近多视图几何中另一个3D点的线上找到3D点?

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

我有两个立体摄像机,我从左摄像机和右摄像机捕获了标记的图像。

我的校准很完美

  1. 内在
  2. 失真校正
  3. 外部]
  4. [现在进入标记,我在板上有一组标记,我估计了它的姿势。而且,我根据“三角剖分3D点”计算了每个标记的3D点。

cv::triangulatePoints(Projection_Matrix_L[o], Projection_Matrix_R[o], pointsMat1, pointsMat2, pnts3D);

然后我知道了相机中心(CL_O)

CL_O = -Rotation_matrix.inv * translation

主要是(0,0,0)

对于其他摄像机视图也是如此。为简单起见,让我们坚持一个。

我假设以下等式应基于lambda(λ)计算线中的点

line(λ) = CL_O + λ*t

CL_O, is a 3D point say (x0, y0, z0)
t, is a Vector (a, b, c)

具有正确的(λ)值,结果将是一个3D点,即Q。但是它仍然不接近标记点P。因此,我需要计算点P和Q之间的最小距离。

问题-如何确定每个3D标记点的λ,以便它以最小的误差给出接近P的3D点Q。我不知道下面的等式是否正确?

f(λ) = abs(Point P - line(λ))

如果您认为它是正确的,我需要示例代码/伪代码来实现它(最好是C ++或python)。

即使我已经写了以上,我仍然感到仍然缺少某些东西。请点点滴,告诉我如何进行。

Problem Statement Image

我有两个立体摄像机,我从左摄像机和右摄像机捕获了标记的图像。我有一个完美的校准本征畸变校正外部到...

python opencv 3d geometry camera-calibration
1个回答
0
投票

我在java中做过类似的问题,有时它的算法可以帮助您

© www.soinside.com 2019 - 2024. All rights reserved.