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

# Transforming with lookup tables

Use lookup tables to apply color transformations to images.

## Discussion

Lookup table functions use the value of a source pixel as an index into a lookup table of colors that defines the corresponding destination pixel. You can use lookup table functions to perform tasks, such as color grading, converting between color spaces, or generating false-color images.

## Topics

### Transforming planar-to-planar with a lookup table

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

Uses a lookup table to transform an 8-bit planar image to an 8-bit planar image.

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

Uses a lookup table to transform a 32-bit planar image to an 8-bit planar image.

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

Uses a lookup table to transform an 8-bit planar image to an unsigned 16-bit planar image.

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

Uses a lookup table to transform an 8-bit planar image to a 32-bit planar image.

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

Uses a lookup table to transform an 8-bit planar image to a 64-bit planar image.

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

Uses a lookup table to transform a 16-bit planar image.

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

Uses an interpolated lookup table to transform a 32-bit planar image.

### Transforming planar-to-interleaved with a lookup table

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

Uses a lookup table to transform an 8-bit planar image to an 8-bit-per-channel, three-channel interleaved image.

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

Uses a lookup table to transform an 8-bit planar image to a 16-bit-per-channel, three-channel interleaved image.

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

Uses a lookup table to transform an 8-bit planar image to a 32-bit-per-channel, three-channel interleaved image.

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

Uses a lookup table to transform an 8-bit planar image to a 32-bit-per-channel, four-channel interleaved image.

### Transforming interleaved-to-interleaved with a lookup table

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

Uses a lookup table to transform an interleaved, four-channel 8-bit planar image to an interleaved, four-channel 8-bit planar image.

### Transforming with a multidimensional lookup table

  <doc://com.apple.accelerate/documentation/Accelerate/applying-color-transforms-to-images-with-a-multidimensional-lookup-table>

  <doc://com.apple.accelerate/documentation/Accelerate/cropping-to-the-subject-in-a-chroma-keyed-image>

  <doc://com.apple.accelerate/documentation/Accelerate/applying-transformations-to-selected-colors-in-an-image>

[`func vImageMultidimensionalTable_Create(UnsafePointer<UInt16>, UInt32, UInt32, UnsafePointer<UInt8>, vImageMDTableUsageHint, vImage_Flags, UnsafeMutablePointer<vImage_Error>!) -> vImage_MultidimensionalTable!`](/documentation/Accelerate/vImageMultidimensionalTable_Create(_:_:_:_:_:_:_:))

Creates a multidimensional lookup table.

[`func vImageMultiDimensionalInterpolatedLookupTable_PlanarF(UnsafePointer<vImage_Buffer>, UnsafePointer<vImage_Buffer>, UnsafeMutableRawPointer!, vImage_MultidimensionalTable, vImage_InterpolationMethod, vImage_Flags) -> vImage_Error`](/documentation/Accelerate/vImageMultiDimensionalInterpolatedLookupTable_PlanarF(_:_:_:_:_:_:))

Uses a multidimensional lookup table to transform a 32-bit planar image.

[`func vImageMultiDimensionalInterpolatedLookupTable_Planar16Q12(UnsafePointer<vImage_Buffer>, UnsafePointer<vImage_Buffer>, UnsafeMutableRawPointer!, vImage_MultidimensionalTable, vImage_InterpolationMethod, vImage_Flags) -> vImage_Error`](/documentation/Accelerate/vImageMultiDimensionalInterpolatedLookupTable_Planar16Q12(_:_:_:_:_:_:))

Uses a multidimensional lookup table to transform a 16Q12 planar image.

[`func vImageMultidimensionalTable_Retain(vImage_MultidimensionalTable!) -> vImage_Error`](/documentation/Accelerate/vImageMultidimensionalTable_Retain(_:))

Retains a multidimensional table.

[`func vImageMultidimensionalTable_Release(vImage_MultidimensionalTable!) -> vImage_Error`](/documentation/Accelerate/vImageMultidimensionalTable_Release(_:))

Releases a multidimensional table.

[`typealias vImage_MultidimensionalTable`](/documentation/Accelerate/vImage_MultidimensionalTable)

An opaque pointer that represents a multidimensional lookup table.

[`struct vImageMDTableUsageHint`](/documentation/Accelerate/vImageMDTableUsageHint)

Constants that indicate the use for a multidimensional lookup table.

[`struct vImage_InterpolationMethod`](/documentation/Accelerate/vImage_InterpolationMethod)

Constants that represent different interpolation methods.



---

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)