世界坐标系

深度相机生成点云数据的原理

匿名 (未验证) 提交于 2019-12-03 00:13:02
2019年8月4日 16:26:40 RGB-D 图像中的rgb图片提供了像素坐标系下的x,y坐标,而深度图直接提供了相机坐标系下的$Z$坐标,也就是相机与点的距离。 根据 RGB-D 图像的信息和相机的内参,可以计算出任何一个像素点在相机坐标系下的坐标。 根据 RGB-D 图像的信息和相机的内参与外参,可以计算出任何一个像素点在世界坐标系下的坐标。 相机视野范围内,相机坐标系下的障碍物点的坐标,就是点云传感器数据,也就是相机坐标系下的点云数据。点云传感器数据可以根据 RGB-D 图像提供的坐标与相机内参算出来。 所有世界坐标系下的障碍物点的坐标,就是点云地图数据,也就是世界坐标系下的点云数据。点云地图数据可以根据RGB-D 图像提供的坐标与相机内参和外参算出来。 相机坐标系下的点云数据是根据rgb图像提供的像素坐标系下的x,y坐标(即公式中的u,v)和相机内参就能求出相机坐标系下的$X$,$Y$坐标值。同时深度图直接提供相机坐标系下的$Z$坐标值。进而得到相机坐标系下的坐标$P=\begin{bmatrix} X\ Y\ Z \end{bmatrix}$,相机坐标系下的障碍物点的坐标,就是点云传感器数据,也就是相机坐标系下的点云数据。 相机坐标系$P$与像素坐标系$P_{uv}$下的点的坐标的关系公式: $$ ZP_{uv}=Z\begin{bmatrix} u\ v\ 1

典型坐标系-介绍

巧了我就是萌 提交于 2019-11-29 19:22:28
当你选中一个原点,定义好x,y,z三个坐标轴之后,那么世界位置中的任何一个地方都是可以定义的。但实际情况我们会这样做吗?例如你在布置一间房子的时候,你可能会描述我要把这个桌子放在墙角(2,3)米的地方。你能说我放在地球多少经纬度多少度,多少分,多少秒的地方吗?很显然其他的坐标系都有存在的价值,例如局部坐标系,世界坐标系,物体坐标系,摄像机坐标系,惯性坐标系。在具体的情况下,会有具体的坐标系适合这种情况。 世界坐标系 。世界坐标系应该是大家最熟悉的坐标系,也就是我们所说的经纬度,然后再加上高程。世界坐标系描述了地球上每个点的位置。同时世界坐标系也是我们平常人关心的最大范围,用的最多的坐标系。 物体坐标系 。从字面上理解就是这个物体自己的坐标系。这可能会让有些人难以理解,一个物体在世界坐标系里面有一个位置不就行了,自己还要什么坐标系。但做三维模型的技术人员一定对物体坐标系理解的很透彻。例如一只羊,以羊的心脏为原点,头,眼睛四肢,尾巴等部分都应该在什么位置。这样就明白多了吧。当这只羊咀嚼时,行走时,各个部分应该如何变换自己的位置。像这些数据肯定不能用世界坐标系表示。当这只羊置身于其他坐标系,例如世界坐标系时,再把各个部分转换成世界坐标系上的值,显示在大环境中。而物体坐标系也是一种局部坐标系。 摄像机坐标系 。摄像机坐标系是和观察者密切相关的坐标系。摄像机坐标系和屏幕坐标系相似

【计算机视觉】相机成像模型四个坐标系的转换(世界坐标系,相机坐标系,图像坐标系,像素坐标系)

為{幸葍}努か 提交于 2019-11-29 19:22:04
世界坐标系,相机坐标系,图像坐标系,图像像素坐标系这四个坐标系的转换实质就是刚体变换、透视投影和数字化图像这几个成像里的步骤。 一、世界坐标系到相机坐标系 世界坐标系,也称为测量坐标系,它是一个三维直角坐标系(xw,yw,zw)。在世界坐标系中可以描述相机和待测物体的空间位置。世界坐标系的位置根据实际情况自行确定。 相机坐标系也是一个三维直角坐标系(xc,yc,zc)。相机坐标系的原点是镜头的光心,x、y轴分别与相面的两边平行,z轴为镜头的光轴,与像平面垂直。 世界坐标系到相机坐标系的变换是刚体变换,也就是只改变物体的空间位置(平移)和朝向(旋转),而不改变物体的形状。用旋转矩阵R和平移向量t可以表示这种变换。 在齐次坐标下,旋转矩阵R是正交矩阵,可通过Rodrigues变换转换为只有三个独立变量的旋转向量。因此刚体变换用6个参数就可以表示(3个旋转向量,3个平移向量),这6个参数就是相机的外参。相机外参决定了空间点从世界坐标系到相机坐标系的变换。 齐次坐标下可表示为 二、相机坐标系到图像坐标系 从相机坐标系到图像坐标系,属于透视投影关系,从3D转换到2D。 图像坐标系也叫平面坐标系,用物理单位表示像素的位置,单位是mm。坐标原点为摄像机光轴与图像坐标系的交点位置。 根据相似三角原理 在齐次坐标下表示为 这一步完成了相机坐标系到理想的图像坐标系的转换

