如何构建正确的投影矩阵?

3
请问有人可以告诉我如何为triangulatePoints制作投影矩阵?这不是那么容易的事情,我找到了几个可能的投影矩阵,但现在还无法确定哪一个是正确的。
如果我从Robust Matcher或其他匹配方法获得KeyPoints,然后从E中得到旋转和平移。这会导致像P0=[I|T]和P1=[R|T]这样的矩阵,其中R和T是提取出来的、未更改的值。我是对的吗?当我有一个立体相机时,使用calibrateCamera()(明确不使用stereoCalibrate!!)或使用SolvePnP从camera1和camera2获取R和T。那些矩阵看起来像这样:P0=[R0|t0]和P1=[R1|t1]或P0=[R0|R0*t0]和P1=[R1|R1*t1]或其他什么东西?
我发现了一些关于“rectify”的内容,你知道我是否需要在获取KeyPoints之前进行矫正,还是说只需要进行undistortPoints函数才能用于triangulatePoints()?
谢谢帮助
1个回答

0

在3D重建中,我们有以下三种坐标系: 1-图像坐标系 2-相机坐标系 3-世界坐标系

我们假设其中一个坐标系,例如世界坐标系,并将其他事物如相机放置在该坐标系中。

我们有两个重要的矩阵: 1-视图矩阵或投影矩阵,用于描述投影 2-模型矩阵,用于描述对象的位置和旋转

通过将这两个矩阵相乘,我们得到了模型视图矩阵,用于描述场景。 OpenGL是一个很好的库,有许多开放的示例。 您可以通过此链接获得帮助:http://www.songho.ca/opengl/gl_transform.html


嗨AbSSH,感谢您的回答,但更多地涉及到如何为openCV函数triangulatePoints()构建投影矩阵。我按照提到的方式构建了它,但它没有起作用。这就是为什么我想知道它应该如何创建的原因。我知道通常如何构建投影矩阵,但它不适用于此函数。 - user1651460

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接