如何提高ARKit中的相机质量

时间:2017-10-10 21:04:48

标签: swift ios11 arkit

我正在构建一个ARKit应用程序,我们希望能够拍摄场景照片。我发现ARCamera视图的图像质量不足以在iPad Pro上拍照。

标准相机图片 Standard camera image

ARCamera图片 ARCamera image

我见过一篇Apple论坛帖子,提到这可能是iPad Pro 10.5特有的,与固定镜头位置有关(https://forums.developer.apple.com/message/262950#262950)。

是否有改变设置的公共方式?

或者,我尝试使用AVCaptureSession拍摄普通照片并将其应用到sceneView.scene.background.contents,以便在拍摄照片时切换出模糊图像以获得更高分辨率的图像但无法使AVCapturePhotoOutput工作与ARKit

2 个答案:

答案 0 :(得分:13)

更新:恭喜提交feature requests的人!在iOS 11.3(又名" ARKit 1.5")中,您可以控制至少一些捕获设置。现在,您可以获得1080p,默认情况下启用自动对焦。

检查ARWorldTrackingConfiguration.supportedVideoFormats以查找ARConfiguration.VideoFormat个对象的列表,每个对象定义一个分辨率和帧速率。列表中的第一个是您当前设备支持的默认(和最佳)选项,因此,如果您只想获得最佳分辨率/帧速率,则无需执行任何操作。 (如果你想通过设置videoFormat来降低性能原因,那么根据数组​​顺序而不是硬编码大小来做这件事可能会更好。)

默认情况下,iOS 11.3中的自动对焦功能已启用,因此您的示例图片(主体相对靠近相机)应该会更好。如果出于某种原因需要将其关闭,there's a switch for that

仍然没有用于更改ARKit使用的基础捕获会话的相机设置的API。

根据WWDC的工程师的说法,ARKit使用有限的摄像头捕获功能来确保高帧速率,同时对CPU和GPU的使用影响最小。制作更高质量的实时视频需要一些处理开销,但是计算机视觉和运动传感器集成系统的一些处理开销也会使ARKit工作 - 过多地增加开销,并开始增加延迟。对于一种应该向用户展示“生活”的技术。增加他们的世界观,你不希望"增强"部分是由多帧滞后相机运动。 (另外,除此之外,您可能还需要一些CPU / GPU时间留给您的应用,以便在相机视图上呈现漂亮的3D内容。)

iPhone和iPad设备之间的情况是一样的,但是你在iPad上注意到它只是因为屏幕太大了 - 720p视频在4-5"屏幕,但它看起来很糟糕,以填补10-13"屏幕。 (幸运的是,你在iOS 11.3中默认获得1080p,看起来应该更好。)

AVCapture系统确实可以在视频捕捉期间拍摄更高分辨率/更高质量的静态照片,但ARKit不会以任何方式公开其内部捕捉会话,因此您无法使用AVCapturePhotoOutput用它。 (在会话期间捕获高分辨率静止图像可能仍然很好feature request。)

答案 1 :(得分:0)

config.videoFormat = ARWorldTrackingConfiguration.supportedVideoFormats[1]

我不得不花一些时间来了解如何设置配置,所以也许它将对某人有所帮助。