convolutionRGB9Horizontal()
Applies a convolution 9 x 1 filter to the RGB components of an image.
Declaration
class func convolutionRGB9Horizontal() -> any CIFilter & CIConvolutionReturn Value
The convolved image.
Discussion
This method applies a 9 x 1 convolution to the RGB components of an image. The effect uses a 9 x 1 area surrounding an input pixel, the pixel itself, and those within a distance of 4 pixels horizontally. The effect repeats this for every pixel within the image. Unlike the convolution filters, which use square matrices, this filter can only produce effects along a vertical axis. You can combine this filter with the convolutionRGB9Vertical() to apply separable 9 x 9 convolutions. This filter differs from the convolution9Horizontal() filter, which processes all of the color components including the alpha component.
The convolution-RGB-9-vertical filter uses the following properties:
inputImageA CIImage containing the image to process.
weightsA CIVector representing the convolution kernel.
biasA
floatrepresenting the value that’s added to each output pixel.
The following code creates a filter that blurs the image in the horizontal direction:
func convolutionRGB9Horizontal(inputImage: CIImage) -> CIImage {
let convolutionFilter = CIFilter.convolutionRGB9Horizontal()
convolutionFilter.inputImage = inputImage
let weights: [CGFloat] = [1, 1, 1, 1, 1, 1, 1, 1, 1].map { $0/9.0 }
let kernel = CIVector(values: weights, count: 9)
convolutionFilter.weights = kernel
convolutionFilter.bias = 0.0
return convolutionFilter.outputImage!
}[Image]