contrastStretch(binCount:destination:)
Stretches the histogram of a multiple-plane 32-bit pixel buffer.
Declaration
func contrastStretch(binCount: Int, destination: vImage.PixelBuffer<Format>)Parameters
- binCount:
The number of histogram entries for each channel.
- destination:
The destination pixel buffer.
Discussion
Use this function to evenly distributes a histogram’s pixel values across the full range of available pixel values.
For example, the following code stretches the contrast of an image:
let srcImage = imageLiteral(resourceName: " ... ").cgImage(
forProposedRect: nil,
context: nil,
hints: nil)!
var cgImageFormat = vImage_CGImageFormat(
bitsPerComponent: 32,
bitsPerPixel: 32 * 3,
colorSpace: CGColorSpaceCreateDeviceRGB(),
bitmapInfo: CGBitmapInfo(rawValue: kCGBitmapByteOrder32Host.rawValue |
CGBitmapInfo.floatComponents.rawValue |
CGImageAlphaInfo.none.rawValue))!
let interleavedBuffer = try vImage.PixelBuffer(
cgImage: srcImage,
cgImageFormat: &cgImageFormat,
pixelFormat: vImage.InterleavedFx3.self)
let multiplaneBuffer = vImage.PixelBuffer<vImage.PlanarFx3>(
interleavedBuffer: interleavedBuffer)
multiplaneBuffer.contrastStretch(binCount: 1024,
destination: multiplaneBuffer)
multiplaneBuffer.convert(to: interleavedBuffer)
let outputImage = interleavedBuffer.makeCGImage(cgImageFormat: cgImageFormat)