Contents

convolutionRGB9Horizontal()

Applies a convolution 9 x 1 filter to the RGB components of an image.

Declaration

class func convolutionRGB9Horizontal() -> any CIFilter & CIConvolution

Return 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:

inputImage

A CIImage containing the image to process.

weights

A CIVector representing the convolution kernel.

bias

A float representing 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]

See Also

Filters