estimatePoseSingleMarkers输出的r,t到底代表了什么

本文详细解释了在aruco码识别中,R和t在相机坐标系与mark坐标系转换中的作用,R表示旋转,t表示mark中心在相机坐标系的位置。两者都是右手坐标系,通过实例分析确保理解其物理意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:
在识别aruco码的时候,老是搞不清R,T,坐标系转换的关系,现在写下来


提示:以下是本篇文章正文内容,下面案例可供参考

一、R,t到底是代表什么?

CV_EXPORTS_W void estimatePoseSingleMarkers(InputArrayOfArrays corners, float markerLength,
                                            InputArray cameraMatrix, InputArray distCoeffs,
                                            OutputArray rvecs, OutputArray tvecs, OutputArray _objPoints = noArray(),
                                            Ptr<EstimateParameters> estimateParameters = EstimateParameters::create());

这个函数的意思是返回rvecs和tvecs,是从mark坐标系转换到相机坐标系的
具体意义参考slam十四讲第45页,这里的mark坐标系就是坐标系2,相机坐标系是坐标系1,tvecs的含义就是坐标系2的原点在坐标系1下的坐标。也就是返回的tvecs是mark中心点在相机坐标系下的坐标,
其实也很好理解,把a2设为(0,0,0)a1就是tvecs了
rvecs的意义也好理解了,就是把mark坐标系扭转到相机坐标系下的旋转操作。

二、mark坐标系和相机坐标系

首先需要了解的是opencv相机坐标系是右手坐标系,自然aruco的mark坐标系也是右手,也可以通过图片看出来。
在这里插入图片描述
仔细观察图片,mark红蓝绿坐标系的方向,此图相机是在mark上方,正右边拍摄的,
根据输入信息

R_{camera<---marker} :
[-0.9995757537181484, 0.02905460828596541, 0.002035268076802161;
 0.02895610315729921, 0.9988548156887623, -0.03808675971136301;
 -0.003139533204026787, -0.03801166811278305, -0.9992723634818209]
t_{camera<---marker} :
[-0.141753, 0.000979788, 0.27318]

在这里插入图片描述
首先看x=-0.14,根据实意图,因为实际情况是mark在相机左边,也就是mark中心在相机x轴的负半轴,负号对上了。。。
再看y=0,也和实际情况相符
z=0.27,也表明mark中心在相机z轴正半轴,符合实际情况。

然后看R,R表示是把mark的x轴方向乘以-1,也就是反转;y轴方向不变;z轴方向也反转,即可得到相机坐标系方向。
也符合示意图。
至此完美自洽。

总结

提示:这里对文章进行总结:
说明了mark坐标系和相机坐标系都是右手坐标系,以及返回的R,t的物理意义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清清紫金

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值