精华内容
下载资源
问答
  • 2022-04-20 14:22:58

    本系列教程作者:小鱼
    公众号:鱼香ROS
    QQ交流群:139707339
    教学视频地址:小鱼的B站
    完整文档地址:鱼香ROS官网
    版权声明:如非允许禁止转载与商业用途。
    公众号

    7.3.1 齐次坐标变换

    前面几节中,小鱼带你一起学习了使用TF进行坐标的变换,也带你通过旋转和平移求解了下坐标的变换关系,但计算的过程中旋转和平移是分开计算的,那有没有一种方法,可以让旋转矩阵和平移向量合并到同一个矩阵里呢?

    答案是有的,我们可以将 3 ∗ 3 3*3 33的旋转矩阵和 3 ∗ 1 3*1 31的平移矩阵进行组合,并添加一行(0,0,0,1)使其变成一个 4 ∗ 4 4*4 44的方阵,其组合方式如下:

    有旋转矩阵
    R = [ r 11 r 12 r 13 r 21 r 22 r 23 r 31 r 32 r 33 ] (旋转矩阵) R = \begin{bmatrix}{r_{11}}&{r_{12}}&{r_{13}}\\{r_{21}}&{r_{22}}&{r_{23}}\\{r_{31}}&{r_{32}}&{r_{33}}\\\end{bmatrix} \tag{旋转矩阵} R=r11r21r31r12r22r32r13r23r33()
    平移矩阵
    P = [ x y z ] (平移矩阵) P= \begin{bmatrix}{x}\\{y}\\{z}\\\end{bmatrix} \tag{平移矩阵} P=xyz()

    合并成齐次变换矩阵
    T = [ r 11 r 12 r 13 x r 21 r 22 r 23 y r 31 r 32 r 33 z 0 0 0 1 ] (齐次矩阵) T = \begin{bmatrix}{r_{11}}&{r_{12}}&{r_{13}}&{x} \\{r_{21}}&{r_{22}}&{r_{23}}&{y} \\{r_{31}}&{r_{32}}&{r_{33}}&{z} \\0&0&0&1 \\\end{bmatrix} \tag{齐次矩阵} T=r11r21r310r12r22r320r13r23r330xyz1()

    为什么要这样写,我们可以简单的推导一下,矩阵是支持分块运算的,我们将上面的矩阵进行分块
    T = [ R P 0 1 ] (齐次矩阵) T = \begin{bmatrix}{R}&{P} \\0&1\\\end{bmatrix} \tag{齐次矩阵} T=[R0P1]()
    假设 B A T ^A_BT BAT表示A坐标系到B坐标的齐次变换,B坐标系下的点C坐标为 C B P ^B_CP CBP,求C在A坐标系下的坐标 C A P ^A_CP CAP

    我们将 B A T ^A_BT BAT C B P ^B_CP CBP上,可得
    C A P = [ B A R B A P 0 1 ] [ C B P 1 ] = B A R C B P + B A P ^A_CP= \begin{bmatrix}{^A_BR}&{^A_BP}\\0&1\\\end{bmatrix} \begin{bmatrix}{^B_CP}\\1\\\end{bmatrix} = {^A_BR}{^B_CP}+^A_BP CAP=[BAR0BAP1][CBP1]=BARCBP+BAP
    根据前面学习的平移+旋转复合坐标变换公式,正确的结果如下
    C A P = B A R C B P + B A P ^A_CP = {^A_BR}{^B_CP}+^A_BP CAP=BARCBP+BAP
    你会发现,两者最终结果完全相同,也就是说,我们的平移加旋转复合变换,可以直接用齐次变换矩阵代替。

    1.齐次变换矩阵特性

    接着我们来探索一下齐次变换矩阵的一些特性

    2.1.齐次变换矩阵的符号表示

    一般使用H或者T来表示齐次变换矩阵,矩阵的左上角标明参考坐标系,矩阵左下角标定目标坐标系,比如 B A T ^A_BT BAT表示A坐标系到B坐标系的变换关系(平移+旋转)

    2.2.齐次变换矩阵的逆的几何含义

    就像矩阵的逆一样,齐次变换矩阵也有逆,其的逆也有对应的几何含义,比如

    比如 B A T ^A_BT BAT表示A坐标系到B坐标系的变换关系

    那么

    B A T ^A_BT BAT的逆 B A T − 1 = A B T ^A_BT^{-1}=^B_AT BAT1=ABT表示B坐标系到A坐标系的变换关系

    2.3.齐次变换矩阵的乘法的几何含义

    3.3.1齐次矩阵与平移向量相乘

    齐次矩阵与平移向量相乘,即可求出某个向量在另一坐标系下的表示,上面例子中即是如此。

    3.3.2齐次矩阵与齐次矩阵相乘

    齐次矩阵与齐次矩阵相乘,可以转换不同坐标系之间的关系,比如:
    B A T C B T = C A T ^A_BT^B_CT=^A_CT BATCBT=CAT
    比如当我们有一个六自由度的机械臂,知道每两个相邻关节之间的关系,那么就可以通过其次矩阵相乘的方法求出,关节6在关节0下的位置和姿态:
    1 0 T 2 1 T 3 2 T 4 3 T 5 4 T 6 5 T = 6 0 T ^0_1T^1_2T^2_3T^3_4T^4_5T^5_6T=^0_6T 10T21T32T43T54T65T=60T

    3.练习

    练习小鱼放到了下一节了,毕竟不希望大家用手来算~


    技术交流&&问题求助:

    • 微信公众号及交流群:鱼香ROS

    • 小鱼微信:AiIotRobot

    • QQ交流群:139707339

    • 版权保护:已加入“维权骑士”(rightknights.com)的版权保护计划

    作者介绍:

    我是小鱼,机器人领域资深玩家,现深圳某独脚兽机器人算法工程师一枚
    初中学习编程,高中开始接触机器人,大学期间打机器人相关比赛实现月入2W+(比赛奖金)
    目前在输出机器人学习指南、论文注解、工作经验,欢迎大家关注小鱼,一起交流技术,学习机器人

    更多相关内容
  • 齐次坐标

    千次阅读 2019-08-05 11:49:28
    本文是一些关于齐次坐标只是的整合。 https://www.sohu.com/a/258317807_100007727 http://www.songho.ca/math/homogeneous/homogeneous.html https://blog.csdn.net/VenoBling/article/details/87794400 ...

    本文是一些关于齐次坐标知识的整合。

    https://www.sohu.com/a/258317807_100007727

    http://www.songho.ca/math/homogeneous/homogeneous.html

    https://blog.csdn.net/VenoBling/article/details/87794400

    https://www.cnblogs.com/csyisong/archive/2008/12/09/1351372.htm

    在涉及到计算机视觉的几何问题中,我们经常看到齐次坐标这个术语。本文介绍一下究竟为什么要用齐次坐标?使用齐次坐标到底有什么好处?

    什么是齐次坐标?

    简单的说:齐次坐标就是在原有坐标上加上一个维度:

     

    使用齐次坐标有什么优势?

    齐次坐标的使用能够大大简化在三维空间中的点线面表达方式和旋转平移等操作,具体分如下几点进行说明。

    1. 能非常方便的表达点在直线或平面上

    在2D平面上,一条直线 l 可以用方程 ax + by + c = 0 来表示,该直线用向量表示的话一般记做

    我们知道点p = (x, y)在直线 l 上的充分必要条件是 ax + by + c = 0 如果使用齐次坐标的话,点p的齐次坐标就是

    p'=(x, y, 1)

    那么 ax + by + c = 0 就可以用两个向量的内积(点乘)来表示:

    因此,点p在直线l上的充分必要条件就是 直线l 与p的齐次坐标p'的内积:

    是不是很方便呢!

    同理,我们知道 三维空间的一个平面A可以用方程 ax + by + cz + d = 0 来表示,三维空间的一个点P=(x, y, z) 的齐次坐标 P'=(x, y, z, 1),类似的,点P在空间平面A上可以用两个向量的内积来表示,如下:

    因此,点P在平面A上的充分必要条件就是平面A 向量与P的齐次坐标P'的内积(点乘):

    2. 方便表达直线与直线,平面与平面的交点

    先给出结论,后面再具体解释:

    结论:在齐次坐标下,可以用两个点 p, q 的齐次坐标叉乘结果来表达一条直线 l,也就是

    l = p x q

    也可以使用两条直线 l, m 的叉乘表示他们的交点 x

    x = l x m

    见下面示例图。

    之所以可以这么简洁的表示交点是因为采用了齐次坐标的表示方式。那么这是为什么呢?先介绍一下叉乘(也称叉积、外积)的概念:

    两个向量 a和b 的叉乘仅在三维空间中有定义,写作 a x b.  a x b 是与向量 a, b都垂直的向量,其方向通过右手定则(见下图)决定。

    其模长等于以两个向量为边的平行四边形的面积(见下图)。

    叉乘可以定义为:其中 θ表示a, b的夹角(0°到180°之间),||a||, ||b||是向量a, b的模长,n则是一个与向量a, b所构成的平面垂直的单位向量.

    根据叉乘定义:向量自身叉乘结果为0,因为夹角为0。也就是说三维向量 a x a =0, b x b = 0而点乘(也称点积,内积)的定义是

    a * b = ||a||* ||b|| *cos(θ)

    根据定义:如果两个向量垂直,cos(θ) = 0,点积也为0。好了,经过上面点乘和叉乘定义的铺垫。下面来推导一下上面的结论:

    为什么两条直线 l, m 的叉乘 l x m 等于它们的交点 p,也就是 p = l x m?

    原因如下:首先,根据前面叉乘的定义,l x m 的结果向量(记为 p = l x m) 与 l 和 m都垂直,根据点乘的定义,垂直的向量之间的点积为0,因此可以得到:

    因此,根据前面点在直线上的结论,可以看到p既在直线l 上又在直线m上,所以 p = l x m 是两条直线的交点。此处 p 是齐次坐标。同样的,可以证明,两点p, q 的叉乘 可以表示 过两点的直线l,即 l = p x q。

    3.能够区分一个向量和一个点

    (1)从普通坐标转换成齐次坐标时

    如果(x,y,z)是个点,则变为(x,y,z,1);

    如果(x,y,z)是个向量,则变为(x,y,z,0)

    (2)从齐次坐标转换成普通坐标时

    如果是(x,y,z,1),则知道它是个点,变成(x,y,z);

    如果是(x,y,z,0),则知道它是个向量,仍然变成(x,y,z)

    具体解释见:http://www.cnblogs.com/csyisong/archive/2008/12/09/1351372.html

    4.能够表达无穷远

    每个人都熟悉的知识:在欧几里得空间,一个平面的两条平行直线永不相交。但在投影空间却不是这样的。

    é轨å¨è¿å¤ç¸äº¤

    例如,图里的铁轨随着远离视线而变得越来越窄,最终在无限远处相交于一点 

    欧几里得和笛卡尔空间描述3D或2D几何结构的方式不适用于投影空间(事实上欧几里得空间是投影空间的一个子集)
    在笛卡尔坐标系里用(x,y)来表示一个点,当这个点变得无限远的时候怎么表示呢?可以用(∞,∞)来表示。这样的点在欧几里得空间没有意义。两条平行线在投影空间的无限远处相交,但在欧几里得空间永远也不相交。数学家们已经发现了解决这个问题的方法。
    解决方案:齐次坐标
    奥古斯特·斐迪南·莫比乌斯( August Ferdinand Möbius,1790-1868,德国数学家)引入了齐次坐标,用来在投影空间计算几何图形。齐次坐标是一种用N+1个数字来表示N维坐标系的方法。
    在现有的2D坐标里增加一个w,就形成了2维的齐次坐标。因此,笛卡尔坐标(X,Y)就变成了(x,y,w)。而笛卡尔坐标里的X和Y与齐次坐标里x和y的对应关系可以这样来表示:X=x/w, Y=y/w
    例如,(1,2)变成了(1,2,1)。当(1,2)移向无穷远(∞,∞),即(1,2,0)。因为(1/0,2/0)≈(∞,∞)。所以无穷远的点就可以不用符号“∞”来表示了。
    为什么叫“齐次的”?
    前边已经提到过,将齐次坐标(x,y,w)的两个分量x,y除以w就可以得到笛卡尔坐标(x/w,y/w)。一个重要的事实:
    (1,2,3)=>(1/3,2/3),(2,4,6)=>(2/6,4/6)···(1a,2a,3a)=>(1/3,2/3)
    这些齐次坐标都对应相同的笛卡尔坐标(1/3, 2/3)。因此,这些点是“齐次的(homogeneous,在这里翻译成本质上是相同的)”,因为这些齐次坐标表示都是同一个点(笛卡尔或者欧几里得坐标系)。换句话说,这些齐次坐标是scale invariant(就是说所有分量都乘以一个标量以后表达的值是不变的,标量不变听起来会很奇怪哈)

    证明:两个平行线可以相交
    笛卡尔空间两个平行直线的方程组:

    å¹³è¡ç´çº¿æ¹ç¨

    我们知道在笛卡尔坐标系里面,该方程组无解,因为C ≠ D,如果C=D,两条直线就相同了。

    让我们在透视空间里面,用齐次坐标x/w, y/w代替x ,y,

    å¨è¿éæå¥å¾çæè¿°

    现在我们有一个解(x, y, 0),两条直线相交于(x, y, 0),这个点在无穷远处。

    5. 更简洁的表达欧氏空间变换

    这是齐次坐标最重要的一个优势之一。在以后的学习中你会更加深刻的理解。使用齐次坐标,可以方便的将加法转化为乘法,方便的表达平移。比如我们要完成将2D坐标点x=[u,v]' 平移t=[tu, tv],如果用非齐次方法的话,是用如下的加法

    如果用齐次坐标表示时可以将加法转换为乘法

    在欧氏变换中一般有两种操作:旋转和平移。

    如果我们想要将向量a进行一个标准的欧氏变换,一般是先用旋转矩阵R进行旋转,然后再用向量t进行平移,其结果a' = R*a + t,这样看起来没什么问题。但是,我们知道SLAM中一般都是连续的欧氏变换,所以会有多次连续的旋转和平移,假设我们将向量a进行了两次欧氏变换,分别为R1, t1 和 R2,t2,分别得到:

    b = R1*a + t1, c = R2*b + t2        最终的结果 c = R2*(R1*a + t1) + t2

    显然,这样的变换在经过多次后会变的越来越复杂。其根本原因是上述表达方式并不是一个线性的变换关系。此时,齐次坐标就显示出它的魅力了,如果使用齐次坐标来表达 a' = R*a + t 的话可以写为:

    旋转和平移可以用一个矩阵T来表示,该矩阵T称为变换矩阵(transform matrix),这样欧氏变换就变成了线性关系,进行多次欧氏变换只需要连乘变换矩阵就行了,比如前面的两次欧氏变换使用齐次坐标就可以表示为:

    其中,波浪号代表齐次坐标。一般的,在SLAM中,b = Ta 的形式默认都是齐次坐标。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 学习SLAM-为什么要用齐次坐标齐次坐标使用讲解,内含自动驾驶完整学习资料
  • 使用齐次坐标的众多目的之一是捕捉无穷大的概念。在欧几里德坐标系中,无限是不存在的。 数学家发现,如果使用无穷大的概念,许多几何概念和计算可以大大简化。当我们转向曲线 和曲面设计时,这将变得非常清楚。如果...
  • 齐次坐标概念&&透视投影变换推导 透视投影是3D固定流水线的重要组成部分,是将相机空间中的点从视锥体(frustum)变换到规则观察体(Canonical View Volume)中,待裁剪完毕后进行透视除法的行为。在算法中它是通过透视...
  • 机器人(Robot)是自动执行工作的机器装置。它既可以接受人类指挥,又可以运行预先编排的程序,也可以根据以人工智能技术制定的原则纲领行动。它的任务是协助或取代人类工作的工作,例如生产业、建筑业,或是危险的...
  • 关于齐次坐标的理解

    千次阅读 多人点赞 2018-10-12 14:19:46
    目录 [第一篇:关于齐次坐标的理解(经典)](https://blog.csdn.net/janestar/article/details/44244849)[第二篇:齐次坐标的理解](http://www.cnblogs.com/csyisong/archive/2008/12/09/1351372.html)[第三篇:如何...

    最近又开始看图形学以及渲染相关的内容,再次遇到了齐次坐标的问题,找到两篇文章感觉还不错。转发一下~
    第一篇描述了齐次坐标对于表示无穷远的点的作用,第二篇还描述了其对于点和向量的意义,第三篇描述高维度线性变换与低维度仿射变换的关系,可以辅助理解齐次坐标的意义~

    第一篇:关于齐次坐标的理解(经典)

    https://blog.csdn.net/janestar/article/details/44244849

    先从一个问题开始:两条平行线可以相交于一点么?
    在欧氏几何空间,同一平面的两条平行线不能相交,这是我们都熟悉的一种场景。
    然而,在透视空间里面,两条平行线可以相交,例如:火车轨道随着我们的视线越来越窄,最后两条平行线在无穷远处交于一点。
    在这里插入图片描述
    欧氏空间(或者笛卡尔空间)描述2D/3D几何非常适合,但是这种方法却不适合处理透视空间的问题(实际上,欧氏几何是透视几何的一个子集合),2维笛卡尔坐标可以表为(x,y)。

    如果一个点在无穷远处,这个点的坐标将会(∞,∞),在欧氏空间,这变得没有意义。平行线在透视空间的无穷远处交于一点,但是在欧氏空间却不能,数学家发现了一种方式来解决这个问题。

    这个方法就是:齐次坐标

    简而言之,齐次坐标就是用N+1维来代表N维坐标

    我们可以在一个2D笛卡尔坐标末尾加上一个额外的变量w来形成2D齐次坐标,因此,一个点(X,Y)在齐次坐标里面变成了(x,y,w),并且有 X = x/w Y = y/w

    例如,笛卡尔坐标系下(1,2)的齐次坐标可以表示为(1,2,1),如果点(1,2)移动到无限远处,在笛卡尔坐标下它变为(∞,∞),然后它的齐次坐标表示为(1,2,0),因为(1/0, 2/0) = (∞,∞),我们可以不用”∞"来表示一个无穷远处的点了,哈哈。

    为什么叫齐次坐标?

    我们把齐次坐标转化为笛卡尔坐标的方法是前面n-1个坐标分量分别除以最后一个分量即可。

    转化齐次坐标到笛卡尔坐标的过程中,我们有一个发现,例如:
    在这里插入图片描述

    你会发现(1, 2, 3), (2, 4, 6) 和(4, 8, 12)对应同一个Euclidean point (1/3, 2/3),任何标量的乘积,例如(1a, 2a, 3a) 对应 笛卡尔空间里面的(1/3, 2/3) 。因此,这些点是“齐次的”,因为他们代表了笛卡尔坐标系里面的同一个点。换句话说,齐次坐标有规模不变性。

    证明:两条直线可以相交

    考虑如下方程组:
    在这里插入图片描述

    我们知道在笛卡尔坐标系里面,该方程组无解,因为C ≠ D,如果C=D,两条直线就相同了。

    让我们在透视空间里面,用齐次坐标x/w, y/w代替x ,y,

    在这里插入图片描述

    现在我们有一个解(x, y, 0),两条直线相交于(x, y, 0),这个点在无穷远处。

    小结:齐次坐标在图形学中是一个非常基础的概念,例如3D场景映射到2D场景的过程中

    第二篇:齐次坐标的理解

    http://www.cnblogs.com/csyisong/archive/2008/12/09/1351372.html

    一直对齐次坐标这个概念的理解不够彻底,只见大部分的书中说道“齐次坐标在仿射变换中非常的方便”,然后就没有了后文,今天在一个叫做“三百年 重生”的博客上看到一篇关于透视投影变换的探讨的文章,其中有对齐次坐标有非常精辟的说明,特别是针对这样一句话进行了有力的证明:“齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换。”—— F.S. Hill, JR。

     由于作者对齐次坐标真的解释的不错,我就原封不动的摘抄过来:
    
     对于一个向量v以及基oabc,可以找到一组坐标(v1,v2,v3),使得v = v1 a + v2 b + v3 c          (1)
     而对于一个点p,则可以找到一组坐标(p1,p2,p3),使得 p – o = p1 a + p2 b + p3 c            (2),
    

    从上面对向量和点的表达,我们可以看出为了在坐标系中表示一个点(如p),我们把点的位置看作是对这个基的原点o所进行的一个位移,即一个向量——p – o(有的书中把这样的向量叫做位置向量——起始于坐标原点的特殊向量),我们在表达这个向量的同时用等价的方式表达出了点p:p = o + p1 a + p2 b + p3 c (3)

    (1)(3)是坐标系下表达一个向量和点的不同表达方式。这里可以看出,虽然都是用代数分量的形式表达向量和点,但表达一个点比一个向量需要额外的信息。如果我写出一个代数分量表达(1, 4, 7),谁知道它是个向量还是个点!

    我们现在把(1)(3)写成矩阵的形式:
    v = (v1 v2 v3 0) X (a b c o)
    p = (p1 p2 p3 1) X (a b c o),
    

    这里(a,b,c,o)是坐标基矩阵,右边的列向量分别是向量v和点p在基下的坐标。这样,向量和点在同一个基下就有了不同的表达:3D向量的第4个代数分量是0,而3D点的第4个代数分量是1。像这种这种用4个代数分量表示3D几何概念的方式是一种齐次坐标表示。

    这样,上面的(1, 4, 7)如果写成(1,4,7,0),它就是个向量;如果是(1,4,7,1),它就是个点。下面是如何在普通坐标(Ordinary Coordinate)和齐次坐标(Homogeneous Coordinate)之间进行转换:

    • (1)从普通坐标转换成齐次坐标时

      如果(x,y,z)是个点,则变为(x,y,z,1);

      如果(x,y,z)是个向量,则变为(x,y,z,0)

    • (2)从齐次坐标转换成普通坐标时

      如果是(x,y,z,1),则知道它是个点,变成(x,y,z);

      如果是(x,y,z,0),则知道它是个向量,仍然变成(x,y,z)

    以上是通过齐次坐标来区分向量和点的方式。从中可以思考得知,对于平移T、旋转R、缩放S这3个最常见的仿射变换,平移变换只对于点才有意义,因为普通向量没有位置概念,只有大小和方向.

    而旋转和缩放对于向量和点都有意义,你可以用类似上面齐次表示来检测。从中可以看出,齐次坐标用于仿射变换非常方便。

    此外,对于一个普通坐标的点P=(Px, Py, Pz),有对应的一族齐次坐标(wPx, wPy, wPz, w),其中w不等于零。比如,P(1, 4, 7)的齐次坐标有(1, 4, 7, 1)、(2, 8, 14, 2)、(-0.1, -0.4, -0.7, -0.1)等等。因此,如果把一个点从普通坐标变成齐次坐标,给x,y,z乘上同一个非零数w,然后增加第4个分量w;如果把一个齐次坐标转换成普通坐标,把前三个坐标同时除以第4个坐标,然后去掉第4个分量。

    由于齐次坐标使用了4个分量来表达3D概念,使得平移变换可以使用矩阵进行,从而如F.S. Hill, JR所说,仿射(线性)变换的进行更加方便。由于图形硬件已经普遍地支持齐次坐标与矩阵乘法,因此更加促进了齐次坐标使用,使得它似乎成为图形学中的一个标准。

    以上很好的阐释了齐次坐标的作用及运用齐次坐标的好处。其实在图形学的理论中,很多已经被封装的好的API也是很有研究的,要想成为一名专业的计算机图形学的学习者,除了知其然必须还得知其所以然。这样在遇到问题的时候才能迅速定位问题的根源,从而解决问题。

    第三篇:如何通俗的解释仿射变换?

    https://www.matongxue.com/madocs/244.html
    在这里插入图片描述

    展开全文
  • 为什么要引入齐次坐标齐次坐标的意义(一)

    万次阅读 多人点赞 2019-07-09 19:43:30
    问题:两条平行线可以相交于一点 在欧氏几何空间,同一平面的两条平行线不能相交,这是我们都熟悉的一种场景。 然而,在透视空间里面,两条平行线可以相交,例如:...几何的一个子集合),2维笛卡尔坐标可以表示为...

    问题:两条平行线可以相交于一点

    在欧氏几何空间,同一平面的两条平行线不能相交,这是我们都熟悉的一种场景。

    然而,在透视空间里面,两条平行线可以相交,例如:火车轨道随着我们的视线越来越窄,最后两条平行线在无穷远处交于一

    点。

    欧氏空间(或者笛卡尔空间)描述2D/3D几何非常适合,但是这种方法却不适合处理透视空间的问题(实际上,欧氏几何是透视

    几何的一个子集合),2维笛卡尔坐标可以表示为(x,y)。

    如果一个点在无穷远处,这个点的坐标将会(∞,∞),在欧氏空间,这变得没有意义。

    平行线在透视空间的无穷远处交于一点,但是在欧氏空间却不能,数学家发现了一种方式来解决这个问题。

     

    方法:齐次坐标

    简而言之,齐次坐标就是用N+1维来代表N维坐标

    我们可以在一个2D笛卡尔坐标末尾加上一个额外的变量w来形成2D齐次坐标,因此,一个点(X,Y)在齐次坐标里面变成了

    (x,y,w),并且有

    X = x/w

    Y = y/w

    例如,笛卡尔坐标系下(1,2)的齐次坐标可以表示为(1,2,1),如果点(1,2)移动到无限远处,在笛卡尔坐标下它变为

    (∞,∞),然后它的齐次坐标表示为(1,2,0),因为(1/0, 2/0) = (∞,∞),我们可以不用”∞"来表示一个无穷远处的点了,哈哈。

     

    为什么叫齐次坐标?

    我们把齐次坐标转化为笛卡尔坐标的方法是前面n-1个坐标分量分别除以最后一个分量即可。

     

    转化齐次坐标到笛卡尔坐标的过程中,我们有一个发现,例如:

    你会发现(1, 2, 3), (2, 4, 6) 和(4, 8, 12)对应同一个Euclidean point (1/3, 2/3),任何标量的乘积,例如(1a, 2a, 3a) 对应 笛卡尔空间里面的(1/3, 2/3) 。因此,这些点是“齐次的”,因为他们代表了笛卡尔坐标系里面的同一个点。换句话说,齐次坐标有规模不变性。

    证明:两条直线可以相交

    考虑如下方程组:

    我们知道在笛卡尔坐标系里面,该方程组无解,因为C ≠ D,如果C=D,两条直线就相同了。 让我们在透视空间里面,用齐次坐标x/w, y/w代替x ,y

    现在我们有一个解(x, y, 0),两条直线相交于(x, y, 0),这个点在无穷远处。

    齐次坐标的意义:

           使用齐次坐标,可以表示 平行线在透视空间的无穷远处交于一点。在欧氏空间,这变得没有意义,所以欧式坐标不能表示。

    即:齐次坐标可以表示无穷远处的点。例如:

    如果点(1,2)移动到无限远处,在笛卡尔坐标下它变为(∞,∞),然后它的齐次坐标表示为(1,2,0),因为(1/0, 2/0) =

    (∞,∞),我们可以不用”∞"来表示一个无穷远处的点了。

     

    附:为什么要引入齐次坐标,齐次坐标的意义(二) https://blog.csdn.net/zhuiqiuzhuoyue583/article/details/95230246

     

    参考:http://www.songho.ca/math/homogeneous/homogeneous.html

               https://www.zhihu.com/question/59595799

     

    展开全文
  • 齐次坐标的理解(2)

    2021-08-10 00:07:50
    接上篇文章齐次坐标的理解(1): “齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换。”——F.S. Hill, JR。 1、齐次变换的两种解读 所以由...
  • 机器人技术视频讲座(64讲)-机器人技术06-坐标变换,齐次坐标变换zip,机器人技术视频讲座(64讲)-机器人技术06-坐标变换,齐次坐标变换
  • 为什么要引入齐次坐标齐次坐标的意义(二)

    万次阅读 多人点赞 2019-07-09 20:10:05
    这种方法就是“升维”,引入“齐次坐标”,将图像从平面2D坐标变成3D坐标。我们看看平移变换的矩阵形式: 将其升维,变成3维,上式就可以表示成: 这是个非常优美的地方,学习过矩阵乘法的同学可以算一下右边的式子...
  • 动手学坐标变换、齐次矩阵生成、(四元数+欧拉角)、齐次坐标运算、ROS、ROS2
  • OpenGL 之 齐次坐标

    2022-03-25 10:45:42
    为什么要引入齐次坐标 为什么要引入齐次坐标 为什么要引入齐次坐标2 为什么要引入齐次坐标3 齐次坐标的意义 齐次坐标的作用,把各种变换都统一了起来,即 把缩放,旋转,平移等变换都统一起来,都表示成一连串的矩阵...
  • 齐次坐标的理解

    2019-11-02 09:46:41
    一直对齐次坐标这个概念的理解不够彻底,只见大部分的书中说道“齐次坐标在仿射变换中非常的方便”,然后就没有了后文,今天在一个叫做“三百年 重生”的博客上看到一篇关于透视投影变换的探讨的文章,其中有对齐...
  • 齐次坐标变换

    2020-08-27 11:38:39
    一直对齐次坐标这个概念的理解不够彻底,博客上看到一篇关于透视投影变换的探讨的文章,其中有对齐次坐标有非常精辟的说明。     由于作者对齐次坐标真的解释的不错,我就原封不动的摘抄过来:&...
  • 缩放 矩阵缩放 该对角阵称为缩放矩阵 对称 切变 选择 齐次坐标 平移变换 向量平移不变性 两个点的中点
  • 定义: 如果点 P 的直角坐标是( x, y),那 么称( x1 , x2 , x3 )是 P 的齐次坐标,其中 x1 , x2 , x3 满足 x = x1 x3 , y = x2 x3 , x3 ≠0. 这种坐标有啥好处?有几个好处 1)可以
  • 为什么要引入齐次坐标?什么是齐次坐标系?齐次坐标系的引入是为了将坐标的平移、旋转、缩放及透视投影等可表示为单一矩阵与向量相乘的一般向量运算。从而在进行图形处理时简单有效。如以矩阵表达式来计算这些变换时...
  • 理解齐次坐标

    2020-07-05 21:14:37
    齐次坐标的引入 在欧式空间里,两条公面的平行线无法相交,但是在投影空间(Projective Space)里不是这样。一个直观的表示如下:两条轨道的间距随着视线变远而逐渐变小,直到在无限远处相交。 在欧式空间里采用...
  • 术语: ...虽然四元数跟齐次坐标很像,都是4D矢量,通常用(X,Y,Z,W)来表示,但是,四元数和齐次坐标是不同的概念,使用的领域也不同。 这篇文章跟“四元数”没有一毛钱关系。 类比2D: 了解3D..
  • 文章目录1 、问题:两条平行线可以相交于一点2、方法:齐次坐标3、为什么叫齐次坐标4、证明:两条直线可以相交 写在前面:齐次坐标就是用N+1维来代表N维坐标的一种形式,具有尺度不变性。 在欧氏几何空间中每一个点...
  • 齐次坐标就是在欧氏空间表示的基础上增加一个额外的变量w来表示原本的坐标(X,Y),并同时需要令x = Xw , y = Yw ,最终得到齐次坐标(x, y, w),w为非0变量,只有点在无穷远处时才等于0 而当该点在二维空间的

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,784
精华内容 9,113
关键字:

齐次坐标

友情链接: InputKit-master.zip