Skip to contents

CLAHE performs adaptive histogram equalization to enhance the contrast of an image. Unlike regular histogram equalization (histEq), CLAHE first divides the image into small blocks called "tiles" and performs histogram equalization on each of these tiles. To reduce noise amplification contrast limiting is also applied: if any histogram bin is above the specified contrast limit, those pixels are clipped and distributed uniformly to other bins before applying histogram equalization. After equalization, to remove artifacts in tile borders, bilinear interpolation is applied.

Usage

CLAHE(image, clip_limit = 40, n_tiles = c(8, 8), target = "new")

Arguments

image

An Image object.

clip_limit

A numeric value representing the contrast limit above which pixels are clipped and distributed uniformly to other bins before applying histogram equalization on the tiles.

n_tiles

A vector with 2 elements representing the number of tiles along the width and height of the image (default: c(8, 8)).

target

The location where the results should be stored. It can take 3 values:

"new":

a new Image object is created and the results are stored inside (the default).

"self":

the results are stored back into image (faster but destructive).

An Image object:

the results are stored in another existing Image object. This is fast and will not replace the content of image but will replace that of target. Note that if target does not have the same number of channels and bit depth as image, an error will be thrown.

Value

If target="new", the function returns an Image object. If target="self", the function returns nothing and modifies image in place. If target is an Image object, the function returns nothing and modifies that Image object in place.

See also

Author

Simon Garnier, garnier@njit.edu

Examples

balloon <- image(system.file("sample_img/balloon1.png", package = "Rvision"))
balloon_Lab <- changeColorSpace(balloon, "Lab")
L <- extractChannel(balloon_Lab, 1)
clahe <- CLAHE(L, 1, c(2, 2))
insertChannel(balloon_Lab, 1, clahe)
#> NULL
balloon_contrast <- changeColorSpace(balloon_Lab, "BGR")