在项目中,本人直接使用了Open CV提供的双边滤波器,对原理不是很理解,只知道他可以保持边缘、起到平滑的作用。
本人参考的论文名字《Fast Bilateral Filtering for the Display of High-Dynamic-Range Images》,核心思路就是:把原图分解成基本层和细节层,然后增强基本层数据,保留细节层数据,最后融合基本层和细节层。过程如下图:
细分可分为以下步骤(参考博客):伪代码
//1、色彩空间转化,转换成亮度值图像
input intensity= 1/61*(R*20+G*40+B);
//2、双边滤波得到基本层数据
log(base)=Bilateral(log(input intensity));
//3、计算得到细节层数据
log(detail)=log(input intensity)-log(base);
//4、计算增强因子,增强基本层图像,并融合
targetContrast=log(5);
compressionfactor = targetContrast/(max(log(base)) - min(log(base))) ;
log_absolute_scale= max(log(base))*compressionfactor;
log (output intensity)=log(base)*compressionfactor+log(detail) - log_absolute_scale;
//5、还原色彩空间
r=R/(input intensity), g=G/input intensity, B=B/input intensity;
R output = r*10^(