限对比度自适应直方图均衡CLAHE

CLAHE,全称 Contrast Limited Adaptive Histogram Equalization,是一种用来做Tone Mapping的自适应直方图均衡算法,已经集成在opencv和matlab中。

在介绍CLAHE之前,先介绍下HE(直方图均衡)、AHE(自适应直方图均衡算法)、CLHE算法。

直方图均衡化

直方图均衡化假设我们有一个图像A,知道其直方图分布Ha,我们相拥一个单调非线性映射f,将图像A变为B,图B的直方图分布为Hb。如果目标直方图是均匀分布,那么我们可以很容易得到灰度映射曲线f

自适应直方图均衡化

前面提到的直方图均衡化,是直接对全局图像进行均衡化,没有考虑到局部图像区域,自适应过程就是在均衡化过程中只利用局部区域窗口内的直方图分布来构建映射函数f。

Naive AHE 对A图像每个像素点进行遍历,在像素点周围W*W窗口内就散CDF,然后对该像素点进行映射。

这样做计算复杂度太高,坐着给出了一些改进算法Fast AHE:利用W*W的窗口计算直方图的CDF,然后不仅仅是对图像的一个像素点进行变换,而是对该窗口中心内的32*32个点进行变换。该算法有很多不足,存在块效应和平坦区噪声被拉大等问题。

限对比度自适应直方图均衡化

论文时间1987年,针对AHE进行改进。

第一,提出一种限制直方图分布的方法。考虑图像A的直方图,设定一个阈值,假设直方图某个灰度值炒股了阈值,就对其进行裁剪,然后将超出阈值的部分平均分配到各个灰度级,这个过程可以用下图来解释:

图中左上图是原来的直方图分布,可以看出有两处峰值,其对应的CDF为左下图,可以看出有两段梯度比较大,变化剧烈。对于之前频率超过了阈值的灰度级,那么就把这些超过阈值的部分裁剪掉平均分配到各个灰度级上,如右上图,那么这会使得CDF变得较为平缓,如右下图。通常阈值的设定可以直接设定灰度级出现频数,也可以设定为占总像素比例,后者更容易使用。由于右下图所示的CDF不会有太大的剧烈变化,所以可以避免过度增强噪声点。

第二:提出一种插值方法,加速CLAHE。首先,将图像分块,每个块计算一个cdf,,对图像中的每个像素点,找到其临近的四个窗口,分别计算映射值。然后用双线性插值,得到该像素点的最终映射值

自适应局部区域伸展(Local Region Stretch)直方图均衡化

AHE和CLAHE都是基于块状区域做HE,而LRS根据亮度将图像分割成几个区域,然后分别做HE。大致过程是,先统计直方图,按照灰度级划分为三个灰度区间,使得三个区间的像素点数量近似相等,然后分别做HE,最后再合并HE。

 

发表评论