世界坐标系、相机坐标系、图像坐标系、像素坐标系之间的转换

微笑、不失礼 提交于 2019-11-29 19:21:47
世界坐标系、相机坐标系、图像坐标系、像素坐标系之间的转换 图像处理、立体视觉等方向常常涉及到四个坐标系: 世界坐标系、相机坐标系、图像坐标系、像素坐标系 。例如下图: 构建世界坐标系只是为了更好的描述相机的位置在哪里,在双目视觉中一般将世界坐标系原点定在左相机或者右相机或者二者 X 轴方向的中点。 接下来的重点,就是关于这几个坐标系的转换。也就是说,一个现实中的物体是如何在图像中成像的。 1.1 世界坐标系与相机坐标系 于是,从世界坐标系到相机坐标系,涉及到旋转和平移(其实所有的运动也可以用旋转矩阵和平移向量来描述)。绕着不同的坐标轴旋转不同的角度,得到相应的旋转矩阵,如下图所示: 那么从世界坐标系到相机坐标系的转换关系如下所示: 1.2 相机坐标系与图像坐标系 从相机坐标系到图像坐标系,属于透视投影关系,从 3D 转换到 2D 。 此时投影点 p 的单位还是 mm ,并不是 pixel ,需要进一步转换到像素坐标系。 1.3 图像坐标系与像素坐标系 像素坐标系和图像坐标系都在成像平面上,只是各自的原点和度量单位不一样。图像坐标系的原点为相机光轴与成像平面的交点,通常情况下是成像平面的中点或者叫 principal point 。图像坐标系的单位是 mm ,属于物理单位,而像素坐标系的单位是 pixel ,我们平常描述一个像素点都是几行几列。所以这二者之间的转换如下:其中 dx 和

惯性坐标系、物体坐标系、世界坐标系

穿精又带淫゛_ 提交于 2019-11-29 19:21:28
一、坐标系的区别 1.世界坐标系 2.物体坐标系 3.惯性坐标系 二、坐标系之间的联系 一、坐标系的区别 1.世界坐标系 世界坐标系是一个特殊的坐标系,它建立了描述其他坐标系所需要的参考系。也就是说,可以用世界坐标系去描述其他所有坐标系或者物体的位置。所以有很多人定义世界坐标系是“我们所关心的最大坐标系”,通过这个坐标系可以去描述和刻画所有想刻画的实体。 世界坐标系又称全局坐标系或者宇宙坐标系。 2.物体坐标系 物体坐标系与特定的物体关联,每个物体都有自己特定的坐标系。不同物体之间的坐标系相互 独立 ,可以相同,可以不同,没有任何联系。同时,物体坐标系与物体 绑定 ,绑定的意思就是物体发生移动或者旋转,物体坐标系发生相同的平移或者旋转,物体坐标系和物体之间运动同步,相互绑定。 举例说明一下物体坐标系:我们每个人都有自己的物体坐标系,当我们决定要往前走的时候,每个人实际前行的绝对方向都不一样,可能是向北,也可能向南,或者其他方向。这里前后左右是物体坐标系中的概念。当告诉张三往前走,就是张三同学沿着自己物体坐标系的前方运动。至于张三往前走是往东还是向北,这是张三的运动在世界坐标系下的描述。 这个立方体的物体坐标系如图所示,不论该立方体位于世界坐标系的任何位置,处于什么角度,物体坐标系与物体都是 绑定 在一起。 物体坐标系又称模型坐标系。 3.惯性坐标系

综述 | 相机标定方法

跟風遠走 提交于 2019-11-28 20:16:32
本文作者蔡量力,公众号:计算机视觉life成员,由于格式原因,公式显示可能出问题,建议阅读原文链接: 综述 | 相机标定方法 另外推荐几个原创的号 计算机视觉,Python,自然语言处理、数据挖掘相关,汇总最新资源,学习更高效! ​ 在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。在大多数条件下这些参数(内参、外参、畸变参数)必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定(或摄像机标定)。无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性。因此,做好相机标定是做好后续工作的前提,提高标定精度是科研工作的重点所在。 ​ 标定的目的主要为解决两个问题: ​ a、确定世界坐标系下三维空间点与像素平面像素点间的转换关系(内外参); ​ b、确定相机成像过程中的畸变系,用于图像矫正。 针孔相机模型 相机将三维世界中的坐标点(单位:米)映射到二维图像平面(单位:像素)的过程能够用一个几何模型来描述,其中最简单的称为 针孔相机模型 (pinhole camera model) ,其框架如下图所示: 其中,涉及到相机标定涉及到了四大坐标系,分别为: 像素坐标系

