ios 如何提高ARKit人脸跟踪中捕获图像的分辨率?

nlejzf6q  于 2023-02-20  发布在  iOS
关注(0)|答案(1)|浏览(181)

此问题的答案可获得+50信誉bounty。奖励宽限期已结束。Kevvv正在从信誉良好的来源寻找答案。
我在ARKit中使用ARFramecaptureImage来生成人脸签名并进行相似度比较,但是由于captureImage的分辨率较差,相比Vision框架,比较的质量受到负面影响,capturedDepthData显示capturedImageARKit中的分辨率只有640x480。
首先,我尝试将视频格式提高到最高分辨率:

let configuration = ARFaceTrackingConfiguration()
if let videoFormat = ARFaceTrackingConfiguration.supportedVideoFormats.sorted(by: { ($0.imageResolution.width * $0.imageResolution.height) < ($1.imageResolution.width * $1.imageResolution.height) }).last {
    configuration.videoFormat = videoFormat
}

但是,这似乎并没有提高capturedImage的分辨率。
其次,我尝试使用captureHighResolutionFrame,以及更改视频格式:

if let videoFormat = ARFaceTrackingConfiguration.recommendedVideoFormatForHighResolutionFrameCapturing {
    configuration.videoFormat = videoFormat
}

但是,根据文件:
系统在带外提供高分辨率帧,这意味着它不会影响会话以固定间隔接收的其他帧
这看起来在常规capturedImage和高分辨率图像之间来回切换,而不是由于捕获高分辨率图像的异步特性而替换常规图像。这是有问题的,因为尺寸差异需要不同地使用displayTransformCGAffineTransform来缩放每种情况的图像。
最重要的是,用这种方法捕捉图像会产生每秒60次的快门声。

y0u0uwnf

y0u0uwnf1#

我没有尝试过这个特定的模型,但我希望它能做得很好,因为人们正在使用它,基于变压器的模型在NLP中取得了优异的成绩。这里是其中一个模型的链接,专门用于增强图像分辨率model。希望它能很好地为您的情况工作。

相关问题