我有两个立体摄像机,我从左摄像机和右摄像机捕获了标记的图像。
我的校准很完美
[现在进入标记,我在板上有一组标记,我估计了它的姿势。而且,我根据“三角剖分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)。
即使我已经写了以上,我仍然感到仍然缺少某些东西。请点点滴,告诉我如何进行。
我有两个立体摄像机,我从左摄像机和右摄像机捕获了标记的图像。我有一个完美的校准本征畸变校正外部到...
我在java中做过类似的问题,有时它的算法可以帮助您