iOS上的360度图像捕捉

OuterCircle背后的想法-在iOS上进行360度图像捕获是为了创建汽车的360度视图。 类似的媒体概念被描述为观察者所代表的具有固定中心的球体。

我们有3个兴趣轴:

  • 沥青;
  • 滚;
  • 偏航。

根据设备的方向,将考虑2个轴的调整,并提供一个角度。 对于“风景右”,偏航将提供角度,而俯仰和横滚将被视为偏差,并且对于最佳位置应尽可能接近0。

设备将存储记录的起点,以确定:

  • 俯仰和横滚偏差;
  • 基于偏航,角度的进度。

我们假设CoreMotion数据是实时提供的。 还监视加速度,以避免可能引起图像模糊的位置。

收到帧缓冲区后,应用程序会在记录时检查位置。

如果出现以下情况,该缓冲区将被丢弃:

  • 没有定位数据;
  • 该位置已被填充,并且新图像的质量低于前一个图像的质量。

角度确定位置是否已被图像填充。 如果将360度图像捕获设置为由72张图像组成,则每5度应有一个图像。

此记录的缓冲区质量由下式给出:

  • 侧倾偏差
  • 音高偏差;
  • 加速
  • 角度-需要尽可能平衡;

该值是4D中的几何距离,将添加权重以改善结果。 调整需要反复试验。

如果该值小于指定的阈值,则将直接丢弃缓冲区。

每个360度图像捕获都包含以下元数据:

  • uid —唯一标识符;
  • 日期— unixtime;
  • 半径–两张图片之间的最佳距离(上一示例中为5度);
  • 元素列表,每个元素都是图像的数据:
  • 图片;
  • 角度;
  • 时间-相对于球的起点;
  • 偏差间距;
  • 偏差辊;
  • 加速。

图像存储在磁盘上,并且仅名称用作标识符。

整个结构导出为2个组件:

  • json文件;
  • 一系列图像。

在导出过程中,图像会根据角度而不是时间进行重新排序,因为人类的自然运动涉及向前和向后的瞬间。 如果图像中有间隙,则可能会重新排序。 此过程对于不完整的记录至关重要。

例如:如果角度为1,7,355,10,19,14-> 355,1,7,10,14,19

图像是根据顺序而不是角度从磁盘加载的。

每个图像都包含一个当前用户角度。 如果缺少角度,则根据其角度显示最近的图像。

有几项细微调整需要考虑:

  • 防止CoreMotion洪水;
  • 在单独的线程上处理数据;
  • 校准缓冲液值;
  • 调整记录角度。

无法进行调整以补偿设备的垂直运动。 如果用户保持设备稳定旋转并垂直/水平移动,则拍摄的图像将具有相同的值。 作为建议,使用Kimball设备可能有助于记录静止物体的更好360度图像。

360图像记录可在演示产品中用于电子商务和M-Commerce,包括大型对象,如汽车,房屋,家用电器等。另一种应用是在社交媒体和旅游业中。 也可以将应用程序包含在游戏中。

任何包含媒体的应用程序都可以从原型中受益。

HyperSense还使用类似但不完全相同的算法为Android开发了360度图像捕获原型。

如有任何疑问或意见,请与我们联系。


最初于 2018年3月8日 发布在 hypersense-software.com 上。