Performs an ends-in contrast stretch operation on an ARGB8888 source image.
- iOS 5.0+
- macOS 10.3+
- Mac Catalyst 13.0+
- tvOS 9.0+
- watchOS 2.0+
A pointer to a vImage buffer structure that contains the source image.
A pointer to a vImage buffer data structure. You are responsible for filling out the
rowfields of this structure, and for allocating a data buffer of the appropriate size. On return, the data buffer pointed to by this structure contains the destination image data. When you no longer need the data buffer, you must deallocate the memory.
A percentage value. The number of pixels that map to the lowest end of the histogram of the transformed image should represent this percentage of the total pixels.
A percentage value. The number of pixels that map to the highest end of the histogram of the transformed image should represent this percentage of the total pixels.
The options to use. Set the
kvflag if you plan to perform your own tiling or use multithreading.
Image Do Not Tile
kvflag to copy the alpha channel to the destination image unchanged.
Image Leave Alpha Unchanged
The ends-in contrast stretch operation alters the image histogram so that a certain percentage of pixels are mapped to the lowest end of the histogram, a certain percentage are mapped to the highest end, and the values in between “stretched” between the lowest and the highest. The ends-in contrast stretch operation is done separately for each of the four channels—alpha, red, green, and blue. However the size and range values are the same for each of the four histograms. In general, it is not possible to get exactly the desired percentage of pixels at the low end and the high end of the histogram of the transformed image. This operation only approximates the given values.
The source and destination buffers must have the same height and the same width.