目录
介绍
可在耳机或Google StreetView等网站上观看的VR或360图像是标准JPG图像。您可以使用简单的Android图形处理技术,使用单独的移动设备修改360图像,或者在运行Android操作系统的360相机/手机上内部修改360图像,并可以将360幅图像拼接在一起。
背景
以下是同一图像的三个视图。图像全部保存为JPG文件。
左边的图像处于equirectangular模式。它是一个扁平的球形视图。右边的图像是双鱼眼。这是由特殊360相机的两个鱼眼镜头制成的。
当在Google照片,谷歌地图,Facebook,谷歌街景或Flickr等网站上查看equirectangular图像时,它将显示为360或“VR”图像。
图像也可以在耳机内查看。
转头可以让你改变图像的视图。这是Oculus耳机内部的视图。
使用代码
为了让你省去把360张图片拼接在一起的麻烦,或者省去买一台专门的360相机的费用,我把360张图片的样本放在一起,然后把它们加载到一个Android模拟器中。
步骤
- 将无相机模板(no-camera-template) fork到您自己的私有GitHub存储库中——https://github.com/codetricity/no-camera-template
- 将您的私人仓库克隆到本地计算机,然后在Android Studio中打开。
- 在Android Studio的“工具”→“AVD管理器”下,使用以下资源创建AVD
- 3GB RAM
- 屏幕尺寸: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:图像大小
当前示例代码保存400px宽,200px高的图像。代码位于getBitmap()方法中。将其更改为其他大小。使其成为800px×400px。
挑战#2:改变图像压缩
当前样本,将JPEG转换为PNG格式,并将质量设置为100中的50。您将改变两件事:
- 修改代码,以便将图像保存为WEBP格式
- 将质量降低到25。这将使文件更小。
兴趣点
该应用程序将RICOH THETA图像尺寸从10.7MB减少到0.12MB,以便在不稳定的网络上传输。原始图像文件保留在相机中。我们的想法是建立一个延时拍摄1000张照片,每5分钟拍摄一张,并自动传输小文件。一个人可以查看小图像并确定他们是否想要更大的图像。
exiftool对于检查元数据很有用。
元数据
在此示例中,元数据被剥离出图像。特别是,ProjectionType未设置为equirectangular。您可以使用exiftool添加元数据以进行测试。
将ProjectionType设置为equirectangular后,图像将在360应用程序(如Facebook)中可见。请注意,图像分辨率有意降低,以减小文件大小,以便在偏远地区的不稳定蜂窝网络上传输。
原文地址:https://www.codeproject.com/Articles/5160716/VR-Image-Processing-with-Android