位姿线性变换与坐标变换

位姿,线性变换与坐标变换.yuque

内旋,外旋, 左乘,右乘很容易把人绕晕是因为缺少一种科学的符号。
自己的符号,如果经常变不稳定,对推理和理解都很不利。
一旦问题复杂起来, 直观和直觉靠不住, 只能靠代数符号来推理
约定
P1: A,B,C…是空间中的标准正交基
P2: [a1,a2,…an] 是系A的基, [b1,b2,…bn] 是系B的基,其中aj 和bj 都是n维列向量
一个坐标系可以用它的基表示,故A=[a1,a2,…an] B=[b1,b2…bn]。 aj 和 bj 的表示需要依赖世界系[e1,e2,…en]
P3:AP是点P在A系中的齐次坐标A [Px,Py,Pz,1]T或欧式坐标A[Px,Py,Pz]T ,根据上下文区分
P4: AT是A系的中的线性变换, 满足AP2=AT * AP1 (就是把P1变换到P2点)
P5: ABT 是B系在A系中的位姿,指的是系B的每一个基在系A的坐标表示即
[b1,b2…bn]=[a1,a2,…an] ABT
ABT * BAT =I
P6: 在线性代数中 T * 0=0 ,即所有系原点重合,但在齐次坐标中根本不存在[0,0,0,0]T, 而是用 [0,0,0,1]T 表示原点,所以齐次坐标可处理平移问题
P7: 常用的线性变换使用作用来描述,比如拉伸,旋转,平移,镜像,透视,而抽象的线性变换则只能使用矩阵来描述。
定理1: 坐标变换定理 AP= ABT BP
坐标变换定理描述了同一个点P在两个系中的关系
P1: B=[b1,b2…bn]=[a1,a2,…an]C=AC ; (C是过渡矩阵)
P2: AP=[p1,p1,…pn]T BP=[p1,p1,…pn,]T P=AAP=BBP=ACBP
P3: AP=CBP ; C就是ABT
P4: 如果P1中的A取I=[e1,e2…en] 则 B=C=ABT
定理2: 线性变换定理 AP2= ABT AP1
令 AT = ABT , 则 AP2= AT AP1
线性变换定理描述了在同一个系中两个点的关系 (线性变换的特点是左上角在一个系中)
AT 产生的作用就是A系到B系的作用
定理3: ACT=ABTBCT
虽然这个定理很好证明,但对它的不同解释延伸出了很多有意思的结论,内旋,外旋都来源于此
P1: AP= ABT BP =ACT CP BP= BCT CP
P2: AP= ABT BCT CP =ACT CP
P3: ABT BCT =ACT
定理4: 内外旋定理
该定理源于对公式 ACT=ABT
BCT 的两种解释
本地系的作用是内旋用右乘 , 世界系作用是外旋用左乘

达到上图的状态有两种方式
方式1: 运动系,内旋,右乘的解释
P1: ABC重合
P2: BC相对A运动ABT
P3: C相对B运动BcT
ACT=ABTBCT 可以看作ABT与BCT 的合成, 上面都是相对运动系作用
方式2: 世界系,外旋,左乘的解释
P1: ABC重合
P2: C相对AB运动BcT
P3: BC相对A运动ABT
ACT=ABTBCT 可以看作是先BcT作用后ABT作用, 上面都是相对世界系作用
例1: 在平面上,求绕点(x,y)逆时针旋转θ对应的线性变换
P1: A系为世界系
P2: B系由A系平移到(x,y)得到
P3: C系由B系逆时针旋转θ得到
P4: P1绕B系原点逆时针旋转θ到达P2 ,求在A系中P1到P2的线性变换

