坐标系之间的变换

这篇具有很好参考价值的文章主要介绍了坐标系之间的变换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文来自 《Fundamentals of Computer Graphic》 7.5 Coordinate Transform
在图 7.19 中,右上图是保持坐标系不变,移动点的位置;右下图是保持点的位置不变,移动坐标系。在这两种移动方法之后,点在坐标系上的坐标都是 ( 1 , 1 ) (1,1) (1,1)
坐标系之间的变换
改变坐标系的想法与编程中的类型转换类似。在我们把一个浮点数和一个整型数相加之前。我们需要把浮点型转换为整型或者把整型转换成浮点型。再举一个例子,假设有一辆行驶在城市中的轿车。在我们能把城市和车画在一起之前,我们需要把城市转换到轿车坐标系或者把轿车转换到城市坐标系。
 
几何地,一个坐标系由一个原点和一组基底(3个向量的集合)构成。一般默认是正交基底。
在一个拥有原点 p \mathbf{p} p 和基底 u , v , w \mathbf{u},\mathbf{v},\mathbf{w} u,v,w,坐标 ( u , v , w ) (u,v,w) (u,v,w) 描述了下面这个点
p + u u + v v + w w . \mathbf{p}+u\mathbf{u}+v\mathbf{v}+w\mathbf{w}. p+uu+vv+ww.
在 2 维的情况下,默认使用 o \mathbf{o} o 表示原点, x \mathbf{x} x y \mathbf{y} y 分别表示右手系正交基底向量。

在 2 维的情况下,右手系表示从 x \mathbf{x} x 轴开始逆时针选择。
在下图 7.20 中,左图有两个坐标系与一个点,右图表示了该点在两个不同坐标系下是如何构成的。
坐标系之间的变换

p = ( x p , y p ) ≡ o + x p x + y p y \mathbf{p}=(x_p,y_p) \equiv \mathbf{o} +x_p \mathbf{x}+y_p\mathbf{y} p=(xp,yp)o+xpx+ypy
在图 7.20 中, ( x p , y p ) = ( 2.5 , 0.9 ) (x_p, y_p) = (2.5,0.9) (xp,yp)=(2.5,0.9)
类似地,
p = ( u p , v p ) ≡ o + u p x + v p y \mathbf{p}=(u_p,v_p) \equiv \mathbf{o} +u_p \mathbf{x}+v_p\mathbf{y} p=(up,vp)o+upx+vpy
在图 7.20 中, ( x p , y p ) = ( 0.5 , − 0.7 ) (x_p, y_p) = (0.5,-0.7) (xp,yp)=(0.5,0.7)
我们可以用下面的矩阵来表示上面两种不同坐标系下坐标的关系:
坐标系之间的变换
注意,上面的 x e , y e x_e,y_e xe,ye 分别表示 e \mathbf{e} e 点在以 o \mathbf{o} o 为原点的坐标系下的坐标。
上面的 x u , y u x_u,y_u xu,yu 分别表示向量 u \mathbf{u} u 在以 o \mathbf{o} o 为原点的坐标系下的坐标。
上面的 x v , y v x_v,y_v xv,yv 分别表示向量 v \mathbf{v} v 在以 o \mathbf{o} o 为原点的坐标系下的坐标。
实际上,这是先对关于 u , v \mathbf{u,v} u,v做了旋转, 再对 e \mathbf{e} e 做了平移操作。用下述更加简洁的矩阵表示:
p x y = [ u v e 0 0 1 ] p u v \mathbf{p}_{xy}=\begin{bmatrix} \mathbf{u} & \mathbf{v} & \mathbf{e} \\ 0 & 0 &1 \end{bmatrix} \mathbf{p}_{uv} pxy=[u0v0e1]puv
我们称上面的矩阵为针对(u,v)帧的 frame-to-canonical 矩阵。它将以用 ( u , v ) (u,v) (u,v) 帧表示的点作为输入,转换到以 canonical frame 表示的形式。
 
相反的转换顺序,我们有
[ u p v p 1 ] = [ x u y u 0 x v y v 0 0 0 1 ] [ 1 0 − x e 0 1 − y e 0 0 1 ] [ x p y p 1 ] \begin{bmatrix} u_p \\ v_p \\1 \end{bmatrix} = \begin{bmatrix} x_u&y_u &0 \\ x_v & y_v&0 \\ 0&0&1 \end{bmatrix} \begin{bmatrix} 1&0 &-x_e \\ 0& 1&-y_e \\ 0&0&1 \end{bmatrix} \begin{bmatrix} x_p \\ y_p \\1 \end{bmatrix} upvp1 = xuxv0yuyv0001 100010xeye1 xpyp1

