CLAHE 使用的一些经验
直方图包含了什么信息
两张我觉得不错的图像
两张我觉得有雾或者曝光不足的图像
单从直方图无法准确判断出一张图质量如何
一张好的图片往往拥有如下特征:
最暗值从0开始,最大值接近或者是255,每一个亮度都有一定分布。
不好的图片往往有如下特征:
某个亮度(0 或者 255)有很多很多像素
0附近亮度空缺,也就是全图缺少暗点
画面主体(人物)或者总画面平均亮度过低,过高
什么是CLAHE
原理
在一定限制下,将输入的直方图尽可能的均衡,让其每个亮度拥有差不多个数的像素。
这个限制是指,不能将映射折线的斜率过大,也就是不能将某个亮度过度放大或者缩小。
实现方式(不考虑分块)
计算输入图像的直方图
根据clip- limited 裁剪掉超过 clip-limited * total pixel / 256的像素
将裁减掉的像素均分给每一个亮度,形成新的直方图
计算新直方图的累计分布曲线(LUT)
该曲线就是CLAHE的映射曲线,使用该曲线对原图进行映射
算法本身缺陷
好的直方图不一定是均衡的。尤其是分块之后,小块内直方图不均衡很正常。
由于clip- limited的存在,算法对那种个别亮度拥有过多像素的case不合适
clip- limited选择与图像及其效果
理论上,当图像亮度分布十分均匀,每个亮度都有1/256 * totalpixel的时候,直方图均衡化算法无效,但实际中的图片哪怕曝光,色彩内容都很好很丰富,还是会存在一些不均匀的。
原图\clip limit | 0.2 | 0.4 | 0.8 | 1 | 1.4 | 1.8 | 2.5 |
---|---|---|---|---|---|---|---|
比较均匀 | 无改变 | 逐渐增加 | 逐渐增加 | 逐渐增加 | 逐渐增加 | 程度相同 | 程度相同 |
轻微不匀 | 逐渐增加 | 逐渐增加 | 逐渐增加 | 逐渐增加 | 逐渐增加 | 逐渐增加 | 程度相同 |
不均 | 逐渐增加 | 程度相同 | |||||
严重不均 | 逐渐增加 |
随着clip limited的增加(0.4 1 2)直方图分布看似越来越均衡,但是画面质量却在下降
直观效果
当图片某段曝光缺失(比如过暗,过亮),那clahe会稍微拉会一些平均亮度
当图片主体还算正常,但是暗部亮度像素相对较少(这种情况很常见,也许原图是好图片),clahe会随着clip limited的增大,更夸张的把中暗部压暗,中亮度提亮,拉伸对比度。
由于映射是离散的,当(a-1)/255 * total < CFD(a) < (a+1)/255 * total时 a不会发生变化;当CFD(a-1) = (a-1)/255 * total , CDF(a) = (a+1)/255 * total 时,也就是a亮度有很多像素,a会被映射到a+1 而a-1还保持a-1,a亮度本身出现像素空缺。