areaLogarithmicHistogram()
Returns a logarithmic histogram of a specified area of the image.
Declaration
class func areaLogarithmicHistogram() -> any CIFilter & CIAreaLogarithmicHistogramReturn Value
A 1-pixel-high image containing the calculated histogram.
Discussion
This filter calculates histograms of the red,``green,``blue, and alpha colors for the specified area of an image. A base two-logarithm function is applied to the values before binning. The count property controls the number of bins (or width) of the histogram. The histogram is scaled so that all the values sum to scale.
inputImageAn image with the type CIImage.
extentA CGRect that specifies the subregion of the image you want to process.
scaleThe scale value for the histogram values. If the scale is
1, then the bins in the resulting image sum to1.countThe number of bins for the histogram. This value determines the width of the output image. Minimum value
1, and maximum value2048.minimumStopThe minimum of the range of color channel values in the logarithmic histogram image. Defaults to
-10.maximumStopThe maximum of the range of color channel values in the logarithmic histogram image. Defaults to 4.
The following code creates a filter that results in a 1-pixel-tall image with a width of 256. The pixel color components contain the logarithmic histogram values:
func areaLogarithmicHistogram(inputImage: CIImage) -> CIImage {
let filter = CIFilter.areaLogarithmicHistogram()
filter.inputImage = inputImage
filter.count = 256
filter.scale = 15
filter.extent = CGRect(
x: inputImage.extent.width/2-250,
y: inputImage.extent.height/2-250,
width: 500,
height: 500)
return filter.outputImage!
}Use the histogramDisplay() filter to display the histogram:
func logarithmicHistogramDisplay(inputImage: CIImage) -> CIImage {
let filter = CIFilter.histogramDisplay()
filter.inputImage = areaLogarithmicHistogram(inputImage: inputImage)
filter.highLimit = 1
filter.height = 100
filter.lowLimit = 0
return filter.outputImage!
}[Image]