我想使用 OpenCV 从 Motion 做一些结构。这应该发生在 Android 上。目前我有cameraMatrix(内在参数)和相机校准的失真系数。
用户现在应该从构建中获取 2 张图像,并且应用程序应该生成一个点云。注意:用户可能还会在沿着建筑物的一侧移动时稍微旋转智能手机的摄像头......
目前,我有以下信息:
- 未失真的左图像
- 未失真的右图像
- 使用 SIFT 的良好匹配列表
- 单应矩阵
- 基本矩阵
我已经搜索了互联网,现在我很困惑我应该如何进行......有人说我需要使用 stereoRectify 来获取 Q 并使用 Q 和 reprojectImageTo3D() 来获取 pointCloud。
其他人说我需要使用stereoRectifyUncalibrated并使用该方法中的H1和H2来填充triangulatePoints的所有参数。在 triangulatePoints 中,我需要每个相机/图像的 projectionMatrix,但据我了解,这似乎是绝对错误的。
所以对我来说有一些问题:
- 如何从我已有的所有信息中获得 R 和 T(旋转和平移)
- 如果我使用stereoRectify,前4个参数是cameraMatrix1,distortionCoeff1,cameraMatrix2,distortionCoeff2) - 如果我没有像Kinect这样的stereoCamera,ameraMatrix1和cameraMatrix2是否等于我的设置(智能手机上的单摄像头)
- 我怎样才能获得 Q(猜猜我是否有 R 并且 TI 可以从 stereoRectify 获得它)
- 是否有另一种获取每个相机的投影矩阵的方法,以便我可以使用 OpenCV 提供的三角测量方法
我知道这是很多问题,但是谷歌搜索让我感到困惑,所以我需要弄清楚这一点。我希望有人可以帮助我解决我的问题。
谢谢
PS因为这是更多的理论问题,我没有发布一些代码。如果您想/需要查看代码或我的相机校准值,请询问,我会将它们添加到我的帖子中。