<!--
{
  "documentType" : "article",
  "framework" : "Accelerate",
  "identifier" : "/documentation/Accelerate/transforming-with-a-gamma-function",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "Transforming with a gamma function"
}
-->

# Transforming with a gamma function

Use gamma functions to apply color transformations to images.

## Discussion

Gamma correction functions correct the brightness profile of an image by applying an exponent to each pixel in an image. The piecewise gamma correction functions allow you to add a linear transformation to pixels below a certain boundary. You can use gamma correction functions to prepare an image to display or print on a particular device.

## Topics

### Applying a gamma function

[`func vImageCreateGammaFunction(Float, Int32, vImage_Flags) -> GammaFunction!`](/documentation/Accelerate/vImageCreateGammaFunction(_:_:_:))

Returns a gamma function object.

  <doc://com.apple.accelerate/documentation/Accelerate/1584480-gamma-function-types>

[`func vImageGamma_Planar8toPlanarF(UnsafePointer<vImage_Buffer>, UnsafePointer<vImage_Buffer>, GammaFunction!, vImage_Flags) -> vImage_Error`](/documentation/Accelerate/vImageGamma_Planar8toPlanarF(_:_:_:_:))

Applies a gamma function to an 8-bit planar image to produce a 32-bit planar image.

[`func vImageGamma_PlanarFtoPlanar8(UnsafePointer<vImage_Buffer>, UnsafePointer<vImage_Buffer>, GammaFunction!, vImage_Flags) -> vImage_Error`](/documentation/Accelerate/vImageGamma_PlanarFtoPlanar8(_:_:_:_:))

Applies a gamma function to a 32-bit planar image to produce an 8-bit planar image.

[`func vImageGamma_PlanarF(UnsafePointer<vImage_Buffer>, UnsafePointer<vImage_Buffer>, GammaFunction!, vImage_Flags) -> vImage_Error`](/documentation/Accelerate/vImageGamma_PlanarF(_:_:_:_:))

Applies a gamma function to a PlanarF image.

[`func vImageDestroyGammaFunction(GammaFunction!)`](/documentation/Accelerate/vImageDestroyGammaFunction(_:))

Destroys a gamma function object.

  <doc://com.apple.accelerate/documentation/Accelerate/adjusting-saturation-and-applying-tone-mapping>

### Applying a piecewise gamma function

  <doc://com.apple.accelerate/documentation/Accelerate/adjusting-the-brightness-and-contrast-of-an-image>

[`func vImagePiecewiseGamma_Planar8(UnsafePointer<vImage_Buffer>, UnsafePointer<vImage_Buffer>, UnsafePointer<Float>, Float, UnsafePointer<Float>, Pixel_8, vImage_Flags) -> vImage_Error`](/documentation/Accelerate/vImagePiecewiseGamma_Planar8(_:_:_:_:_:_:_:))

Applies a piecewise gamma function to transform an 8-bit planar image.

[`func vImagePiecewiseGamma_Planar8toPlanar16Q12(UnsafePointer<vImage_Buffer>, UnsafePointer<vImage_Buffer>, UnsafePointer<Float>, Float, UnsafePointer<Float>, Pixel_8, vImage_Flags) -> vImage_Error`](/documentation/Accelerate/vImagePiecewiseGamma_Planar8toPlanar16Q12(_:_:_:_:_:_:_:))

Applies a piecewise gamma function to transform an 8-bit planar image to a 16Q12 planar image.

[`func vImagePiecewiseGamma_Planar8toPlanarF(UnsafePointer<vImage_Buffer>, UnsafePointer<vImage_Buffer>, UnsafePointer<Float>, Float, UnsafePointer<Float>, Pixel_8, vImage_Flags) -> vImage_Error`](/documentation/Accelerate/vImagePiecewiseGamma_Planar8toPlanarF(_:_:_:_:_:_:_:))

Applies a piecewise gamma function to transform an 8-bit planar image to a 32-bit planar image.

[`func vImagePiecewiseGamma_Planar16Q12(UnsafePointer<vImage_Buffer>, UnsafePointer<vImage_Buffer>, UnsafePointer<Float>, Float, UnsafePointer<Float>, Pixel_16S, vImage_Flags) -> vImage_Error`](/documentation/Accelerate/vImagePiecewiseGamma_Planar16Q12(_:_:_:_:_:_:_:))

Applies a piecewise gamma function to transform a 16Q12 planar image.

[`func vImagePiecewiseGamma_Planar16Q12toPlanar8(UnsafePointer<vImage_Buffer>, UnsafePointer<vImage_Buffer>, UnsafePointer<Float>, Float, UnsafePointer<Float>, Pixel_16S, vImage_Flags) -> vImage_Error`](/documentation/Accelerate/vImagePiecewiseGamma_Planar16Q12toPlanar8(_:_:_:_:_:_:_:))

Applies a piecewise gamma function to transform a 16Q12 planar image to an 8-bit planar image.

[`func vImagePiecewiseGamma_PlanarF(UnsafePointer<vImage_Buffer>, UnsafePointer<vImage_Buffer>, UnsafePointer<Float>, Float, UnsafePointer<Float>, Float, vImage_Flags) -> vImage_Error`](/documentation/Accelerate/vImagePiecewiseGamma_PlanarF(_:_:_:_:_:_:_:))

Applies a piecewise gamma function to transform a 32-bit planar image.

[`func vImagePiecewiseGamma_PlanarFtoPlanar8(UnsafePointer<vImage_Buffer>, UnsafePointer<vImage_Buffer>, UnsafePointer<Float>, Float, UnsafePointer<Float>, Float, vImage_Flags) -> vImage_Error`](/documentation/Accelerate/vImagePiecewiseGamma_PlanarFtoPlanar8(_:_:_:_:_:_:_:))

Applies a piecewise gamma function to transform a 32-bit planar image to an 8-bit planar image.

### Applying a symmetric piecewise gamma function

[`func vImageSymmetricPiecewiseGamma_Planar16Q12(UnsafePointer<vImage_Buffer>, UnsafePointer<vImage_Buffer>, UnsafePointer<Float>, Float, UnsafePointer<Float>, Pixel_16S, vImage_Flags) -> vImage_Error`](/documentation/Accelerate/vImageSymmetricPiecewiseGamma_Planar16Q12(_:_:_:_:_:_:_:))

Applies a symmetric piecewise gamma function to transform a 16Q12 planar image to an 8-bit planar image.

[`func vImageSymmetricPiecewiseGamma_PlanarF(UnsafePointer<vImage_Buffer>, UnsafePointer<vImage_Buffer>, UnsafePointer<Float>, Float, UnsafePointer<Float>, Float, vImage_Flags) -> vImage_Error`](/documentation/Accelerate/vImageSymmetricPiecewiseGamma_PlanarF(_:_:_:_:_:_:_:))

Applies a symmetric piecewise gamma function to transform a 32-bit planar image.



---

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)