齐次坐标系漫谈

本文介绍了齐次坐标在图像处理中的应用,重点讲述了如何利用齐次坐标解决无穷远点和平行线相交的问题,并展示了如何通过矩阵运算实现高效的投影变换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     首先声明齐次坐标主要应用于图像处理,如果其它领域的可忽略本博客。另外文档参考多个网址说明编写,有理解不对指出,欢迎指正。注意考虑翻译准确性,专业性术语会给出对应的英文,中文术语不主流或者不正确的欢迎一并指出。

1 为什么使用齐次坐标系(homogeneouscoordinates

     表示投影空间的无穷远(infinity),主要包括无穷远点(也称消失点,vanishing points)和无穷远线(也称消失线,vanishing line)
        利用Matrix实现投影空间的变换操作(平移,旋转,缩放,变形)

2 无穷远妙用

       请牢记上面齐次坐标的两个实用之处,参考资料形形色色的解释几乎都是围绕这两点进行。下面先给出2维齐次坐标的形式,然后拿出笔者觉得有意思的一些解释给大家演示:
       欧式空间坐标(x,y)的长相(值与点一一对应)是唯一的,齐次坐标系中其面貌就无穷多了,(xz,yz,z)只要z≠0都对应于(x,y),尺度不变形就是为啥叫齐次坐标系的原因。即齐次坐标系中(x,y,z)对应的欧式空间点为(x/z,y/z),嘿嘿一猜就知道 z=0 表示无穷点。
        大家肯定觉得,多个0表示无穷远没啥啊,甚至欧式空间也有无穷大的符号来表征这个特性。不得不提投影空间两个平行线相交就要了老命了,你试试ꝏ这个去表征无穷大,然后考虑两个平行线相交吧,打死没法求交点。嘻嘻齐次空间真有办法,齐次空间线的表示方式就不解释了,下面给出欧式空间和齐次空间的线表达式:
ax+by+c=0
ax+by+cz=0
        看出来了吗,常数项多了一个z。千万不要管这个表达式是怎么想出来的,来看看其妙用,齐次空间两条线表达式如下:

        当满足下面条件时,两个表达式表示同一条线哦(与欧式空间大大的不同)。

       

        两条线的交点坐标如下:

        交点坐标(x,y,z)当z等于0时表示无穷远点,当z等于0时a1b2-a2b1=0不正是空间中两条线平行满足的条件吗,平行线在投影空间相交与无穷远点的求解就是这么潇洒啊(数学家厉害)。

3 Matrix计算妙用

        这部分不再穿插介绍,不假思索给出迪卡尔坐标系下的投影变换
       
       上面的投影变换在迪卡尔坐标系中往往一次只适用于一个点(考虑到后面Matrix操作会提高投影变换效率,这点非常重要)。考虑上式a=0,b=0,c=1的情况不难投影变换的特殊情况发现:

       

       上面的式子到底有啥特别之处,别急进一步试试A=E=1,B=D=0:

        这不正是我们常见的平移操作吗,照这样看旋转和缩放操作也要沦陷在投影变换的特殊情况中了,嘻嘻下面两个式子正是如此直白

       

下面请注意留神看,在齐次坐标系中矩阵乘以一个点表达式如下:

          回头去看齐次坐标的定义,显然齐次坐标          对应的欧式空间坐标为

        很多人奇怪为什么不换一个符号表示 ,你大概是忘了齐次坐标的由来了,细想一下就知道是一个意思了。重要的是你发现没上面的式子不正是欧式空间的投影变换?根据之前欧式空间的一系列变换推导,我们知道这个变换包含了平移,旋转和缩放情况。由于矩阵可以组合,也就是可以通过组合 平移,旋转,缩放,其他变换 而得到一个最终的单一变换矩阵,即齐次坐标系的复杂变换可转化为矩阵运算。齐次坐标投影变换的这种特性可以加速你的计算,从而实现程序加速。

        注明一点仿射空间是很难做到这一点,并非完全不可能,关于什么是仿射空间在后面补齐。顺便说一下可以将齐次坐标的第三个值看作图片到摄影机的距离(仅仅便于理解而已)。

参考资料:

https://prateekvjoshi.com/2014/06/13/the-concept-of-homogeneous-coordinates/

https://plus.maths.org/content/real-projective-plane-homogeneous-coordinates

https://computergraphics.stackexchange.com/questions/1536/why-are-homogeneous-coordinates-used-in-computer-graphics

http://wordsandbuttons.online/interactive_guide_to_homogeneous_coordinates.html

http://www.it.hiof.no/~borres/j3d/math/homo/p-homo.html

https://www.tomdalling.com/blog/modern-opengl/explaining-homogenous-coordinates-and-projective-geometry/



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值