为什么要引入齐次坐标?
问题来源:在研究相机标定的过程中,从世界坐标系变换到相机坐标系和从相机坐标系与图像坐标系之间的转换时,都用到了齐次坐标升了一维,为什么不能直接进行转换呢?
从世界坐标系到相机坐标系的变换开始说起,
相机运动是一个刚体运动,它保证了同一个向量在各个坐标系下的长度和夹角都不会发生变化。这种变换成为欧式变换。可以想象为你把手机抛到空中,在它落地之前,只可能有空间位置和姿态的不同,而它自己的长度、各个面的角度等性质不会有任何变化。
我们设某个单位正交基(e1,e2,e3)经过一次旋转变成了(e1',e2',e3')。那么,对于同一个向量a(注意该向量并没有随着坐标系的旋转而发生运动),那么它在两个坐标系下的坐标为[a1,a2,a3]T和[a1',a2',a3']T,
(e1,e2,e3)[a1,a2,a3]T=(e1',e2',e3')[a1',a2',a3']T
为了描述两个坐标之间的关系,我们对上述等式的左右两边同时左乘(e1,e2,e3)T,那么左边的系数就变成了单位矩阵
[a1,a2,a3]T=Ra’,R=(e1,e2,e3)T·(e1',e2',e3')
注:旋转矩阵有几个特殊的性质,它是一个行列式为1的正交矩阵。
通过旋转矩阵,我们可以直接谈论两个坐标系之间的旋转,而不用再从基开始谈起了。换句话说,旋转矩阵可以描述相机的旋转。
在欧式变换中,除了旋转之外还有平移。考虑世界坐标系中的向量a,经过一次旋转(用R描述)和一次平移t后,得到了a',那么把旋转和平移合到一起,有:
a'=Ra+t (1)
齐次坐标:
作用1:简化计算
上式(1)完整的表达了欧式空间的旋转和平移,不过存在一个问题,这里的变换关系不是一个线性关系。假设我们进行两次变换:R1, t1和R2,t2,,满足:
b=R1a+t1 c=R2b+t2
但是从a到c的变换为:
c=R2(R1a+t1)+ t2
这样的形式在变换多次之后会过于复杂。因此,我们要引入齐次坐标和变换矩阵,重写上式:
这是一个数学技巧:我们在一个三维向量的末尾添加1,将其变成了四维向量,成为齐次坐标。对于这个四维向量,我们可以把旋转和平移写在一个矩阵里面,使得整个关系变成一个线性关系。矩阵T为变换矩阵。
齐次坐标属于射影几何的概念。通过添加最后一维,我们用四个实数描述了一个三维向量,这显然多了一个自由度,但使得我们把复杂的变换变成线性的形式。
在齐次坐标中,某个点x的每个分量同乘一个非零常数k后,仍然表示同一个点。因此,一个点的具体坐标值不是唯一的。如[1,1,1,1]T和[2,2,2,2]T是同一个点。但当最后一项不为零时,我们总可以把所有坐标除以最后一项,强制最后一项为1,从而得到一个点唯一的坐标表示(也就是转换成非齐次坐标):
x=[x,y,z,w]T=[x/w,y/w,z/w,1]T
因此,依靠齐次坐标和变换矩阵,两次变换的累加就可以有很好的形式:
b=T1a, c=T2b
所以 c=T2T1a.
作用2:区分点和向量
向量v = v1 a + v2 b + v3 c (1)
p – o = p1 a + p2 b + p3 c (2)
点p = o + p1 a + p2 b + p3 c (3)
写成矩阵乘积的形式:
这里(a,b,c,o)是坐标基矩阵,右边的列向量分别是向量v和点p在基下的坐标。这样,向量和点在同一个基下就有了不同的表达:3D向量的第4个代数分量是0,而3D点的第4个代数分量是1。像这种这种用4个代数分量表示3D几何概念的方式是一种齐次坐标表示。
“齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换。”—— F.S. Hill, JR
这样,上面的(1, 4, 7)如果写成(1,4,7,0),它就是个向量;如果是(1,4,7,1),它就是个点。
因此,作用1中提到的平移变换,从中可以思考得知,对于平移T、旋转R、缩放S这3个最常见的仿射变换,平移变换只对于点才有意义,因为普通向量没有位置概念,只有大小和方向,这可以通过下面的式子清楚地看出:
为什么要引入齐次坐标?相关推荐
- 数字图像处理--引入齐次坐标
前面我们提到了图像的缩放变换和旋转变换,可以用矩阵乘法的形式来表达变换后的像素位置映射关系. 那么,对于平移变换呢?平移变换表示的是位置变化的概念.如下图所示,一个图像矩形从中心点[x1,y1]平移到 ...
- 为什么要引入齐次坐标,齐次坐标的意义(二)
前面我们提到了图像的缩放变换和旋转变换,可以用矩阵乘法的形式来表达变换后的像素位置映射关系. 那么,对于平移变换呢?平移变换表示的是位置变化的概念.如下图所示,一个图像矩形从中心点[x1,y1]平移到 ...
- [计算机视觉] 什么是齐次坐标?为什么要引入齐次坐标?
0.参考链接 Homogeneous Coordinates 为什么要引入齐次坐标 1.问题:两条平行线可以相交于一点 在欧式空间中,同一平面的两条直线不能相交: 在透视空间中,两条平行线可以相交,火 ...
- 为什么要引入齐次坐标,齐次坐标的意义(一)
问题:两条平行线可以相交于一点 在欧氏几何空间,同一平面的两条平行线不能相交,这是我们都熟悉的一种场景. 然而,在透视空间里面,两条平行线可以相交,例如:火车轨道随着我们的视线越来越窄,最后两条平行线 ...
- 齐次坐标的理解(2)
接上篇文章齐次坐标的理解(1):https://blog.csdn.net/m0_37957160/article/details/119549709 "齐次坐标表示是计算机图形学的重要手段 ...
- 齐次坐标的理解(1)
1.为什么要引入齐次坐标,齐次坐标的意义 首先百科解读: 齐次坐标就是将一个原本是n维的向量用一个n+1维向量来表示,是指一个用于投影几何里的坐标系统,如同用于欧氏几何里的笛卡儿坐标一般. 以下内容是 ...
- 齐次坐标,怎么你也叫Homogeneous
其实参考链接中已经解释的很好了,这篇博客主要就是为了码一下别人的博客.链接1.2里面不仅有关于齐次坐标的解释,还有很多其他的计算机图像的知识点,链接2还做了很多<冰与火之歌>的彩蛋. 在平 ...
- 计算机图形学-----齐次坐标、空间变换矩阵和通用的建模方法
齐次坐标系 齐次坐标系是为了区分空间点和向量的.三维空间中,(x,y,z)(x,y,z)(x,y,z)可以表示一个点ppp的位置,但是也可以表示一个向量v\bf{v}v.对于点的移动是有实际意义的,但 ...
- 齐次坐标和单应性矩阵
齐次坐标主要是应用在矩阵转换中,我们通常运算的坐标系是"笛卡尔坐标系",我们已经习惯了笛卡尔坐标系的表述方式,一个点都有唯一对应的数据值来表示,比如原点我们就记做(0,0)点.而笛 ...
最新文章
- logstash tcp multihost output(多目标主机输出,保证TCP输出链路的稳定性)
- FPGA和NIOS2的关系
- html5仿浏览器,前端H5-仿QQ浏览器for mac之动画效果(一)
- [VS2005]一个简单的CodeSnippet —— 生成类的构造函数。
- 为双十二灵感设计屯好素材!
- 用python计算长方体的体积用什么函数_python处理DICOM并计算三维模型体积
- numpy 辨异 (五)—— numpy.ravel() vs numpy.flatten()
- 求二叉树中某结点的父结点(左右孩子表示法)
- IDC发布人工智能白皮书:信息流引领人工智能新时代
- 计算机网络重点知识整理(自顶向下)
- Apple Pay的使用
- openwrt带宽测速
- 解决办法:[sqlserver] Cannot connect to XXXX\SQLEXPRESS
- Unity UI框架思路与实现
- MATLAB数据类型及转换
- Zynga以特别的《CSR Racing 2》系列活动庆祝布加迪110周年
- linux安装压缩文件的工具,Linux上安装rar解压工具
- 产品经理的工资为什么这么高?背后的逻辑是什么?
- 大数据介绍项目流程_大数据介绍
- vue elementui table 复选框
热门文章
- iOS开发——项目中的地图跳转(苹果地图,百度地图,高德地图)
- 逃离塔科夫改文件换服务器,逃离塔科夫如何注册和设置_逃离塔科夫首次注册和设置步骤...
- 技术越好的的人越谦虚
- Linux——exec函数族原理及特性、execlp和execl函数
- Rational Purify 使用及分析实例
- Oracle 性能优化之AWR、ASH和ADDM(含报告生成和参数解读)
- 数据结构与算法——栈和队列
- 【2018/10/16测试T3】长者
- 微信小程序 仿京东 省市县地址选择
- AI智慧安监平台EasyCVR新版本v3.3如何接入V1版智能分析网关硬件?