c++ - 单应性投影矩阵

标签 c++ opencv projection-matrix

我在 OpenCV 3.0 下使用 stereoRectifyUncalibrated() 方法研究立体视觉。

我按照以下步骤校准我的系统:

  1. 检测并匹配来自 2 个摄像头的图像之间的 SURF 特征点
  2. 应用 findFundamentalMat() 与匹配的对
  3. 使用 stereoRectifyUncalibrated() 获得校正单应性。

对于每个相机,我计算一个旋转矩阵如下:

R1 = cameraMatrix[0].inv()*H1*cameraMatrix[0];

要计算 3D 点,我需要获得投影矩阵,但我不知道如何估计平移 vector 。

我尝试了 decomposeHomographyMat() 和这个解决方案 https://stackoverflow.com/a/10781165/3653104但是旋转矩阵与我用 R1 得到的不一样。

当我用 R1/R2 检查校正后的图像时(使用 initUndistortRectifyMap() 然后是 remap()),结果似乎是正确的(我用极线检查) .

我对视觉知识的薄弱有点迷茫。因此,如果有人可以向我解释。谢谢:)

最佳答案

您提供的链接中的代码 (https://stackoverflow.com/a/10781165/3653104) 计算的不是旋转而是相机的 3x4 位姿。

姿势的最后一列是你的平移 vector

关于c++ - 单应性投影矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28234532/

相关文章:

c++ - CFileDialog 实例化的问题

image-processing - 通过基本矩阵校正未校准的相机

c++ - 从另一个程序 Linux 或 cygwin 运行外部程序

python - 视频在 opencv 上停止

c++ - 如何使用 OpenCV 从网络摄像头获取孔径角?

r - 通过 QR 分解、SVD(和 Cholesky 分解?)计算投影/帽子矩阵

opengl - 当前的 OpenGL 矩阵模式

ios - 在 Apple 的增强现实示例代码 "pARk"中使用四元数

c++ - VLOG 不适用于 Google 日志记录库 (glog)

c++ - 类似于 OpenCV 中 cv::Mat 的 std::transform 函数