首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对OpenCV中tvecs rvecs的基本理解

对OpenCV中tvecs rvecs的基本理解
EN

Stack Overflow用户
提问于 2018-11-13 09:19:46
回答 2查看 9.9K关注 0票数 10

我想使用ArUco来查找标记的“空间坐标”。我很难理解tvecsrvecs。我走了这么远,tvecs是平移,rvecs是旋转的。但是它们是如何面向的,它们在代码中是按照什么顺序编写的,或者我是如何定位它们的呢?

这是一个设置的小草图。 I在X,Y,Z位置有一个摄像机(膝上型电脑摄像头只是用来说明相机的方向),相机是定向的,它可以用角a周围X,角b围绕Y,角c围绕Z(角在Rad中)来描述。

因此,如果我的相机是静止的,我会为ChArUco板拍摄不同的照片,给相机校准算法tvecs_camerapos (Z,Y,X)和rvecs_camerapos (c,b,a)。我得到了cameraMatrix,distCoeffstvecs_cameracalibrvecs_cameracalibt/rvecs_camerapost/rvecs_cameracalib是不同的,我觉得很奇怪。

  • 这个提名/命令正确吗?
  • 如果相机不动,我应该使用cameraposcameracalib来估计姿态吗?

我认为t/rvecs_cameracalib是可以忽略的,因为我只对摄像机校准算法的内在参数感兴趣。

现在,我想找到标记X,Y,Z 的位置,我使用aruco.estimatePoseSingleMarkerst/rvecs_camerapos,并检索t/rvecs_markerpostvecs_markerpos与我的期望值不匹配。

  • 我是否需要t/rvecs_markerpos变换才能找到标记的X,Y,Z?
  • 我的误解在哪里?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-06 07:45:47

处理相机和摄像机校准的OpenCV例程(包括AruCo)使用针孔相机模型。世界起源被定义为相机模型的投影中心(所有进入照相机的光线都会聚在一起),Z轴定义为相机模型的光轴,X和Y轴形成一个正交系统,Z +Z在相机前面,+X在右边,+Y是向下的。所有AruCo坐标都在这个坐标系中定义。这解释了为什么您的“摄像机”to和rvecs会发生变化:它们并不定义相机在某些世界坐标系中的位置,而是定义标记相对于您的相机的位置。

你不需要真正知道相机校准算法是如何工作的,除了它会给你一个相机矩阵和一些镜头畸变参数,你用它作为输入到其他AruCo和OpenCV例程。

一旦您有了校准数据,您可以使用AruCo识别标记,并返回它们在相机定义的三维坐标系中的位置和方向,并对相机镜头的畸变进行正确的补偿。这是足够的,例如,增强现实使用OpenGL之上的视频饲料从你的相机。

  • 标记的tvec是标记的原点的转换(x,y,z);距离单位是用来定义打印的校准图的任何单元(也就是说,如果使用mm将校准图描述为OpenCV,那么to中的距离单元是mm)。
  • 标记的rvec是一个三维旋转矢量,它定义了旋转轴和围绕该轴的旋转角度,并给出了标记的方向。它可以使用Rodrigues函数(cv::Rodrigues())转换为3x3旋转矩阵。要么是旋转将标记的局部轴转换为世界轴(照相机)轴,要么是相反的--我不记得了,但您可以轻松地检查。
票数 13
EN

Stack Overflow用户

发布于 2019-03-24 12:19:55

据我理解,相机坐标是三维世界的参照系。rvec和tvec是用来获得任何其他3D点(在世界参考帧中)的位置的变换。这两个向量都是外部参数R_t_t。本征参数一般是通过标定得到的。现在,如果你想把其他的3D点w.r.t世界参考框架投射到图像平面上,你需要先把这个3D点放到相机坐标系中,然后把它投影到图像上,才能得到一个正确的视角。

像平面点(u,v,1)=内禀三维点,1

参考坐标系是摄像机。rvec,tvec给出了6D姿态的标记wrt到相机。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53277597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档