基于 FPGA 的 CLAHE 自适应限制对比度直方图均衡算法硬件实现
CLAHE(Contrast Limited Adaptive Histogram Equalization)是一种强大的图像增强算法,广泛应用于医学影像、红外成像及低照度增强等领域。相比传统方法,它通过引入对比度限制机制有效抑制了噪声放大问题。本文将从算法原理出发,深入讲解各模块的 RTL 架构设计,包括坐标计数器、直方图统计、CDF 计算、双线性插值映射以及乒乓 RAM 管理等核心细节。
一、CLAHE 算法基本原理
1.1 算法背景
AHE 通过将图像划分为多个子区域(Tiles)独立进行直方图均衡化,适应局部特性。但在噪声较大的平坦区域容易过度放大噪声。CLAHE 通过对比度限制机制解决了这一痛点。
1.2 核心处理步骤
1.2.1 图像分块 (Tiling)
将整幅图像划分为 M × N 个连续且不重叠的矩形子区域。本设计采用 4×4=16 分块策略。
1.2.2 直方图计算 (Histogram Calculation)
为每个 Tile 独立计算其灰度直方图 H(i),其中 i 是灰度级(0-255)。
1.2.3 对比度限制 (Contrast Limiting / Clipping)
这是 CLAHE 的关键。设定裁剪阈值 T_clip,根据归一化的裁剪因子 β、Tile 总像素数 N_tile 和灰度级数 L 计算:
T_clip = β × (N_tile / L)
遍历 Tile 直方图,将超出阈值的像素数裁剪:
H_clipped(i) = { T_clip, if H(i) > T_clip;
H(i), if H(i) ≤ T_clip }
1.2.4 溢出重分配 (Redistribution)
将所有灰度级裁剪下来的像素总数均匀重分配到所有灰度级中。由于 RTL 使用整数统计,我们采用整除 + 余数分配策略来保证总和不变:
avg = floor(N_overflow / L), remainder = N_overflow mod L
H_final(i) = { H_clipped(i) + avg + 1, if i < remainder;
H_clipped(i) + avg, if i ≥ remainder }
1.2.5 生成映射函数 (Mapping Function)
基于处理后的直方图计算累积分布函数(CDF),归一化后作为映射查找表(LUT)。输入像素灰度值为 j,映射后输出为 LUT(j)。


