algorithm - Android 4.3/4.4 上 Google PhotoSphere 背后的算法

标签 algorithm panoramas image-stitching photosphere

Android 4.3/4.4 上的相机应用程序在“球体模式”下可以将不同方向的照片拼接成一个球体全景图,质量非常好。

结果说明:

我要做的是为 iPad 实现一个具有完全相同功能的应用程序。

我尝试了两种方法:

OpenCV 2.4.8

OpenCV 2.4.8 提供了一个图像拼接管道,乍一看似乎很有前途。但是,它有两个问题:

  1. 流水线处理的是无序的输入照片,据我所知它只使用图像特征匹配来定位照片之间的几何关系,当图像特征提取对空白照片(例如白色)失败时流水线表现不佳墙,蓝天)。然而,iPad 可以提供每张照片的任意空间方向数据(虽然有噪音),但我不知道如何在 OpenCV 拼接管道中利用这些数据。

  2. 我找不到像 PhotoSphere 使用此管道那样生成 180x360 度全景图的方法。向管道提供各个方向的照片只会产生具有弯曲图像边界的大全景图。

全景工具

我也尝试了 PanoTools/Hugin 库,虽然这个库支持预定义的照片方向,但结果很差而且不稳定。另外我尝试使用 Focal(beta)应用程序 on Google Play ,其球体模式也是基于 PanoTools/Hugin,他们的结果(在球体模式下)似乎并不比我们的好。


我的问题:

  1. 是否有任何库可以完成 Google 的 PhotoSphere 的功能?由于我不为商业用途而开发,因此任何开源库都是可以接受的。
  2. 是否有可用的好的算法(或技术报告、学者论文)?如果有的话,哪个最好?
  3. Google 如何实现他们自己的 PhotoSphere?任何建议表示赞赏。

最佳答案

您可以在此处查看 Google 的相机应用程序源代码:

https://android.googlesource.com/platform/packages/apps/Camera/+refs

关于algorithm - Android 4.3/4.4 上 Google PhotoSphere 背后的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21682541/

相关文章:

c++ - Python 和 C++ 之间不寻常的速度差异

algorithm - 需要用属性时间同步两个列表,但时间不相等

algorithm - 一次访问二维数组的每个元素的最低效算法

android - Opencv Android,拼接两张图片

c++ - OpenCV 图像拼接 - 使用 ExposureCompensator 和 MultiabandBlender 类

python - 如何有效地左外连接两个排序列表

algorithm - 将重复出现的图像识别为更大的图像

iphone - 在 iOS 6 中捕捉全景图的库

ios - 是否可以在 iOS 应用程序中使用谷歌纸板查看全景图像?

c++ - OpenCV 中心单应