谈谈我对投影的理解

投影的数学意义

A projection is the transformation of points and lines in one plane onto another plane by connecting corresponding points on the two planes with parallel lines.

投影的概念很简单,就是投射的影子。好比黑暗屋子有一处光,投到你伟岸的身躯,墙上必然会有影子,这个影子就是你的身体对应这面墙的投影。

如上图, 求向量y到平面W的最短距离。对于点y,沿着平面W的法线方向(垂直于平面W),和W相交于y’,此时误差z最小,就是我们要找的答案。因为该射线是垂直于该平面(perpendicular),因此称为正交(orthogonal)投影。现实生活中,从一大堆统计点中拟合出一条有规律的线,就需要用最小二乘法,其实就是正交投影的思路。对应的数学描述为:当W平面中Ax = y无解时,转换为Px= y的形式,使其有解。

当然,这样做有什么好处?大家对比一下自己的身体和身影的区别,答案就是把三维的问题变成了一个二维的问题,这就是一个降维的思想,也是投影的价值。为了简化问题,限定在某一范围内,就要进行必要的降维(消元),如果因此导致问题无解,通过合适的投影矩阵P找到解。

投影的现实意义

各种原因吧,很多时候我们都需要抽象到二维空间,方便理解,降低成本。比如,显示器明明是平的,如何带给我们“深度”的错觉;地球明明是圆的,可地图看起来是平的。

两者的区别如上,前者采用了透视投影,眼睛认知世界也是采用该投影方式,因此,我们可以通过“平”幕感觉出深度。而后者采用正交投影,无论远近大小都一样。但两者在数学理论上并无本质区别,都是矩阵P,只是P中的元素不同罢了。

这里主要看气质,我们并不详细给出两个投影矩阵的推导过程, 如上是透视投影的示意图,视锥体的任意一点(),求出在平面(z = -n)对应的点,就是一个相似三角形的过程。透视投影是一个点光源,而正交投影像一束平行光,但推算过程一致。

地图投影也没有本质区别,如上,在球心处一盏灯,地球投影到这个圆柱体侧面,然后展开,形成右图的效果。

投影的硬件加速

通过上面的介绍,虽然投影要理解的内容很多,但操作上非常简单,每个点只需要乘以投影矩阵P,就可以得到投影后的点。

在数值计算上,这有三个特点,第一是简单,每个点的计算过程都是独立的,可封闭的,并不和其他相邻点之间有关联。其次是粗暴,矩阵运算计算量很大,最后基本都是浮点运算。

比如动态投影,计算量巨大,特别是B/S应用,受限于客户端的计算能力,往往都是基于服务端做动态投影计算,然后将结果返回给客户端。但即使如此,对于C/S而言,动态投影的性能也是瓶颈。

相比CPU,GPU没有逻辑单元,且浮点运算能力突出,非常适合用并行的方式来解决这类简单粗暴的计算密集型问题。

这是一种很好的解决动态投影的方式,在性能、实时、资源消耗和兼容性上都表现出色。比如墨卡托投影转WGS,可以错误的理解为把图片1高度不变,长度拉伸2倍的过程。我们完全把投影转换的计算放到着色器中,通过GPU顶点和片元着色器实现。

从CPU到GPU的转移,看上去很完美的,但动态投影有一个效果上的问题,毕竟是对纹理的操作,难免会有一些位置上偏移缩放等。如果用肉眼仔细看,你还是会发现不如以前的纹理清晰。

Cesium在这个问题上有一个很精妙的办法,还是要进行动态投影的,只是转换的对象不是Texture,保证纹理信息不变,而是对Texture Coordinate进行转换。

如下是动态投影的效果对比。当然受限于现实,目前仅支持墨卡托和WGS之间的转换,但在理论上,只要是点对点的动态投影都可以采用这种思路,当然最后还得看效果和数据易用性等问题。

原文发布于微信公众号 - LET(LET0-0)

原文发表时间:2017-04-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏刘笑江的专栏

在线学习方法概述

1124
来自专栏钱曙光的专栏

理解情感 :从 Keras 移植到 pyTorch

情感情绪检测是自然语言理解的关键要素。最近,我们将原来的项目迁移到了新的集成系统上,该系统基于麻省理工学院媒体实验室推出的 NLP 模型搭建而成。

1.4K0
来自专栏大数据挖掘DT机器学习

用R语言分析《我是歌手》出场顺序与名次的关系

《我是歌手》吵吵闹闹地落幕了,总决赛这一季是我最关注的一季,很认真的从头看到尾。当然,这篇文章的主旨不在此,我们要看的如题《我是歌手》节目中,出场...

2848
来自专栏PPV课数据科学社区

一文读懂遗传算法工作原理(附Python实现)

几天前,我着手解决一个实际问题——大型超市销售问题。在使用了几个简单模型做了一些特征工程之后,我在排行榜上名列第 219 名。

1414
来自专栏贾志刚-OpenCV学堂

OpenCV实现照片自动红眼去除

OpenCV实现照片自动红眼去除 使用闪光照相机拍照,在光线条件不足的情况,如果眼睛盯着相机镜头很容易造成拍出的照片中人眼球变成红色,虽然现在相机从系统和镜头上...

2656
来自专栏机器学习人工学weekly

机器学习人工学weekly-2018/7/1

Building the Software 2.0 Stack by Andrej Karpathy from Tesla

1104
来自专栏CreateAMind

【前沿跟进】Google, OpenAI提出层次强化学习新思路

431
来自专栏一棹烟波

图像融合之泊松融合(Possion Matting)

2622
来自专栏量化投资与机器学习

【机器学习】缠论中的线性回归(附Python源码)

? 来自聚宽:韭菜Hulk的精彩之作 博客连接:https://www.joinquant.com/post/427 缠论是寻找股价走势中的拐点,然后去根据拐...

32310
来自专栏一棹烟波

真实场景的双目立体匹配(Stereo Matching)获取深度图详解

  双目立体匹配一直是双目视觉的研究热点,双目相机拍摄同一场景的左、右两幅视点图像,运用立体匹配匹配算法获取视差图,进而获取深度图。而深度图的应用范围非常广泛,...

1K4

扫码关注云+社区