首页
学习
活动
专区
圈层
工具
发布

从零开始一起学习SLAM | 为什么要用齐次坐标?

同理,我们知道 三维空间的一个平面A可以用方程 ax + by + cz + d = 0 来表示,三维空间的一个点P=(x, y, z) 的齐次坐标 P’=(x, y, z, 1),类似的,点P在空间平面...先介绍一下叉乘(也称叉积、外积)的概念: 两个向量 a和b 的叉乘仅在三维空间中有定义,写作 a x b a x b 是与向量 a, b都垂直的向量,其方向通过右手定则决定。...也就是说三维向量 a x a =0, b x b = 0而点乘(也称点积,内积)的定义是 a * b = ||a||* ||b|| *cos(θ) 根据定义:如果两个向量垂直,cos(θ) = 0,点积也为...(留做作业) 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:

2.3K10

变换(Transform)(1)-向量、矩阵、坐标系与基本变换

向量向量的点积运算向量的点积运算可以用来判断两个向量的方向如果两个向量的点积大于0,则它们的夹角小于90度,即它们的方向趋于一致。...向量的叉积运算注意运算结果的方向与坐标系的类型有关系,如果是左手系需要用左手定则判断结果向量的方向,右手系则要用右手定则。...叉积一个很常见的应用则是判断一个点是否在三角形内部:确定三角形的三个顶点坐标,分别记为 P1(x1, y1, z1), P2(x2, y2, z2), P3(x3, y3, z3)。...计算点 P(x, y, z) 到三角形三条边的叉积向量:N1 = (P - P1) × V1N2 = (P - P2) × V2N3 = (P - P3) × V34....齐次坐标变换矩阵扩展到 后,为了实现变换(矩阵乘法),向量也需要扩展到四维向量,也就是齐次坐标(homogeneous coordinate)。

