OpenCV计算变换与重投影的矩阵说明

本文探讨了OpenCV中从3D-2D点对应计算对象姿态及3D点投影到图像平面的函数。通过实例展示了当变换一致时,如何验证两个函数的相关坐标是否一致,并解释了在机器视觉场景中,考虑到相机运动时,所计算的几何变换的适用性问题。
摘要由CSDN通过智能技术生成

本篇博客主要讨论opencv中两个函数中几何变换(矩阵)的对应关系,以下函数接口摘自opencv-2.4.8官方文档

1.Finds an object pose from 3D-2D point correspondences.

bool solvePnP(InputArray objectPoints, InputArray imagePoints, InputArray cameraMatrix, InputArray distCoeffs, OutputArray rvec, OutputArray tvec, bool useExtrinsicGuess=false, int flags=ITERATIVE )

2.Projects 3D points to an image plane.

void projectPoints(InputArray objectPoints, InputArray rvec, InputArray tvec, InputArray cameraMatrix, InputArray distCoeffs, OutputArray imagePoints, OutputArray jacobian=noArray(), double aspectRatio=0 )

根据说明,可以看出,函数solvepnp接收一组对应的3D坐标和2D坐标,计算得到两组坐标对应的几何变换(旋转矩阵rvec,平移矩阵tvec);
函数projectPoints与之相反,根据所给的3D坐标和已知的几何变换来求解投影后的2D坐标。

在空间几何变换中,很多时候会涉及到由坐标A变换到B或B变换到A类似容易弄混的情况(即一些矩阵和其逆矩阵具有不同应用场景的特性),一旦把变换矩阵的对象弄反,结果将南辕北辙。本文将通过代码实验的方式来验证,上述两个函数在所给变换一致(即tvecrvec相同)的情况下,所关联的空间点2D、3D坐标是否一致。

首先,给出小孔相机模型和一组3D点

camara=fx000fy0
  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值