上面是先平移,再旋转,注意与之前的区分开来。
它们是之前我们用来构造 frame-to-canonical 矩阵的旋转与平移的逆,被称作 canonical-to-frame 矩阵。
p u v = [ u v e 0 0 1 ] − 1 p x y \mathbf{p}_{uv}=\begin{bmatrix} \mathbf{u} & \mathbf{v} & \mathbf{e} \\ 0 & 0 &1 \end{bmatrix}^{-1} \mathbf{p}_{xy} puv=[u0v0e1]1pxy
canonical-to-frame 矩阵将以 canonical 帧表示的点为输入,将它们转化成在 ( u , v ) (u,v) (u,v) 帧下表示的点。我们将这个矩阵表示成 frame-to-canonical 矩阵的逆,因为它不能立刻被写成使用 e , u , w \mathbf{e} ,\mathbf{u},\mathbf{w} e,u,w 的 canonical 坐标。但是请记住,所有坐标系都是等价的;将向量以 x − , y − x-,y- x,y坐标存储的习惯创造了这种看上去的不对称。canonical-to-frame矩阵可以被简单表示为 o , x , y \mathbf{o} ,\mathbf{x},\mathbf{y} o,x,y 的坐标 ( u , v ) (u,v) (u,v)
p u v = [ x u v y u v o u v 0 0 1 ] p x y \mathbf{p}_{uv}=\begin{bmatrix} \mathbf{x}_{uv} & \mathbf{y}_{uv} & \mathbf{o}_{uv} \\ 0 & 0 &1 \end{bmatrix} \mathbf{p}_{xy} puv=[xuv0yuv0ouv1]pxy
 
 
关于上述两个矩阵,做个验证:
p u v = [ x u y u 0 x v y v 0 0 0 1 ] [ 1 0 − x e 0 1 − y e 0 0 1 ] p x y = [ x u y u 0 x v y v 0 0 0 1 ] [ 1 0 − x e 0 1 − y e 0 0 1 ] [ 1 0 x e 0 1 y e 0 0 1 ] [ x u x v 0 y u y v 0 0 0 1 ] p u v \mathbf{p}_{uv}=\begin{bmatrix} x_u&y_u &0 \\ x_v & y_v&0 \\ 0&0&1 \end{bmatrix} \begin{bmatrix} 1&0 &-x_e \\ 0& 1&-y_e \\ 0&0&1 \end{bmatrix}\mathbf{p}_{xy}= \begin{bmatrix} x_u&y_u &0 \\ x_v & y_v&0 \\ 0&0&1 \end{bmatrix} \begin{bmatrix} 1&0 &-x_e \\ 0& 1&-y_e \\ 0&0&1\end{bmatrix} \begin{bmatrix} 1&0 &x_e \\ 0& 1&y_e \\ 0&0&1 \end{bmatrix} \begin{bmatrix} x_u&x_v &0 \\ y_u & y_v&0 \\ 0&0&1 \end{bmatrix} \mathbf{p}_{uv} puv= xuxv0yuyv0001 100010xeye1 pxy= xuxv0yuyv0001 100010xeye1 100010xeye1 xuyu0xvyv0001 puv
= [ x u y u 0 x v y v 0 0 0 1 ] [ 1 0 0 0 1 0 0 0 1 ] [ x u x v 0 y u y v 0 0 0 1 ] p u v =\begin{bmatrix} x_u&y_u &0 \\ x_v & y_v&0 \\ 0&0&1 \end{bmatrix} \begin{bmatrix} 1&0&0 \\ 0 & 1&0 \\ 0&0&1 \end{bmatrix} \begin{bmatrix} x_u&x_v &0 \\ y_u & y_v&0 \\ 0&0&1 \end{bmatrix}\mathbf{p}_{uv} = xuxv0yuyv0001 100010001 xuyu0xvyv0001 puv

= [ x u 2 + y u 2 x u x v + y u y v 0 x v x u + y v y u x v 2 + y v 2 0 0 0 1 ] p u v =\begin{bmatrix} x_u^2+y_u^2&x_ux_v+y_uy_v &0 \\ x_vx_u+y_vy_u & x_v^2+y_v^2&0 \\ 0&0&1 \end{bmatrix}\mathbf{p}_{uv} = xu2+yu2xvxu+yvyu0xuxv+yuyvxv2+yv20001 puv
= [ 1 0 0 0 1 0 0 0 1 ] p u v =\begin{bmatrix} 1&0&0 \\ 0 & 1&0 \\ 0&0&1 \end{bmatrix}\mathbf{p}_{uv} = 100010001 puv
注意到, x u 2 + y u 2 x_u^2+y_u^2 xu2+yu2 表示单位向量的模长的平方, x u x v + y u y v x_ux_v+y_uy_v xuxv+yuyv 表示两个正交向量的内积。
在 3 维中,上面的关于 2 维的结论可以推广:
坐标系之间的变换文章来源地址https://www.toymoban.com/news/detail-482143.html

