IMG · Images tools

Adaptive Histogram Equalization (CLAHE)

Shareable link

Settings are written to the URL as you change them. Nothing differs from the defaults yet.

Recover detail from a flat, hazy, or underexposed image by redistributing its brightness values. Adaptive histogram equalization does this per tile rather than per image, so a dark foreground is not held down by a bright sky in the same frame.

Tile grid

The grid decides what counts as local. At 1 the whole image shares one histogram, which is classic global equalization: fast, and prone to crushing one region to serve another. At 8 each tile covers about an eighth of each side, which suits most photographs. Push toward 16 for microscopy, drone, or document scans where contrast varies sharply across short distances.

Every pixel is remapped by blending the four tile maps nearest to it, weighted by distance. That interpolation is why the grid does not appear as blocks in the output.

Clip limit

The clip limit is what separates CLAHE from equalization that ruins images. Each histogram bin is capped at a multiple of the height a perfectly flat histogram would have, and the counts removed by that cap are redistributed evenly.

Without the cap, a tile containing near-uniform tone gets its tiny range stretched across the full 0-255 output, and whatever noise sat inside that range is amplified with it. At 100% every bin is capped at the flat height, so the mapping is close to linear and almost nothing changes. The default 250% matches the clipLimit of 2.0 used as a common starting point in OpenCV. Above 500% the effect becomes aggressive, and flat skies start to show grain.

Chroma

Equalization runs on luminance only. Each channel’s distance from the original luminance is preserved and re-applied to the new value, which keeps hue intact. A large luminance stretch tends to read as desaturated because the colour differences no longer match the new tonal spread, so the chroma slider scales them: 120% to 140% restores the apparent saturation after a strong equalization pass.

Set chroma to 0% for a grayscale result driven entirely by the equalized luminance.

Where it beats a contrast slider

A contrast slider applies one curve to every pixel. If the shadows and the highlights need opposite corrections, no single curve does both. Equalization derives its curve from the actual distribution of tones present, and the adaptive version derives a different curve for each region.

Typical cases: aerial and satellite frames flattened by atmospheric haze, medical and scientific captures where the useful signal occupies a narrow band, scanned documents with uneven lighting, and underwater photos where the whole frame sits in a compressed blue-green range.

Limits

Equalization is not a denoiser and not an exposure fix. It cannot recover a channel that clipped to 255 on capture, because those pixels carry no remaining variation to stretch. On a clean, well-exposed photograph it usually reads as overprocessed, and the strength slider is the honest control there: 30% to 50% gives the local separation without the harshness.

Frequently Asked Questions

It divides the image into a grid of tiles, builds a brightness histogram for each one, and remaps that tile's pixels so their brightness values spread across the full range. Accepts JPEG, PNG, and WebP.

Plain histogram equalization builds one histogram for the whole image, so a bright sky can flatten the tones in a dark foreground. CLAHE runs the same math per tile and caps each histogram bin, which keeps local detail and limits noise amplification. Set the tile grid to 1 to get the global version.

The clip limit is too high. Equalization stretches whatever variation exists in a tile, including sensor noise in flat areas. Lower the clip limit until the grain settles, then raise the tile count if you still want more local separation.

It remaps luminance and re-applies each pixel's original colour difference on top. The chroma slider scales that difference: 100% keeps the source saturation, lower values desaturate, higher values compensate for the flattening that a large luminance stretch can cause.

Explore Our Tools

Browse all tools