谈谈我对投影的理解

投影的数学意义

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 条评论
登录 后参与评论

相关文章

来自专栏AI科技大本营的专栏

一文教会你三维网格物体识别

本文由「图普科技」(微信公众号 tuputech)编译,原作者 Vladimir Tsyshnatiy,链接:https://medium.com/@vtsys...

653
来自专栏机器学习算法与Python学习

长文 | LSTM和循环神经网络基础教程(PDF下载)

目录: 前言 前馈网络回顾 循环网络 时间反向传播BPTT 梯度消失与梯度爆炸 长短期记忆单元(LSTM) 多时间尺度和远距离依赖 门控循环单元GRU LSTM...

44310
来自专栏机器学习之旅

理论:T级数据量下的划分聚类方法CLARANS+

定义是这样的,把一个数据对象,划分成子集的过程,使得子集内相似度大,子集外相似度小。这样的一个过程叫做聚类。

713
来自专栏AI科技评论

大会 | CVPR 2018论文解读:真实监控场景中的异常事件检测

AI 科技评论按:本文为上海交通大学林天威为 AI 科技评论撰写的独家稿件,未经许可不得转载。 安防作为近年最热门的计算机视觉研究落地方向,与视频分析研究有着很...

5966
来自专栏大数据文摘

利用 Scikit Learn的Python数据预处理实战指南

3106
来自专栏闪电gogogo的专栏

SAMP论文学习

SAMP:稀疏度自适应匹配追踪 实际应用中信号通常是可压缩的而不一定为稀疏的,而且稀疏信号的稀疏度我们通常也会不了解的。论文中提到过高或者过低估计了信号的稀疏度...

36212
来自专栏量子位

如何捕获一只彩色卓别林?黑白照片AI上色教程很友好 | 哈佛大触

1492
来自专栏机器之心

教程 | 用TensorFlow Estimator实现文本分类

4504
来自专栏机器之心

学界 | ImageNet 2017目标定位冠军论文:双路径网络

选自arXiv 作者:Yunpeng Chen等 机器之心编译 参与:蒋思源、Smith 最后一届 ImageNet 挑战赛刚刚落下帷幕,而新加坡国立大学参与的...

2677
来自专栏机器学习之旅

python开发:基于SSD下的图像内容识别(一)1.首先,先看一下我们能达到什么样的效果:2.我们需要做哪些基本的步骤:

鸽了将近有一个月的时间没有更新东西,真的不是因为我懒,主要在忙一些工作上的事情,然后就是被安装caffe环境折磨的死去活来。我本来用的上mba来搭caffe环境...

813

扫码关注云+社区