93610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【计算机视觉】二、图像形成:1、向量和矩阵的基本运算:线性变换与齐次坐标

    齐次坐标表示   在使用齐次坐标表示时,我们将n维欧几里得空间中的点 (x_1, x_2, \dots, x_n) 表示为 (n+1) 维的齐次坐标形式 (x_1, x_2, \dots, x_n,...; 将3D点用齐次坐标 \begin{bmatrix}x\\y\\z\\1\end{bmatrix} 表示,即在笛卡尔坐标 \begin{bmatrix}x\\y\\z\end{bmatrix} 的基础上添加一个...叉积算子 两条直线的表示: 给定两条直线 \tilde{l}_1 和 \tilde{l}_2 的齐次坐标表示。...{x}_2, \tilde{y}_2, \tilde{a}_2) \tilde{x} = \tilde{l}_1 \times \tilde{l}_2 = 这种利用直线的齐次坐标表示求交点的方法,可以自然地推广到三维空间...同理,在三维情况下,交点坐标为两个直线或平面的齐次坐标外积。 5.

    50410

    3D图形学线代基础

    在二维坐标系 XY 中存在一点 A 坐标为(x1,y1),我们可以把该二维坐标系放置在某个虚拟三维坐标系的特定位置,比如三维空间 W 轴 为 1 的位置,此时在这个虚拟三维坐标系中 A 点又可以表示为(...x1,y1,1);新增一个额外维度之后 A 点坐标可以表示为 (x1*w,y1*w,w) 的形式,即把原有坐标值乘以新增坐标值 w;同理已知齐次坐标转换为原有坐标时,只需要把齐次坐标除以新增坐标值 w...A 点坐标(x1,y1)表示为 (x1*w,y1*w,w) 形式后随着 w 取值的变化有无数种形式,这些都是 A 点坐标(x1,y1)的齐次坐标。...先把 A 点坐标转换为齐次坐标(x1,y1,1),沿着 X 轴正方向平移并不会改变 Y 轴坐标,而 X 轴坐标系为原有坐标加上平移距离,因此得到 B 点齐次坐标,如下: ?...这也就是为什么处理三维问题的 ThreeJS 框架中会存在四维向量 Vector4 和四维矩阵 Matrix4 的原因了;因为三维坐标的齐次坐标为四维坐标,而四维齐次坐标对应的变换矩阵为四维矩阵。

    2.5K31

    【愚公系列】2023年08月 WEBGL专题-3D基础

    这些概念通常都是以向量的形式来表示的,视点和目标点可以表示为三维坐标系中的两个点,而上方向则表示为一个向量。...标准化设备坐标系是一个正方形区域,其范围从(-1, -1, -1)到(1, 1, 1),其中x、y和z坐标都在-1到1之间。...叉积是向量运算中的一种,表示两个向量相乘的结果是一个垂直于这两个向量的向量。...WebGL中的叉积函数,即cross函数,可以用于计算两个三维向量的叉积。叉积是一个向量,其方向垂直于两个向量所在的平面,大小等于这两个向量所在平面的面积。...可以使用cross函数计算出两个切向量,以及它们的叉积得到表面的法向量,再用法向量来计算出副切线。 计算旋转轴和旋转角度:在三维图形的旋转中,需要计算旋转轴和旋转角度。

    18600

    万字长文|线性代数的本质课程笔记完整合集!

    而该矩阵与一个向量[x,y]相乘的结果,相当于对该向量做了一次线性变换,把向量移动到新平面中对应的位置: ?...叉积是通过两个三维向量生成一个新的向量,新的向量满足下面三个条件: 1)垂直于这两个向量所张成的平面 2)其长度等于这两个向量所形成的四边形的面积 3)其方向满足右手定则 ? 右手定则如下: ?...所以,问题其实变换为了,找到一个向量p,使得p和某个向量(x,y,z)求点积的结果,等于对应的三维方阵行列式的值(即(x,y,z)和向量u、v所组成的平行六面体的有向体积)。 ?...底面积可以认为是v和w所组成的平行四边形的面积,高的话是(x,y,z)在垂直于v和w所张成的平面的方向上的分量的长度。 ?...那么: 点积 = (x,y,z)在p上投影的长度 * p的长度 体积 = v和w所组成的平行四边形的面积 * (x,y,z)在垂直于v和w所张成的平面的方向上的分量的长度 根据二者相等,可以认为p的长度是

    86520

    干货 | 线性代数的本质课程笔记完整合集

    而该矩阵与一个向量[x,y]相乘的结果,相当于对该向量做了一次线性变换,把向量移动到新平面中对应的位置: ?...叉积是通过两个三维向量生成一个新的向量,新的向量满足下面三个条件: 1)垂直于这两个向量所张成的平面 2)其长度等于这两个向量所形成的四边形的面积 3)其方向满足右手定则 ? 右手定则如下: ?...所以,问题其实变换为了,找到一个向量p,使得p和某个向量(x,y,z)求点积的结果,等于对应的三维方阵行列式的值(即(x,y,z)和向量u、v所组成的平行六面体的有向体积)。 ?...底面积可以认为是v和w所组成的平行四边形的面积,高的话是(x,y,z)在垂直于v和w所张成的平面的方向上的分量的长度。 ?...那么: 点积 = (x,y,z)在p上投影的长度 * p的长度 体积 = v和w所组成的平行四边形的面积 * (x,y,z)在垂直于v和w所张成的平面的方向上的分量的长度 根据二者相等,可以认为p的长度是

    81450

    万字长文 | 线性代数的本质课程笔记完整合集!

    而该矩阵与一个向量[x,y]相乘的结果,相当于对该向量做了一次线性变换,把向量移动到新平面中对应的位置: ?...叉积是通过两个三维向量生成一个新的向量,新的向量满足下面三个条件: 1)垂直于这两个向量所张成的平面 2)其长度等于这两个向量所形成的四边形的面积 3)其方向满足右手定则 ? 右手定则如下: ?...所以,问题其实变换为了,找到一个向量p,使得p和某个向量(x,y,z)求点积的结果,等于对应的三维方阵行列式的值(即(x,y,z)和向量u、v所组成的平行六面体的有向体积)。 ?...底面积可以认为是v和w所组成的平行四边形的面积,高的话是(x,y,z)在垂直于v和w所张成的平面的方向上的分量的长度。 ?...那么: 点积 = (x,y,z)在p上投影的长度 * p的长度 体积 = v和w所组成的平行四边形的面积 * (x,y,z)在垂直于v和w所张成的平面的方向上的分量的长度 根据二者相等,可以认为p的长度是

    72820

    三维重建3-两视图几何

    实际上,由于噪声的存在,上面图中两条光线很可能不相交,因此实际求解过程又要用到最优化的技术,下面进行具体的数学分析 1.2 数学分析 首先,我们还是回到基本的模型 这里面,坐标都是齐次坐标,因此尺度是不确定的...关于这一点,你齐次坐标的知识,你可以再看看我在66. 三维重建1——相机几何模型和投影矩阵中的介绍。...两个向量叉积结果是一个向量,且这个新向量和原始的两个向量都正交 如果两个向量的方向一致,那么它们叉积结果向量的长度为0 两个向量点积的结果是一个数。...注意这里依然用齐次坐标来表达,所以E是一个3x3的矩阵,而l'则用一个3x1的向量来表达。...o'旋转x-t点,旋转矩阵为R,这样就得到了x'点 很容易知道x, t, x'这3个向量是共面的(记住,点同时也代表从坐标原点指向它的向量) 记住我们之前学过的关于向量的几个性质: 两个向量叉积结果是一个向量

    1.1K20

    线性代数的本质课程笔记完整合集

    而该矩阵与一个向量[x,y]相乘的结果,相当于对该向量做了一次线性变换,把向量移动到新平面中对应的位置: ?...叉积是通过两个三维向量生成一个新的向量,新的向量满足下面三个条件: 1)垂直于这两个向量所张成的平面 2)其长度等于这两个向量所形成的四边形的面积 3)其方向满足右手定则 ? 右手定则如下: ?...所以,问题其实变换为了,找到一个向量p,使得p和某个向量(x,y,z)求点积的结果,等于对应的三维方阵行列式的值(即(x,y,z)和向量u、v所组成的平行六面体的有向体积)。 ?...底面积可以认为是v和w所组成的平行四边形的面积,高的话是(x,y,z)在垂直于v和w所张成的平面的方向上的分量的长度。 ?...那么: 点积 = (x,y,z)在p上投影的长度 * p的长度 体积 = v和w所组成的平行四边形的面积 * (x,y,z)在垂直于v和w所张成的平面的方向上的分量的长度 根据二者相等,可以认为p的长度是

    1.3K21

    学习「线性代数」看哪篇?推荐这篇,超级棒!

    而该矩阵与一个向量[x,y]相乘的结果,相当于对该向量做了一次线性变换,把向量移动到新平面中对应的位置: ?...叉积是通过两个三维向量生成一个新的向量,新的向量满足下面三个条件: 1)垂直于这两个向量所张成的平面 2)其长度等于这两个向量所形成的四边形的面积 3)其方向满足右手定则 ? 右手定则如下: ?...所以,问题其实变换为了,找到一个向量p,使得p和某个向量(x,y,z)求点积的结果,等于对应的三维方阵行列式的值(即(x,y,z)和向量u、v所组成的平行六面体的有向体积)。 ?...底面积可以认为是v和w所组成的平行四边形的面积,高的话是(x,y,z)在垂直于v和w所张成的平面的方向上的分量的长度。 ?...那么: 点积 = (x,y,z)在p上投影的长度 * p的长度 体积 = v和w所组成的平行四边形的面积 * (x,y,z)在垂直于v和w所张成的平面的方向上的分量的长度 根据二者相等,可以认为p的长度是

    95920

    SFM原理简介「建议收藏」

    设P在世界坐标系中的坐标为X,P到光心的垂直距离为s(即上文中的Z),在像面上的坐标为x,世界坐标系与相机坐标系之间的相对旋转为矩阵R(R是一个3行3列的旋转矩阵),相对位移为向量T(3行1列),则...s x = K [ R X + T ] sx=K\begin{bmatrix} RX + T \end{bmatrix} sx=K[RX+T​] 其中RX+T 即为P在相机坐标系下的坐标,使用齐次坐标改写上式为...极线约束与本征矩阵 假设在世界坐标系中有一点p,坐标为X,它在1相机中的像为 x 1 x_1 x1​,在2相机中的像为 x 2 x_2 x2​(注意 x 1 x_1 x1​和 x 2 x_2 x2​为齐次坐标...x 2 , x_2^, x2,​和 T 2 T_2 T2​都是三维向量,它们做叉积之后得到另外一个三维向量 T 2 ^ x 2 , \hat{T_2}x_2^, T2​^​x2,​(其中 T 2...Google的一个开源项目,用来求解非线性最小二次问题的库,因此可以用来求解BA。

    2.7K20

    POSIT算法的原理–opencv 3D姿态估计

    算法流程: 假设待求的姿态,包括旋转矩阵R和平移向量T,分别为 透视投影变换为: 上式中的f是摄像机的焦距,它的具体值并不重要,重要的是f与x和y之间的比例,根据摄像头内参数矩阵的fx和fy可以得到这个比例...实际的运算中可直接令f=1,但是相应的x和y也要按照比例设定。...比如,对于内参数为[fx,fy,u0,v0]的摄像头,如果一个像素的位置是(u,v),则对应的x和y应为 设世界坐标系中的一点为(Xw,Yw,Zw),则 有必要再解释一下旋转矩阵R和平移向量T的具体意义...如果第4个点与前三个点共面,那么该点的“齐次坐标”就可以被其他三个点的“齐次坐标”线性表示,而迭代方程的右侧使用的就是齐次坐标,这样由第四个点得到的方程就不是独立方程了。...因此我们可以求出s,进而求得R1和R2以及Tz=f/s: 有了R1和R2就可以求出R3,后者为前两个向量的叉积(两两垂直的单位向量)。

    1.7K10

    向量的点乘和叉乘

    【叉乘】 向量积,数学中又称外积、叉积,物理中称矢积、叉乘,是一种在向量空间中向量的二元运算。与点积不同,它的运算结果是一个向量而不是一个标量。并且两个向量的叉积与这两个向量和垂直。...表示方法 两个向量a和b的叉积写作a×b(有时也被写成a∧b,避免和字母x混淆)。...定义 设a=(X1,Y1,Z1),b=(X2,Y2,Z2), a×b=(Y1Z2-Y2Z1,Z1X2-Z2X1,X1Y2-X2Y1) 向量积可以被定义为: 模长:(在这里θ表示两向量之间的夹角(共起点的前提下...而c的方向垂直于a与b所决定的平面,c的指向按右手定则从a转向b来确定。 *运算结果c是一个伪向量。这是因为在不同的坐标系中c可能不同。...求解光照的核心在于求出物体表面法线,而叉积运算保证了只要已知物体表面的两个非平行矢量(或者不在同一直线的三个点),就可依靠叉积求得法线。

    5.5K10

    OpenGL学习笔记 (三)- 坐标系与顶点变换

    另外,对于原先用于变换的三阶方阵,我们可以等价的改写为 除此之外,我们还可以使用齐次坐标来区分点和向量。若一个齐次坐标的w分量为0,即 ,那么这个齐次坐标就可以视为代表一个三维空间向量。...这里我们需要规定,LookAt矩阵最终的视野一定是“正”的,也就是说不会左右“倾斜”,因此我们需要给出代表上方向的向量up。由此我们就可以使用叉积计算左方向的向量 (注意叉积的顺序)。...之前我们已经介绍过齐次坐标在仿射变换中的应用,现在简单介绍齐次坐标在投影几何中的应用。仿射变换中,齐次坐标的w分量通常是1。...yOz平面的投影(图源Reference) 最终投影点的坐标是 。可以看到,在投影的过程中x_e和y_e都需要除以-z_e。...NDC坐标的z分量和x、y分量的映射是不同的: 显然这是一个反比例函数,并不是线性的。

    4.4K21

    线性代数的本质课程笔记(中)-点积和叉积

    叉积是通过两个三维向量生成一个新的向量,新的向量满足下面三个条件: 1)垂直于这两个向量所张成的平面 2)其长度等于这两个向量所形成的四边形的面积 3)其方向满足右手定则 右手定则如下: 接下来看看叉积的具体计算...,求行列式得到的是叉积后向量的长度,叉积得到的向量的坐标是下图中的三个“某些数”。...,y,z)求点积的结果,等于对应的三维方阵行列式的值(即(x,y,z)和向量u、v所组成的平行六面体的有向体积)。...底面积可以认为是v和w所组成的平行四边形的面积,高的话是(x,y,z)在垂直于v和w所张成的平面的方向上的分量的长度。...那么: 点积 = (x,y,z)在p上投影的长度 * p的长度 体积 = v和w所组成的平行四边形的面积 * (x,y,z)在垂直于v和w所张成的平面的方向上的分量的长度 根据二者相等,可以认为p的长度是

    1.9K20

    【笔记】《游戏编程算法与技巧》1-6

    对应的4x4矩阵称为仿射变换矩阵, 此时扩展出来的4维向量坐标称为齐次坐标....注意运算最后的齐次坐标的w分量应该总保持为0或1 w为0的向量表示3D方向, w为1的向量表示3D的点 四种最基本的三维变换: 缩放: 只在需要缩放的轴对应的对角线上设置倍率, 其他位置保持0....或看为坐标系变换, 这里原本是(0, 1)的y轴变换为了(1, 1), 因此整个图形发生了倾斜: 平移: 借助了齐次坐标的特性, 行向量左乘下面的矩阵后, 如果w为1也就是3D的点的话, 矩阵最下面一行就会起到平移点的作用...相机坐标系: 将整个场景(世界)移动到以相机坐标为原点的坐标系上, 相机的上方朝向为y轴, 前向和其二的叉乘为z(或-z)和x轴....而z分量本身则需要保持近似线性插值, 联立方程将近平面和远平面的深度投影到0-1从而求解出第三行的两个矩阵系数. 最后将这个视体进行一次正交投影映射到(1, -1)即可.

    4.7K31

    SLAM知识点整理

    SLAM基础 点与向量 在二维坐标系中,点的表示(x,y);在三维坐标系中,点的表示(x,y,z) 有关向量的内容可以参考线性代数整理 ,这里不再赘述。...这里来看一下向量的外积,又叫叉乘 外积可以表示两个向量的旋转 a到b的旋转可以由向量w来描述。...比如说 这里表示的是齐次坐标 旋转和平移后到 ,那么 和 的关系就只是 和两个变换矩阵相乘,大大简化了计算量。之后以 来表示,这里的a和b不再是三维空间向量,而表示一个齐次坐标。...当我们拿到一些数据的时候,比如说z观测数据,u机器人的运动,我们要如何求解x的定位问题和y的建图问题。求解这两个问题,我们统称为状态估计问题。...我们来举一个例子,三维空间向量进行叉积运算,构成了李代数。

    1.4K30

    【愚公系列】2023年08月 3D数学-向量和标量

    叉积:叉积是一种向量积,用于计算两个向量所确定的平面的法向量,表示为 \vec{a}\times\vec{b} ,计算公式为: \vec{a}\times\vec{b}=[a_2 b_3-a_3 b_2...,a_3 b_1-a_1 b_3,a_1 b_2-a_2 b_1] 叉积计算结果是一个向量,可用于计算两个向量所确定平面的法向量的方向和大小。...例如,在平面直角坐标系中,向量 \vec{AB} 的坐标表示为 (x_B-x_A,y_B-y_A) 。其中 A 为向量的起点, B 为向量的终点。...三角形的重心、垂心、外心等可以用向量表示求解。 向量可以用向量点乘和向量叉乘来计算它们的夹角和在平面或空间中的面积和体积。...具体来说,如果 v 是一个三维向量 [x, y, z],那么 kv 就是一个新的向量 [kx, ky, kz],其中 kx、ky 和 kz 分别是 x、y 和 z 与标量 k 的乘积。

    18710

    【愚公系列】2023年08月 3D数学-叉积

    前言 叉积,也称向量积或叉乘,是两个三维向量之间的一种运算,表示为 \vec{a} \times \vec{b} ,结果是另一个向量,垂直于 \vec{a} 和 \vec{b} 所在的平面,方向由右手定则确定...我们可以通过向量的坐标来推导叉积的计算公式。...电磁学中的磁场:叉积可用于计算磁场强度和磁场线的方向。 三维图形学中的向量旋转:叉积可用于计算向量绕轴旋转后的新向量。 机器人学中的机械臂运动:叉积可用于描述机械臂的运动和姿态。...二、叉积函数封装 以下是叉积函数的封装代码: def cross_product(vector1, vector2): """ 计算两个三维向量的叉积 :param vector1...: 三维向量,格式为[x1, y1, z1] :param vector2: 三维向量,格式为[x2, y2, z2] :return: 返回叉积结果,格式为[x, y, z]

    23500
    领券