gpt4 book ai didi

c++ - openCV 的 triangulatePoints() 结果应该是什么样的?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:44:09 25 4
gpt4 key购买 nike

我正在尝试对立体相机系统的一些点进行三角测量。

首先,我使用示例“stereo_calib”(cpp) 在 yml 文件中获取外部参数:

  • R
  • T
  • R1
  • R2
  • P1
  • P2

有没有办法检查值是否正确?

然后我使用方法:

cvTriangulatePoints(CvMat* projMatr1, CvMat* projMatr2, CvMat* projPoints1, CvMat* projPoints2, CvMat* points4D) 

我将 P1 用于 projMatr1,将 P2 用于 projMatr2。

我要三角化的点是左图的坐标 x=919,y=686 和右图的 x=586,y=694。我试过了,但我不确定这是否是好方法:

int co1[] = {919,686};
Mat point1(2, 1, CV_32FC1, co1);
int co2[] = {586,694};
Mat point2(2, 1, CV_32FC1, co2);
Mat points4D;

我将 point1 用于 projPoints1,将 point2 用于 projPoints2。我在最后的 yml 文件中写了 points4D。这是我得到的结果:

%YAML:1.0
Points4D: !!opencv-matrix
rows: 4
cols: 1
dt: f
data: [ 2.34857202e-001, 1.03716120e-001, -9.66480732e-001,
1.43435571e-007 ]

这是什么意思?前三个值是重建点的 x、y 和 z?这些值对我来说似乎很奇怪,但我真的很了解 openCV,我对它了解不多。

我发现了这个相关问题:How to correctly use cv::triangulatePoints() .但它并没有真正帮助我......

感谢您的帮助!

编辑

校准给了我这个:

P1: !!opencv-matrix
rows: 3
cols: 4
dt: d
data: [ 1.5334888857352591e+003, 0., 1.1192188110351562e+003, 0., 0.,
1.5334888857352591e+003, 9.1114062500000000e+002, 0., 0., 0., 1.,
0. ]
P2: !!opencv-matrix
rows: 3
cols: 4
dt: d
data: [ 1.5334888857352591e+003, 0., 1.1192188110351562e+003,
4.3953258083993223e+003, 0., 1.5334888857352591e+003,
9.1114062500000000e+002, 0., 0., 0., 1., 0. ]

我在 A4 格式纸上的文档打印中使用了棋盘。

最佳答案

您应该首先分别校准您的相机并获得它们的固有矩阵。

然后您可以使用特殊标志运行立体校准,指示您仅搜索外部属性(相机彼此之间的关系)。

投影矩阵(如 P1 和 P2)本质上是相机的内部矩阵 C 和相机的外部矩阵 [R|t] 的乘积。

检查结果的一种方法是使用从立体校准中获得的 RT 值,并创建一个基本矩阵来描述由一个摄像头和其他摄像头拍摄的图像。

使用Fundamental Matrix,对于相机A拍摄的图像上的每个点,你可以在相机B拍摄的图像上画一条线。如果你的眼睛看不到实际对应的点直接在这条线上,那就好了.

如果您对多个点重复该操作并始终获得良好的结果,则您可能无法确定您的外部属性和投影矩阵都很好。

当您通过 triangulatePoints 函数获得 3d 点时,它们位于齐次坐标 (x, y, z, w) 中。该点的欧几里德坐标为 (x/w, y/w, z/w)

边注:

在纸上打印棋盘很少是个好主意。纸张通常永远不会完全平整/笔直。一种方法是将其打印在粘性纸上,然后将其粘在坚硬的平面上,不留气泡。您也可以尝试在计算机显示器上简单地显示棋盘图案并报告结果:)

关于c++ - openCV 的 triangulatePoints() 结果应该是什么样的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24047112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com