到了这里,关于坐标系之间的变换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [自动驾驶算法][从0开始轨迹预测]:一、坐标系和坐标系变换

    既然要从0开始轨迹预测,那从哪开始写起呢?回想下自己的学习历程,真正有挑战性的不是模型结构,不是繁琐的训练和调参,而是数据的制作!!! 笔者自认为不是一个数学基础牢固的人,那么我们的轨迹预测之旅就从坐标转换开始吧~~~ 由难至简,才能做到【删繁就

    2024年01月22日
    浏览(39)
  • N点标定-坐标系变换

    vector_to_hom_mat2d(Px, Py, Qx, Qy, HomMat2D) 这里参考了halcon算子块的官方文档,使用的是最小二乘法,求HomMat2D矩阵。 -常用九点标定,求两个坐标系的坐标转换。。 下面个人实现原理,结果和上面算子算出来的结果一致,知识有限,仅供学习交流。 1:先来看一张图,图中矩阵为2行

    2024年02月16日
    浏览(29)
  • 旋转矩阵的作用:世界坐标变换;求解局部坐标系下的局部坐标

    以下数据以平面直角坐标系为例,三维空间同理 上图中,B点为旋转前的点,C点为B点旋转后的对应点(逆时针旋转90°),对应的旋转矩阵为: 对坐标轴做相同旋转: 我们再对比下旋转矩阵,可以发现旋转后的坐标轴可以在旋转矩阵中找到,其实这个旋转矩阵也表示了一个坐标

    2024年01月22日
    浏览(30)
  • 坐标系变换推导(欧拉角、方向余弦矩阵、四元数)+代码解析

    描述两个坐标系之间的变换关系主要有几个方法 1、欧拉角法(存在奇异性和万向锁而且三个轴旋转的顺序不好定) 2、方向余弦矩阵法(翻译为Directional cosine matrix,简称DCM,也称为旋转矩阵,看了很多博客写的是C11-C33的那个矩阵,没明白为什么也称之为一个方法,有知道的指导

    2024年02月08日
    浏览(65)
  • 齐次坐标变换的理解以及在无人机相机定位坐标系转换中的应用

    4*4矩阵的右边三个数表示平移,如果原来的向量u的w=0,那么就是u+(ai+bj+ck) 对应xyz三个轴的循环变换,注意负号的位置 用描述空间一点的变换方法来描述物体在空间的位置和方向。 先变换的矩阵乘在右边。 A p = B p + A p B o {}^{A}p={}^{B}p+{}^{A}p_{B_{o}} A p = B p + A p B o ​ ​ 从

    2024年04月15日
    浏览(49)
  • python解决坐标系两点之间有多少种走法问题

      问题:在坐标系中第一象限内的点P(x,y)     x6,y6.  到终点(5,5)有多少种走法?并显示出现所经过的点坐标 限制条件:从起点坐标只能向上或者向右走。其中(4,3)是被断开的点。 MAXCOUNT =5 # 设置坐标系中出口的坐标位置M(5,5),计算A(x,y)到M点有多少种走法,要求只能

    2024年02月08日
    浏览(26)
  • 机器人TF坐标系变换与一些可视化工具的应用

    TF坐标 在ROS中是一个非常重要的概念,因为机器人在做日常操作任务的时候,对于其所在 位置 和 朝向 是需要时刻知道的,而机器人是由很多 节点 组成的协同任务,对于每个部件,我们需要知道它的 位姿(位置和朝向) ,这使得坐标系就成为了一个很重要的问题。 TF的功能就

    2024年02月12日
    浏览(34)
  • (02)Cartographer源码无死角解析-(19) SensorBridge→雷达点云数据帧处理与坐标系变换(涉及函数重载)

    本人讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解(02)Cartographer源码无死角解析-链接如下: (02)Cartographer源码无死角解析- (00)目录_最新无死角讲解:https://blog.csdn.net/weixin_43013761/article/details/127350885   文 末 正 下 方 中 心 提 供 了 本 人 联 系 方 式

    2024年02月01日
    浏览(36)
  • 世界坐标系、相机坐标系、图像坐标系、像素坐标系

    四个坐标系都是什么? 1.世界坐标系-相机坐标系-图像坐标系-像素坐标系 2.像素坐标系-图像坐标系-相机坐标系-世界坐标系 图像处理、立体视觉等等方向常常涉及到四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系                     构建世界坐标系只是

    2024年01月21日
    浏览(53)
  • 坐标转换(相机坐标系、世界坐标系、图像物理坐标系、图像像素坐标系)

    一般情况下我们所涉及到的坐标包括四个,即相机坐标系、世界坐标系、图像物理坐标系、图像像素坐标系。我们本文的讲解思路是在讲解每个坐标转换之前先讲清楚每个坐标系所表示的含义。本文主要参考由高翔主编的视觉SLAM十四讲第五章相机模型。 相机将三维世界的坐

    2024年02月09日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包