发明内容
本发明的目的是提供一种高动态范围图像色调映射方法,解决了现有方法中存在的“光晕”及显示效果不够好的问题。
本发明采用的技术方案为,一种高动态范围图像色调映射方法,按照以下步骤实施:
步骤1,获取高动态范围图像的亮度图像Lin,并取对数形成对数域亮度图像L,其中的R、G、B分别为高动态范围图像各像素的红、绿、蓝颜色值,其计算为:
Lin=0.299R+0.587G+0.114B,
L=log(Lin+0.00001);
步骤2,对L进行多尺度WLS滤波,估计出多尺度的光照分量Lk,其中的k=1,2,...,以避免明暗对比强烈处产生的“光晕”现象,其表示为:
Lk=WLS(L,λk),
其中算子WLS(·)表示进行WLS滤波,λk代表尺度因子,其取值决定了光照分量图像Lk的平滑程度,增大λk,将使得平滑程度增加,通常可根据实验情况确定其取值;
步骤3,采用多尺度Retinex方法恢复高动态范围图像的亮度成分,即:
其中N代表尺度个数,ωk为不同尺度的权重系数,且
步骤4,对RL取指数,得到R1,即:R1=exp(RL);
步骤5,消去R1两极端1%的灰度级,防止欠曝光与过曝光的产生,并进行归一化,得到R2,即:
其中ms是R1中像素值从小到大排序后,1%的像素处所对应的R1的值;ml是R1中像素值从小到大排序后,99%的像素处所对应的R1的值;
步骤6,采用自适应调节函数对R2进行调节,并将其灰度值映射到[0,255]的范围,即:
其中,调节参数b可获得不同明暗程度的图像,b的取值范围为[0.5,1.0];
步骤7,引入指数控制饱和度,采用如下计算公式,进行色彩恢复,即完成高动态范围图像色调映射:
其中指数s为控制饱和度,Rout、Gout、Bout分别为高动态范围图像经色调映射后最终得到的红、绿、蓝颜色值。
本发明的有益效果是,采用多尺度WLS滤波器估计高动态范围图像的光照分量,较好地克服色调映射过程中存在的“光晕”问题;通过去除两极端1%的灰度级及采用自适应调节函数,使色调映射后的图像具有对比度高、细节显示效果好的特点,能够在低动态范围显示设备上能够更好地再现高动态范围图像。
具体实施方式
下面通过具体实施方式对本发明进行详细说明。
本发明的高动态范围图像色调映射方法,按照以下步骤实施:
步骤1,获取高动态范围图像的亮度图像Lin,并取对数形成对数域亮度图像L,其中的R、G、B分别为高动态范围图像各像素的红、绿、蓝颜色值,其计算为:
Lin=0.299R+0.587G+0.114B,
L=log(Lin+0.00001);
步骤2,对L进行多尺度WLS滤波,估计出多尺度的光照分量Lk,其中的k=1,2,...,以避免明暗对比强烈处产生的“光晕”现象,其表示为:
Lk=WLS(L,λk),
其中算子WLS(·)表示进行WLS滤波,λk代表尺度因子,其取值决定了光照分量图像Lk的平滑程度,增大λk,将使得平滑程度增加,通常根据实验情况确定其取值。
对于多尺度WLS滤波,其具体计算为:
Lk=(I+λkLg)-1L,
其中,I为单位矩阵,λk为尺度因子,Lg为:
其中的Dx、Dy分别为水平和垂直方向差分因子,T代表矩阵的转置,Ax、Ay均为对角矩阵,其对角线元素分别为ax,p(L)、ay,p(L),其计算为:
其中参数α用来表示控制平滑过程对图像边缘的敏感程度,取值范围是1.0-1.8;参数l=log(L+0.000001),常数ε取值为0.00001,主要是为了防止分母为零的情况出现。
步骤3,采用多尺度Retinex方法恢复高动态范围图像的亮度成分,即:
N代表尺度数,一般取3个尺度。
其中ωk为不同尺度的权重系数,且
步骤4,对步骤3得到的RL取指数,得到R1,即:R1=exp(RL);
步骤5,消去R1两极端1%的灰度级,防止欠曝光与过曝光的产生,并进行归一化,得到R2,即:
其中,ms是R1中像素值从小到大排序后,1%的像素处所对应的R1的值;ml是R1中像素值从小到大排序后,99%的像素处所对应的R1的值;
步骤6,采用自适应调节函数对R2进行调节,并将其灰度值映射到[0,255]的范围,即:其中,调节参数b的数值可获得不同明暗程度的图像,b的取值范围为[0.5,1.0];
步骤7,引入指数控制饱和度,采用如下的计算公式,进行色彩恢复:
即完成高动态范围图像色调映射,
其中指数s为控制饱和度,Rout、Gout、Bout分别为高动态范围图像经色调映射后最终得到的红、绿、蓝颜色值。
实施例1
本发明的高动态范围图像色调映射方法,通过以下步骤及具体参数实施:
步骤1,读取高动态范围图像,将其浮点型的数据转换为整型的RGB格式的数据,然后计算该高动态范围图像的亮度图像Lin,并取对数形成对数域亮度图像L,其计算为:
Lin=0.299R+0.587G+0.114B,
L=log(Lin+0.00001),
步骤2,对L进行多尺度WLS滤波,估计出多尺度的光照分量Lk(k=1,2,L),以避免明暗对比强烈处产生的“光晕”现象。其可以表示为:
Lk=WLS(L,λk),
其中算子WLS(·)表示进行WLS滤波,λk代表尺度因子,其取值决定了光照分量图像Lk的平滑程度,增大λk,将使得平滑程度增加,通常根据实验情况确定其取值。在本实施例中,采用三个尺度,即k=1,2,3,取λ1=1,λ2=5,λ3=25。
对于多尺度WLS滤波,其具体计算为:Lk=(I+λkLg)-1L,
其中I为单位矩阵,λk为尺度因子,Lg为:
其中,Dx、Dy分别为水平和垂直方向差分因子,Ax、Ay均为对角矩阵,其对角线元素分别为ax,p(L)、ay,p(L),其计算为:
其中参数α在本实施例中,取α=1.5。
步骤3,采用多尺度Retinex方法恢复高动态范围图像的亮度成分,即:
其中ωk为不同尺度的权重系数,且 在本实施例中,取3个尺度,相应的取ω1=0.25,ω2=0.5,ω3=0.25。取
步骤4,对RL取指数,得到R1,即:R1=exp(RL);
步骤5,消去R1两极端1%的灰度级,防止欠曝光与过曝光的产生,并进行归一化,得到R2,即:
其中ms是R1中像素值从小到大排序后,1%的像素处所对应的R1的值;ml是R1中像素值从小到大排序后,99%的像素处所对应的R1的值;
步骤6,采用自适应调节函数对R2进行调节,并将其灰度值映射到[0,255]的范围,即:调节参数b在本实施例中,取b=0.78。
步骤7,引入指数控制饱和度,采用如下计算公式,在本实施例中,取s=1/2.2。进行色彩恢复,即可完成高动态范围图像色调映射。
其中指数s为控制饱和度,Rout、Gout、Bout分别为高动态范围图像经色调映射后最终得到的红、绿、蓝颜色值。
图1是本发明实施例1处理后显示的一个高动态范围图像。为了更好地说明本发明方法的效果,图2是采用现有的方法,即基于Retinex的高动态范围图像色调映射方法处理后显示的高动态范围图像,图3是图1和图2的局部放大对比图,其中图3的上半部是图1中的黑框部位的局部放大图,图3的下半部是图2中的黑框部位的局部放大图。从图3可以对比看出,采用本发明方法与现有的基于Retinex的方法相比,能够更好地去除高动态范围图像色调映射后存在的“光晕”现象。值得说明的是,本发明方法及现有方法针对处理的是彩色的图像,由于申报文本的要求所限,所有附图已经变成灰度图进行显示,其“光晕”现象没有彩色图像逼真。
本发明的高动态范围图像的色调映射方法,针对局部化色调映射方法中易产生的“光晕”现象,通过WLS滤波估计光照分量,可以避免明暗对比强烈处产生的“光晕”现象;通过去除两极端1%处的灰度级,防止欠曝光与过曝光的产生,采用自适应调节函数对图像的明暗进行调节,使色调映射后的图像具有对比度高、细节显示效果好的特点。