在 iOS 上使用带有 Metal 的 ARKit 时如何过滤掉模糊图像?

How can I filter out Blurry images when using ARKit with Metal on iOS?

我正在使用计算机视觉和 ARKit 来检测矩形并跟踪它们(如 Apple 的示例所示:https://developer.apple.com/documentation/arkit/tracking_and_altering_images)。我发现它有点不可靠,因为有时它会开始尝试跟踪对象的离焦版本,并且当对象进入焦点时,ARReferenceImage 和实际图像不再匹配,因此跟踪变得非常不可靠。有没有一种快速的方法可以忽略模糊的图像?我在网上搜索了一下,发现可以使用 OpenCV 来获取拉普拉斯算子的方差,但是,我很好奇如何使用 Swift?

通过 GPU 加速的金属性能着色器来做到这一点

事实证明,MPS 具有名为 MPSImageLaplacian 和 MPSImageStatisticsMeanAndVariance 的内置着色器,当它们结合使用时,可以可靠地用于检测模糊图像并忽略它们。我在 Medium 的 Swift 中记录了我是如何做到这一点的细节:https://medium.com/@salqadri/blur-detection-via-metal-on-ios-16dd02cb1558