全景图转小行星视角投影原理详解

全景图是2:1比例的图片,一般是多张图像拼接而成。全景图2:1的比例可以很方便的映射到球面,而球坐标可以很方便的实现各种有趣的投影。比如小行星,水晶球,局部透视投影等。

今天来说说怎么将全景图投影到小行星视图:

首先,要有一副2:1的全景图,如下:

风景秀丽是不是。

然后,将全景图按照经纬展开法重新贴到球面,图像的宽就是纬度0-2π,图像的高就是经度0-π。

接下来,需要一种下面这样的投影。将一个球面上的坐标投影到平面上。投影中心在球心到球面之间。

从百度百科上盗的图,各位将就着看。

这种投影方式中,下半球面会全部投影在平面图中的一个圆内,上半球面会全部投影到圆的外面,并且分布越来越稀疏。

投影过程可以理解为:

1. 首先建立球坐标系,将经纬度的全景图贴到球面上,这个过程我之前的一篇博客中鱼眼图转经纬图讲过,原理一样。只不过是逆过程。

2. 设定投影中心点的坐标,然后连接投影中心点和球面上一点,得到一条直线。当然此时需要设置一个视场角FOV,即选择投影的视场角是多大。视场角越大,最后得到的小行星视图中间图像被挤压的越厉害。

3. 建立投影平面,以上图为例,该投影平面与球面相切与南极点。计算该直线与该投影平面的交点,即可得到投影后的平面坐标。

4. 上述三步均在球坐标系下完成,得到各个球面点的平面坐标后,根据具体想要得到的平面图像尺寸,将平面坐标转换为图像坐标。至此完成。

上述是正向投影过程,如果采用反向投影,原理类似,不过倒过来从原全景图像素点取值即可。

上述过程可以很方便用C++代码实现,读取图像的操作可以用OpenCV:

投影后得到的小行星视图如下,FOV和投影中心位置都会影响小行星在图像中的大小:

这个是投影点在北极点,FOV设置的120度

投影点在北极点,FOV=170度,则如下:

投影点在北极点与球心的中点,FOV=120度,则如下:

同样道理,如果投影点在南极点,投影平面放在北极,则如下图:

同理,如果在球体内随意移动投影点,投影得到的效果也会不同,可以实现不同视角的小行星。

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ATYUN订阅号

使用keras创建一个简单的生成式对抗网络(GAN)

然而,有些恶意的顾客为了获得金钱而出售假酒。在这种情况下,店主必须能够区分假酒和正品葡萄酒。

53540
来自专栏人工智能

使用TensorFlow自动识别验证码(三)

先知安全技术社区独家发表本文,如需要转载,请先联系先知案件技术社区授权;未经授权请勿转载。 0X000 前言 这是该 系列的第三篇文章, 本系列最后一篇。前面几...

28570

如何使用带有Dropout的LSTM网络进行时间序列预测

长短期记忆模型(LSTM)是一类典型的递归神经网络,它能够学习观察所得的序列。

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

GitHub最受欢迎深度学习应用项目 Top 5

1 Neural Style Star:12122 Github:https://github.com/jcjohnson/neural-style 这个项目是...

468120
来自专栏ATYUN订阅号

使用TensorFlow和DLTK进行生物医学图像分析的介绍

DLTK是用于医学图像的深度学习工具包,它扩展了TensorFlow, 以实现生物医学图像的深度学习。它为经典的应用程序提供特殊的操作和功能、模型的实现、教程(...

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

【学习】 R语言与机器学习学习笔记(1)K-近邻算法

前言 最近在学习数据挖掘,对数据挖掘中的算法比较感兴趣,打算整理分享一下学习情况,顺便利用R来实现一下数据挖掘算法。 数据挖掘里我打算整理的...

32160
来自专栏人工智能

MLlib中的随机森林和提升方法

本帖是与来自于Origami Logic 的Manish Amd共同撰写的。

310100
来自专栏Petrichor的专栏

深度学习: 从 Selective Search 到 RPN

具体参见我的另一篇博客:Selective Search (选择搜索),简而言之就是,Selective Search 太low太低效。

31440
来自专栏机器之心

资源 | 对比ResNet: 超深层网络DiracNet的PyTorch实现

33940
来自专栏数据派THU

三步教你搭建给黑白照片上色的神经网络 !(附代码)

来源:量子位 本文长度为7970字,建议阅读8分钟 本文为你介绍通过搭建神经网络,来给黑白照片上色的教程。 深度学习云平台FloydHub最近在官方博客上发了一...

57990

扫码关注云+社区

领取腾讯云代金券