cimaskedvariableblur创造了不需要的边界



我正在使用以下功能将图像模糊为深度图,并注意到过滤器在最终结果图像周围创建边框。我不确定我做错了什么。

func blur(image: CIImage, mask: CIImage, orientation: UIImageOrientation = .up) -> UIImage? {
    
    let invertedMask = mask.applyingFilter("CIColorInvert")
    let output = image.applyingFilter("CIMaskedVariableBlur", parameters: ["inputMask" : invertedMask,"inputRadius": 15.0])
    
    guard let cgImage = context.createCGImage(output, from: output.extent) else {
        return nil
    }
    
    return UIImage(cgImage: cgImage, scale: 1.0, orientation: orientation)
}

我想你可能想说:

func blur(image: CIImage, mask: CIImage, orientation: UIImageOrientation = .up) -> UIImage? {
    let invertedMask = mask.applyingFilter("CIColorInvert")
    let output = image.applyingFilter("CIMaskedVariableBlur", parameters: ["inputMask" : invertedMask,"inputRadius": 15.0])
    guard let cgImage = context.createCGImage(output, from: image.extent) else {
        return nil
    }
    return UIImage(cgImage: cgImage, scale: 1.0, orientation: orientation)
}

在原始图像的范围内绘制的位置。CIMaskedVariableBlur将设置范围,以包括所有样品采样的所有像素,这些像素可能包括您不关心的像素,尤其是沿着颜色值平均的边缘,在原始图像的边界之外进行平均颜色值。

相关内容

  • 没有找到相关文章

最新更新