AP1=ABTBCTCP1
AP2=ABTBCTCP2
CP2=BCTCP1 ;(同时有BP2=BCTBP1)
AP2=MAP1
联立上面方程可解得 M=ABTBCTBAT (把前三个方程带入第4个方程)
将ABT= [ 1 0 x 0 1 y 0 0 1 ] \begin{bmatrix} 1 &0 & x \\ 0 & 1 & y \\ 0 & 0 &1 \end{bmatrix} 100010xy1 BCT= [ cos ⁡ θ − sin ⁡ θ 0 sin ⁡ θ cos ⁡ θ 0 0 0 1 ] \begin{bmatrix} \cos \theta & -\sin \theta & 0 \\ \sin \theta & \cos \theta & 0 \\ 0 & 0 &1 \end{bmatrix} cosθsinθ0sinθcosθ0001 BAT= [ 1 0 x 0 1 y 0 0 1 ] − 1 \begin{bmatrix} 1 &0 & x \\ 0 & 1 & y \\ 0 & 0 &1 \end{bmatrix} ^{-1} 100010xy1 1
带入上式得到
M= [ cos ⁡ θ − sin ⁡ θ ( 1 − c o s θ ) ∗ x + s i n θ ∗ y sin ⁡ θ cos ⁡ θ − s i n θ ∗ x + ( 1 − c o s θ ) ∗ y 0 0 1 ] \begin{bmatrix} \cos \theta & -\sin \theta & (1-cos\theta)*x+sin\theta*y \\ \sin \theta & \cos \theta & -sin\theta*x+(1-cos\theta)*y \\ 0 & 0 &1 \end{bmatrix} cosθsinθ0sinθcosθ0(1cosθ)x+sinθysinθx+(1cosθ)y1
例1的过程可以自然的推广到三维中绕定轴旋转对应的线性变换

  • 23
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PnP算法(Perspective-n-Point算法)是一种在计算机视觉中用于估计相机的位姿(即相机的位置和朝向)的方法。PnP算法的输入是已知的三维点和它们在图像上对应的二维点,输出是相机的位姿变换。 以下是使用PnP算法计算位姿变换的一般步骤: 1. 收集三维点和它们在图像上对应的二维点。这些点可以通过多种方式获得,例如使用激光扫描仪或结构光扫描仪获取3D点云数据,或使用摄像机捕捉物体的图像来获取二维点。 2. 确定相机的内部参数,例如相机的焦距、主点和畸变系数。这些参数可以通过标定相机获得,标定方法包括张氏标定法和Tsai-Lenz标定法等。 3. 使用PnP算法,将三维点和它们在图像上对应的二维点作为输入,并使用相机的内部参数,计算相机的位姿变换。PnP算法的原理是通过三个或更多点在图像中的位置和它们在空间中的位置来计算相机的位姿。 4. 对于大多数PnP算法,需要知道至少4个三维点和它们在图像上对应的二维点。这些点需要满足一个特定的几何约束条件,例如共面或非共面等条件。根据使用的算法,可能需要进一步的处理或优化来提高位姿估计的精度。 5. 计算得到相机的位姿变换矩阵。这个变换矩阵可以将相机坐标系下的点转换到世界坐标系下,或将世界坐标系下的点转换到相机坐标系下。 总的来说,使用PnP算法计算位姿变换需要收集3D点云和2D图像对应的点,确定相机的内部参数,并使用PnP算法计算相机的位姿变换矩阵。这个变换矩阵可以用来将相机坐标系下的点转换到世界坐标系下,或将世界坐标系下的点转换到相机坐标系下。 ### 回答2: PnP算法(Perspective-n-Point)是一种计算相机位姿变换的算法,通常用于计算相机的位置和姿态。下面是使用PnP算法计算位姿变换的步骤: 1. 特征点提取:从图像中提取特征点,可以使用SIFT、SURF、ORB等算法进行特征点检测和描述。 2. 特征匹配:将待定特征点与模型特征点进行匹配,可以使用最近邻算法或RANSAC算法来筛选匹配点对。 3. 求解位姿:选择足够数量的匹配点对,根据匹配点对的2D-3D关系进行PnP求解。可以使用EPnP、UPnP或APnP等算法进行求解。 4. 姿态优化:使用非线性优化算法(例如Levenberg-Marquardt)对求得的初始位姿进行优化,以获得更准确的位姿估计结果。 5. 可选步骤:根据需要,还可以进行相机姿态的迭代改进,通过递归或优化方法获得更精确的位姿解。 PnP算法可以用于计算相机在世界坐标系中的位置和姿态,适用于许多计算机视觉任务,例如增强现实、姿态估计、机器人导航等。然而,PnP算法的有效性和准确性受到输入特征点的质量和匹配准确性的影响,因此在应用中需要对算法进行适当的调优和判断。 ### 回答3: PnP(Perspective-n-Point)算法是一种用于计算相机位姿变换的方法,适用于计算从相机坐标系到世界坐标系变换。 首先,我们需要确定至少3个在世界坐标系中已知的点和它们对应的在图像坐标系中的投影点。这些点可以通过目标物体上的特征点或者标定板上的角点来获取。 接下来,需要选取一个合适的PnP解算方法,其中比较常用的方法有EPnP和UPnP。EPnP使用最小化重投影误差的方法来求解,并且已经有很多现成的实现。UPnP则通过将PnP问题转化为最小化多项式问题来求解。 然后,根据选定的解算方法,我们将已知的3D点和它们在图像中的投影坐标传入算法中。这些信息将作为输入参数来计算相机的旋转矩阵和平移向量。 最后,根据计算得到的旋转矩阵和平移向量,我们可以得到相机的位姿变换关系。利用这个变换关系,我们可以将图像坐标系中的点转化为世界坐标系中的点,或者实现相机的位姿估计等应用。 需要注意的是,由于PnP算法是一种非线性优化问题,所以可能存在多个解或者无解的情况。另外,为了提高PnP算法的鲁棒性,还可以采用RANSAC等方法来进一步剔除误匹配点,提高算法的精度和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值