Contents

areaLogarithmicHistogram()

Returns a logarithmic histogram of a specified area of the image.

Declaration

class func areaLogarithmicHistogram() -> any CIFilter & CIAreaLogarithmicHistogram

Return 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.

inputImage

An image with the type CIImage.

extent

A CGRect that specifies the subregion of the image you want to process.

scale

The scale value for the histogram values. If the scale is 1, then the bins in the resulting image sum to 1.

count

The number of bins for the histogram. This value determines the width of the output image. Minimum value 1, and maximum value 2048.

minimumStop

The minimum of the range of color channel values in the logarithmic histogram image. Defaults to -10.

maximumStop

The 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]

See Also

Filters