问题来源:在研究相机标定的过程中,从世界坐标系变换到相机坐标系和从相机坐标系与图像坐标系之间的转换时,都用到了齐次坐标升了一维,为什么不能直接进行转换呢?

从世界坐标系到相机坐标系的变换开始说起,

相机运动是一个刚体运动,它保证了同一个向量在各个坐标系下的长度和夹角都不会发生变化。这种变换成为欧式变换。可以想象为你把手机抛到空中,在它落地之前,只可能有空间位置和姿态的不同,而它自己的长度、各个面的角度等性质不会有任何变化。

我们设某个单位正交基(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个最常见的仿射变换,平移变换只对于点才有意义,因为普通向量没有位置概念,只有大小和方向,这可以通过下面的式子清楚地看出:

为什么要引入齐次坐标?相关推荐

  1. 数字图像处理--引入齐次坐标

    前面我们提到了图像的缩放变换和旋转变换,可以用矩阵乘法的形式来表达变换后的像素位置映射关系. 那么,对于平移变换呢?平移变换表示的是位置变化的概念.如下图所示,一个图像矩形从中心点[x1,y1]平移到 ...

  2. 为什么要引入齐次坐标,齐次坐标的意义(二)

    前面我们提到了图像的缩放变换和旋转变换,可以用矩阵乘法的形式来表达变换后的像素位置映射关系. 那么,对于平移变换呢?平移变换表示的是位置变化的概念.如下图所示,一个图像矩形从中心点[x1,y1]平移到 ...

  3. [计算机视觉] 什么是齐次坐标?为什么要引入齐次坐标?

    0.参考链接 Homogeneous Coordinates 为什么要引入齐次坐标 1.问题:两条平行线可以相交于一点 在欧式空间中,同一平面的两条直线不能相交: 在透视空间中,两条平行线可以相交,火 ...

  4. 为什么要引入齐次坐标,齐次坐标的意义(一)

    问题:两条平行线可以相交于一点 在欧氏几何空间,同一平面的两条平行线不能相交,这是我们都熟悉的一种场景. 然而,在透视空间里面,两条平行线可以相交,例如:火车轨道随着我们的视线越来越窄,最后两条平行线 ...

  5. 齐次坐标的理解(2)

    接上篇文章齐次坐标的理解(1):https://blog.csdn.net/m0_37957160/article/details/119549709 "齐次坐标表示是计算机图形学的重要手段 ...

  6. 齐次坐标的理解(1)

    1.为什么要引入齐次坐标,齐次坐标的意义 首先百科解读: 齐次坐标就是将一个原本是n维的向量用一个n+1维向量来表示,是指一个用于投影几何里的坐标系统,如同用于欧氏几何里的笛卡儿坐标一般. 以下内容是 ...

  7. 齐次坐标,怎么你也叫Homogeneous

    其实参考链接中已经解释的很好了,这篇博客主要就是为了码一下别人的博客.链接1.2里面不仅有关于齐次坐标的解释,还有很多其他的计算机图像的知识点,链接2还做了很多<冰与火之歌>的彩蛋. 在平 ...

  8. 计算机图形学-----齐次坐标、空间变换矩阵和通用的建模方法

    齐次坐标系 齐次坐标系是为了区分空间点和向量的.三维空间中,(x,y,z)(x,y,z)(x,y,z)可以表示一个点ppp的位置,但是也可以表示一个向量v\bf{v}v.对于点的移动是有实际意义的,但 ...

  9. 齐次坐标和单应性矩阵

    齐次坐标主要是应用在矩阵转换中,我们通常运算的坐标系是"笛卡尔坐标系",我们已经习惯了笛卡尔坐标系的表述方式,一个点都有唯一对应的数据值来表示,比如原点我们就记做(0,0)点.而笛 ...

最新文章

  1. [BZOJ1187]神奇游乐园(插头DP)
  2. VC++:如何将程序最小化到托盘
  3. 【Android游戏开发十四】深入Animation,在SurfaceView中照样使用Android—Tween Animation!...
  4. 中国垃圾发电设备市场竞争模式与十四五运营前景研究报告2022版
  5. mes系统服务器要求,mes系统 服务器配置
  6. matlab bmp hsi,matlab中RGB与HSI图像转化
  7. [Vue.js] 基础 -- 综合案例 -- 图书管理
  8. Freemodbus 1.5
  9. 递归实现指数型枚举(搜索)
  10. 19【推荐系统2】矩阵分解算法——协同过滤的进化
  11. C++——动态内存分配new--delete
  12. 微信小程序PDF下载方案
  13. 对计算机硬盘进行格式化操作,如何禁止对电脑硬盘进行格式化操作?电脑中怎么防止格式化硬盘...
  14. android拷机工具,Android 3DMark大更新:无敌拷机神器
  15. 近50年前500部精品电影合集
  16. 记一次·ulimit: open files: cannot modify limit:不允许操作
  17. 小学生五星分期,钉钉在线求饶
  18. echarts 玫瑰图比例太小显示优化
  19. My SQL常用命令及知识点[更新中]
  20. 关于5G的NSA和SA,看完秒懂

热门文章

  1. JSP开发模式--Model 2模式(二)
  2. Android 集成环信实现单点登录校验,账号异地被挤下线功能。
  3. hbase分布式部署
  4. Office 产品 Office Professional Plus 2010
  5. 某银行网银代发工资无法操作问题解决
  6. 4GLTE@NB-IOT
  7. linux lxc端口修改,Linux LXC基本配置选项
  8. c语言strdup函数_在C / C ++中使用strdup()函数的指南
  9. et99 php,ET99加密狗模拟之读取数据
  10. 基于java蛋糕网店计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署