我的立体声校准正确吗?为什么我的三角测量不起作用?

Is my Stereo Calibration right? Why does my Triangulation not work then?

我正在尝试从立体相机的图像中获取 3D 点云。 我在 Python 中用 OpenCV 校准了我的立体相机(每个 240x320)并得到了 0.25 的重投影误差。我使用了一个 9x10 行和列的棋盘图案,并在不同的光照条件下以不同的角度拍摄了 10 张图像,并在拍摄时移动了相机。 (我不确定,也许这就是问题所在)然后我将它们导入到 matlab 中,matlab 给了我棋盘角。 (我选择了 matlab 因为它比 opencv 更精确)然后我将角加载到我的 python 校准脚本中。

内部校准完美无缺:

但我不确定是否可以使用外部校准的结果,因为图像仍然是圆形并且有那些黑色空间;图像的矩形中心很好:

参数和矩阵在另一个脚本中保存和加载。该脚本通过左图像和右图像运行 sobel 运算符,并在两个图像中找到匹配的边缘像素:

然后我将那些匹配的像素交给 cv.triangulatePoints(projMatr1, projMatr2, projPoints1, projPoints2) 这应该给我点的 3D 坐标。我用 plotly 绘制了它们,但结果无法识别,并且离所示杯子的边缘不远:

有没有人知道它可能是什么或者我做错了什么? 如果需要,我可以在此处 post 我的代码。

好的,我尝试交换匹配点的行和列元素 [row, col] => [col, row] 现在三角测量开始了:

仍然存在错误匹配,但没关系,我在意料之中。 但是更改行和列对图像不起作用:

但那是另外一回事了,我对目前的结果很满意。