问题记录-(2019/11/5)

点点圈 提交于 2019-11-28 19:18:15
坐标变换-旋转(我们把点云原坐标系称为世界坐标系,把以本身正方向得到的坐标系称为 基坐标系) 让点云cloud 旋转到与坐标轴重回,且质心位于世界坐标系原点; 1。由cloud 本身参数求得质心,获得协方差矩阵,由协方差矩阵solver 得到 vectors 和 values, 使得vectors 正交化,得到点云主方向极坐标,也是由cloud世界坐标到基坐标的旋转矩阵, 2.点云旋转至世界坐轴系重回即为基坐标向世界坐标系旋转。求仿射变换矩阵。 Eigen::Matrix4f transfroms_residual = Eigen::Matrix4f::Identity(); Eigen::Matrix4f transfroms_residual_inv = Eigen::Matrix4f::Identity(); transfroms_residual.block<3, 3>(0, 0) = eigenVectorsPCA_residual.transpose(); transfroms_residual.block<3, 1>(0, 3) = -1.0f*(eigenVectorsPCA_residual.transpose())*(pcaCentroid_residual.head<3>()); //-R*t transfroms_residual_inv =

CL关于ORB_SLAM的那些事(MapPoint)

不想你离开。 提交于 2019-11-27 02:38:01
MapPoint部分的学习 昨天在匹配方面一直提及MapPoint,它到底是何方神圣呢,其实从可视化的角度来讲,MapPoint就是我们运行ORB SLAM时在界面上看到的那些地图点,红色黑色的,接下来让我们深入了解一下这个类中都封装了什么函数,维护了哪些变量。 打开头文件,可以看到包括了KeyFrame、Frame和Map三个头文件。其中实现的函数有: 两个构造函数,一个用于关键帧,另一个用于普通的Frame 设置世界坐标系下的坐标 获取世界坐标系下的坐标,因为后面涉及到匹配投影问题,所以需要这样的函数接口,获取世界坐标系下MapPoint的三维坐标 获取MapPoint的法向量 获取参考关键帧 初始定义map映射(关键帧 int)的观测次数,获取观测次数 返回值为int类型的观测次数的计算 添加关键帧的观测 删除关键帧的观测 获取MapPoint在该关键帧中的索引值 判断MapPoint是否在该关键帧中 设置坏的标记位 判断MapPoint是否是坏点 替换MapPoint MapPoint指针类型的获取替换的MapPoint 增加可视???? 增加寻找???? 获取被找到的频率 内敛函数,获取找到,直接return mnFound 计算特有的描述子 获取MapPoint的描述子 更新法向量和深度值 获取尺度不变的最大和最小距离 根据距离计算所在的金字塔层数,这里分了两个

坐标系

孤街醉人 提交于 2019-11-25 21:22:13
坐标系(VIO一般存在3种坐标系) 世界坐标系 IMU坐标系 相机坐标系 某个量表示坐标系的转化关系时写在右下脚标 Twb 默认是Twb表示IMU的定位 展开之后t,默认是IMU在世界坐标系下的坐标 归一化坐标平面,相当于不考虑相机坐标系的内参,实际考虑的还是米制单位,到像素平面一般会再进行一个K矩阵的变换。 对于任意一个位姿 T w c T_{wc} T w c ​ ,显然,该4* 4矩阵的t部分表示的为光心的位置; 对于一个世界坐标系下的变换: T w c 2 = T w c 1 T c 1 c 2 转换为矩阵的形式 [ R 2 t 2 0 1 ] = [ R 1 t 1 0 1 ] [ R t 0 1 ] t = R 1 T ( t 2 − t 1 ) \begin{aligned} T_{wc_2}&=T_{wc_1}T_{c_1c_2}\\ \text{转换为矩阵的形式}\\ \begin{bmatrix}R_2&t_2\\0&1\end{bmatrix}&=\begin{bmatrix}R_1&t_1\\0&1\end{bmatrix}\begin{bmatrix}R&t\\0&1\end{bmatrix}\\ t&=R_1^T(t_2-t_1) \end{aligned} T w c 2 ​ ​ 转换为矩阵的形式 [ R 2 ​ 0 ​ t 2 ​ 1 ​ ] t ​