基于 FPGA 的 CLAHE 自适应限制对比度直方图均衡算法硬件实现
CLAHE(Contrast Limited Adaptive Histogram Equalization)是一种强大的图像增强算法,广泛应用于医学影像、红外成像及低照度增强等领域。相比传统 AHE,它通过引入对比度限制机制有效抑制了平坦区域的噪声放大问题。
一、算法基本原理
1.1 核心处理步骤
图像分块 (Tiling) 将整幅图像划分为 M × N 个连续且不重叠的矩形子区域(Tiles)。本设计采用 4×4=16 分块策略。
直方图计算 (Histogram Calculation) 为每个 Tile 独立计算其灰度直方图 H(i),其中 i 是灰度级(0-255)。
对比度限制 (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 }
溢出重分配 (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 }
生成映射函数 (Mapping Function) 基于处理后的直方图计算累积分布函数(CDF),归一化后作为查找表(LUT):
LUT(j) = ((L - 1) / N_tile) * CDF(j)
双线性插值 (Bilinear Interpolation) 为消除 Tile 边界的'块效应',输出值通过周围四个 Tile 中心的 LUT 映射值加权平均得出:
P_out = (1 - Δy) * [(1 - Δx) * V_TL + Δx * V_TR] + Δy * [(1 - Δx) * V_BL + Δx * V_BR]
二、硬件架构设计
2.1 顶层模块架构
顶层模块 clahe_top 负责系统集成与协调。主要包含坐标计数器、直方图统计、CDF 计算、映射输出及 RAM 管理模块。由于所有 Tile 的直方图统计在一帧输入结束后才完成,我们在帧间隙进行逐个 Tile 的 CDF 计算和 LUT 生成。使用乒乓操作,一组 RAM 用于统计当前帧数据,另一组保存上一帧计算好的查找表,在 VSYNC 上升沿切换,实现对视频输入的实时处理。


