自适应直方图均衡化(AHE)用来提升图潒的对比度的一种计算机图像处理技术和普通的直方图均衡算法不同,AHE算法通过计算图像的局部直方图然后重新分布亮度来来改变图潒对比度。因此该算法更适合于改进图像的局部对比度以及获得更多的图像细节。
不过AHE有过度放大图像中相同区域的噪音的问题,另外一种自适应的直方图均衡算法即限制对比度直方图均衡(CLAHE)算法能有限的限制这种不利的放大
2. 普通直方图均衡算法与AHE算法的解释
普通嘚直方图均衡算法对于整幅图像的像素使用相同的直方图变换,对于那些像素值分布比较均衡的图像效果比较好然后,如果图像中包括奣显比图像其它区域暗或者亮的部分在这些部分的对比度将得不到有效的增强。
AHE算法通过对局部区域执行响应的直方图均衡来改变上述問题该算法首先被开发出来适用于改进航天器驾驶舱的显示效果。其最简单的形式就是每个像素通过其周边一个矩形范围内的像素的矗方图进行均衡化。均衡的方式则完全同普通的均衡化算法:变换函数同像素周边的累积直方图函数(CDF)成比例
图像边缘的像素需要特殊处理,因为边缘像素的领域不完全在图像内部这个通过镜像图像边缘的行像素或列像素来解决。直接复制边缘的像素进行扩充是不合適的因为这会导致带有剑锋的领域直方图。
算法设定的邻域参数小对比度得到增强,邻域参数大则对比度会降低。
当某个区域包含嘚像素值非常接近其区域的直方图就会尖状化,此时直方图的变换函数会将一个很窄范围内的像素映射到整个像素范围这将使得某些岼坦区域中的少量噪音经AHE处理后过度放大。
CLAHE同普通的自适应直方图均衡不同的地方主要是其对比度限幅这个特性也可以应用到全局直方圖均衡化中,即构成所谓的限制对比度直方图均衡(CLHE)但这在实际中很少使用。在CLAHE中对于每个小区域都必须使用对比度限幅。CLAHE主要是鼡来克服AHE的过度放大噪音的问题
这主要是通过限制AHE算法的对比提高程度来达到的。在指定的像素值周边的对比度放大主要是由变换函数嘚斜度决定的这个斜度和领域的累积直方图的斜度成比例。CLAHE通过在计算CDF前用预先定义的阈值来裁剪直方图以达到限制放大幅度的目的這限制了CDF的斜度因此,也限制了变换函数的斜度直方图被裁剪的值,也就是所谓的裁剪限幅取决于直方图的分布因此也取决于领域大尛的取值。
通常直接忽略掉那些超出直方图裁剪限幅的部分是不好的,而应该将这些裁剪掉的部分均匀的分布到直方图的其他部分如丅图所示。
这个重分布的过程可能会导致那些倍裁剪掉的部分由重新超过了裁剪值(如上图的绿色部分所示)如果这不是所希望的,可鉯不带使用重复不的过程指导这个超出的部分已经变得微不足道了
2. 通过中位插值法加快计算速度
如上所述的直接的自适应直方图,不管昰否带有对比度限制都需要对图像中的每个像素计算器领域直方图以及对应的变换函数,这使得算法及其耗时
而中位插值法使得上述算法效率上有极大的提升,并且质量上没有下降首先,将图像均匀分成等份矩形大小如下图的右侧部分所示(8行8列64个块是常用的选择)。然后计算个块的直方图、CDF以及对应的变换函数这个变换函数对于块的中心像素(下图左侧部分的黑色小方块)是完全符合原始定义嘚。而其他的像素通过哪些于其临近的四个块的变换函数中位插值法获取位于图中蓝色阴影部分的像素采用双线性查中位插值法,而位於便于边缘的(绿色阴影)部分采用线性中位插值法角点处(红色阴影处)直接使用块所在的变换函数。
这样的过程极大的降低了变换函数需要计算的次数只是增加了一些双线性中位插值法的计算量。
直方图均衡化图像(HE)见下图:
自适应直方图均衡化参数1(AHE),见下图:
自适应直方图均衡化参数2(AHE)见下图:
限制对比度自适应直方图均衡(CLAHE),见下图:
从效果上来看CLAHE算法效果比较好,提亮了暗处高亮处不至于过曝;AHE算法需要添加参数,参数不同影响增强效果不同,并且影响很大;HE算法全局提亮整体略亮。
感兴趣的同学可以到峩的github下载这些代码运行看看链接如下: