顾名思义,该算法就是先对亮度进行分区,对不同区域的亮度值进行压缩,把压缩后的图像作为引导图像,对原图像进行引导滤波,本项目的引导滤波器使用的Open CV函数库内的函数。
亮度分区示意图:
使用上方的两个分区函数,找到分区界限,LA、LB。其中权重α取值如图:
然后把亮度分成三个区域[Lmin,LA]、[LA,LB]、[LB,Lmax],对这三个区域分别进行伽马校正。在校正过程中,会出现低亮度区域的最大值高于高亮度区域最小值的问题,所以伽马系数的取值要谨慎,通过大量实验最后得出当γ取值为5、1.25、0.83时效果最佳。
引导滤波示意图:
本算法参考的文献是:《一种亮度分区和导向滤波相结合的色调映射算法》
实现该算法共分为五步:
第一步:色彩空间转化和归一化
第二步:计算分区界限
Yav = (Ysum/(1.0*rows*cols));//求取对数平均值
//亮度分区计算
double key=(Yav-log(Ymin+a))/(log(Ymax + a)-log(Ymin + a));
LD=Ymax-(0.9+0.1