Paper | Contrast Limited Adaptive Histogram Equalization

本文介绍了对比度和直方图均衡化(HE)的概念及其在图像处理中的应用,讨论了HE的问题,包括底噪的放大。接着,文章深入探讨了自适应直方图均衡化(AHE)和对比度限制的自适应直方图均衡化(CLAHE),并展示了CLAHE如何有效地抑制底噪并提高图像局部对比度。MATLAB中的adapthisteq函数用于实现CLAHE算法,并提供了效果示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

论文:Contrast limited adaptive histogram equalization

Zuiderveld, Karel. "Contrast limited adaptive histogram equalization." Graphics gems IV. Academic Press Professional, Inc., 1994.
Over 1800 citations (2019).

1. 背景

1.1. 对比度和直方图均衡HE

“对比度contrast ratio”这一概念,类似于“动态范围dynamic range”,衡量的是图像中亮区与暗区的比例。

对比度实际上没有统一的测量标准,参见:维基百科 contrast ratio

但我们知道,对比度是影响图像视觉效果的重要因素。

对比度小的图像,其色彩层次少,看起来要么太亮,要么太暗。如下图(太暗):

以下是Bilinear Interpolation Adaptive Histogram EqualizationMatlab代码实现: ```matlab function [outImg] = bilinearAdapthisteq(inImg, numTiles, clipLimit) % Bilinear Interpolation Adaptive Histogram Equalization % inImg: input image % numTiles: number of tiles (default: 8x8) % clipLimit: clipping limit (default: 0.01) % outImg: output image if nargin < 2 numTiles = [8 8]; end if nargin < 3 clipLimit = 0.01; end inImg = double(inImg); [h, w] = size(inImg); tileH = floor(h / numTiles(1)); tileW = floor(w / numTiles(2)); outImg = zeros(h, w); for i = 1:numTiles(1) rowStart = (i - 1) * tileH + 1; rowEnd = min(rowStart + tileH - 1, h); rowSize = rowEnd - rowStart + 1; for j = 1:numTiles(2) colStart = (j - 1) * tileW + 1; colEnd = min(colStart + tileW - 1, w); colSize = colEnd - colStart + 1; tile = inImg(rowStart:rowEnd, colStart:colEnd); % histogram equalization tileHist = histcounts(tile(:), 256); tileHistCum = cumsum(tileHist) / sum(tileHist); tileHistNew = max(0, floor(tileHistCum(tile(:)) * 255)); % clip histogram tileHistNewClip = tileHistNew; tileHistNewClip(tileHistNewClip > clipLimit * rowSize * colSize) = clipLimit * rowSize * colSize; % bilinear interpolation tileBilinear = interp2((0:255)', repmat([0 255], 256, 1), [tileHistNewClip; tileHistNewClip], tile, 'linear'); tileBilinear(isnan(tileBilinear)) = 0; outImg(rowStart:rowEnd, colStart:colEnd) = tileBilinear; end end outImg = uint8(outImg); ``` 该函数的输入为原始图像、瓦片数量和剪切限制。输出为进行Bilinear Interpolation Adaptive Histogram Equalization后的图像。在实现中,将原始图像分成多个瓦片,对每个瓦片进行直方图均衡化。然后,通过双线性插值将直方图映射应用于每个像素。最后,将所有瓦片重新组合为一幅图像。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值