Android VR 图像处理
使用简单的 Android 图形处理技术修改 360 度图像。
引言
可在头戴设备或 Google 街景等网站上查看的 VR 或 360 图像是标准的 JPG 图像。您可以使用简单的 Android 图形处理技术,通过单独的移动设备或在运行 Android 操作系统并可以拍摄或拼接 360 图像的 360 摄像头/手机内部修改 360 图像。
背景
以下是同一图像的三个视图。图像均保存为 JPG 文件。
左侧的图像是等距柱状投影模式。它是一个扁平的球形视图。右侧的图像是双鱼眼模式。这由特殊 360 摄像头中的两个鱼眼镜头构成。
当在 Google Photos、Google 地图、Facebook、Google 街景或 Flickr 等网站上查看等距柱状投影图像时,它将显示为 360 或“VR”图像。
这些图像也可以在头戴设备内查看。
转动您的头部将允许您更改图像的视图。这是来自 Oculus 头戴设备内部的视图。
Using the Code
为了节省您拼接 360 图像的麻烦或购买专用 360 摄像头的成本,我整理了示例 360 图像并将它们加载到 Android 模拟器中。
步骤
- 将 no-camera-template 分叉到您自己的私有 GitHub 仓库中 - https://github.com/codetricity/no-camera-template。
- 将您的私有仓库克隆到您的本地计算机并在 Android Studio 中打开。
- 在 Android Studio 中,在 工具 → AVD 管理器下,使用以下资源创建 AVD
- 3GB 内存
- 屏幕尺寸:5 英寸
- 屏幕分辨率:720x1028
- 系统镜像:Nougat 7.1 x86
- 在 Android Studio 中打开 no-camera-template。
- 在 Android Studio 上按运行。
- 进入模拟器的 Android 应用程序的设置并启用存储权限
- 在应用程序模拟器上按“快门”
- 如果您的应用程序权限设置正确,您将看到 RICOH THETA 图像出现在模拟器屏幕上。如果图像未出现,请重新检查步骤 6。
- 使用 adb shell 登录到 AVD 以查看/sdcard/DCIM/100RICOH/中的文件
- 按“处理”以测试图像处理
- 验证处理后的文件是否出现在 AVD 中。
- 将您自己的图像处理代码放入
processImage(String thetaPicturePath)
方法中,第 144 行
挑战 #1:图像大小
当前的示例代码保存的图像宽度为 400 像素,高度为 200 像素。代码在 getBitmap()
方法中。将其更改为不同的尺寸。将其设置为 800 像素 x 400 像素。
挑战 #2:更改图像压缩
当前的示例将 JPEG 转换为 PNG 格式,并将质量设置为 100 中的 50。您将更改两件事
- 修改代码,使其将图像保存为 WEBP 格式
- 将质量降低到 25。这将使文件更小。
关注点
该应用程序将 RICOH THETA 图像大小从 10.7MB 减小到 0.12MB,以便通过不稳定的网络传输。原始图像文件保存在相机中。其想法是设置一个延时摄影,每 5 分钟拍摄一张图片,总共拍摄 1,000 张图片,并自动传输小文件。人们可以查看小图像并决定是否需要更大的图像。
exiftool
对于检查元数据很有用。
元数据
在此示例中,元数据已从图像中删除。特别是,ProjectionType
未设置为等距柱状投影。您可以使用 exiftool
添加元数据进行测试。
一旦您将 ProjectionType
设置为 equirectangular
,该图像将可在 Facebook 等 360 应用程序中查看。请注意,图像分辨率故意较低,以减小通过偏远地区不稳定的蜂窝网络传输的文件大小。
后续步骤
您可以在 此处获取其他 360 JPG 图像和 360 MP4 视频(需要免费注册)。或者,在 Flckr 或其他图像共享站点上搜索 360 图像或等距柱状投影图像。新的 360 摄像头可以以 DNG 或 RAW 格式存储图像,其中包含更多信息,可以帮助进行图像处理。免费的示例 DNG 双鱼眼图像可在 此处获取(无需登录)。
历史
- 2019 年 6 月 26 日:初始版本