<!--
{
  "availability" : [
    "iOS: 15.0.0 -",
    "iPadOS: 15.0.0 -",
    "macCatalyst: 15.0.0 -",
    "macOS: 12.0.0 -",
    "tvOS: 15.0.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "CoreImage",
  "identifier" : "/documentation/CoreImage/CIFilter-swift.class/convolutionRGB9Vertical()",
  "metadataVersion" : "0.1.0",
  "role" : "Type Method",
  "symbol" : {
    "kind" : "Type Method",
    "modules" : [
      "Core Image",
      "CoreImage"
    ],
    "preciseIdentifier" : "c:objc(cs)CIFilter(cm)convolutionRGB9VerticalFilter"
  },
  "title" : "convolutionRGB9Vertical()"
}
-->

# convolutionRGB9Vertical()

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

```
class func convolutionRGB9Vertical() -> any CIFilter & CIConvolution
```

## Return Value

This method applies a 1 x 9 convolution to the `RGB` components of an image. The effect uses a 1 x 9 area surrounding an input pixel, the pixel itself, and those within a distance of 4 pixels vertically. 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 [`convolutionRGB9Horizontal()`](/documentation/CoreImage/CIFilter-swift.class/convolutionRGB9Horizontal()) to apply separable 9 x 9 convolutions. This filter differs from the [`convolution9Vertical()`](/documentation/CoreImage/CIFilter-swift.class/convolution9Vertical()) filter, which processes all of the color components including the alpha component.

## Discussion

The convolution-RGB-9-vertical filter uses the following properties:

- `inputImage`: A  [`CIImage`](/documentation/CoreImage/CIImage) containing the image to process.
- `weights`: A [`CIVector`](/documentation/CoreImage/CIVector) representing the convolution kernel.
- `bias`: A `float` representing the value that’s added to each output pixel.

> Note:
> When using a nonzero `bias` value, the output image has an infinite extent. You should crop the image before attempting to render it.

The following code creates a filter that blurs the image in the vertical direction:

```swift
func convolutionRGB9Vertical(inputImage: CIImage) -> CIImage {
    let convolutionFilter = CIFilter.convolutionRGB9Vertical()
    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!
}
```

![Two images arranged horizontally. The left image contains a photo of the Golden Gate Bridge with a clear sky as the background. The right image shows the result of applying a vertical convolution kernel that blurs the image. Fine detail in the vertical direction is blurred.](images/com.apple.coreimage/media-4407305@2x.png)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)