本发明属于计算摄影学和数字图像处理领域,涉及图像的高动态范围重建方法,尤其是基于深度学习的图像高动态范围重建方法。
背景技术:
高动态范围成像(highdynamicrangeimaging,hdri)技术是用来实现比普通数字图像更大曝光范围的一种图像表示方法,高动态范围(highdynamicrange,hdr)图像可以提供比普通数字图像更大的亮度变化范围和更多的明暗细节,这使得hdr图像能够呈现更加接近真实场景的亮度变化信息。近年来,随着显示设备的不断进化和基于物理渲染的需求提高,高动态范围成像技术在实际应用中变得越来越重要。然而,目前直接获取hdr图像的方法需要较高的专业技能,成本较高且耗时。针对从单幅普通数字图像中重建hdr的方法,传统方法只能通过增加约束的方法来尽可能减少问题的非适定性,这使得它们只能针对某些特定应用场景有效。一些学者也基于深度学习做了一些卓有成效的工作,但他们未能考虑到诸如hdr图片间的亮度等级不变性等因素导致重建效果有局限性。该发明可以从单幅普通数字图像中有效地重建出真实场景的动态范围,可用于普通数字图像的hdr模拟效果显示或为基于图像照明技术提供更逼真的渲染效果。
技术实现要素:
本发明的目的是从单张普通数字图像中尽可能恢复原场景的高动态范围图像。这里普通数字图像是指以8位颜色深度、256色阶保存的低动态范围(lowdynamicrange,ldr)图像,高动态范围图像指以“.exr”或“.hdr”等格式保存的接近真实场景明暗变化的高动态范围图像。
为了达到上述目的,本发明采用基于深度学习的方法建立了一个从ldr图像到hdr图像的映射网络,通过训练数据对网络进行学习训练,使其建立一个端到端的ldr图像到hdr图像的映射关系,整体框架图如附图1所示。算法分为数据预处理和深度神经网络训练两个部分。数据预处理部分包括训练样本对的生成、hdr图像亮度单位的对齐和图像高光区域掩码的生成三个部分。神经网络结构分为基本hdr重建网络和训练优化网络,如附图2所示。其损失函数包括三项,分别为hdr重建图像的尺度不变损失、高光区域分类的交叉熵损失和生成对抗损失。
该方法具体包括以下内容和步骤:
一、数据预处理
1)生成ldr训练样本输入
在使用深度神经网络进行有监督训练之前,需要获取对应网络输入输出的训练数据集。训练数据集包含若干ldr-hdr图像对,其中hdr图像数据可使用现有可用的hdr图片,该数据作为训练样本的标签,用于监督网络的训练;ldr图像数据作为hdr图像对应的样本输入,需要从原hdr图像中生成,其生成方法有两中途径,一是使用色调映射算法完成从hdr图片到ldr图片的生成,二是通过构建虚拟相机的方式以hdr图像作为模拟场景对齐进行模拟拍摄从而得到ldr图片。
使用色调映射算法生成ldr图像:选择一种适当的色调映射算法,直接将hdr图像作为算法输入即可得到对应的ldr图像输出。
通过构建虚拟相机来获取ldr图像:首先基于常用的数码单反相机确定虚拟相机动态范围的取值范围,对于每一次获取ldr图像都随机选取范围内的一个值作为该次模拟拍摄的相机的动态范围;然后虚拟相机根据输入的hdr图像进行自动曝光,对亮度超出虚拟相机动态范围的像素取边界值,再将其线性映射至ldr图像的低动态范围;最后,将所得到的图像从线性空间通过随机选择的近似相机响应函数映射为普通数字图像,即得到所需要的ldr图像。
2)对齐hdr样本标签
对于保存在相对亮度域的hdr图像,在将其作为训练样本标签前,需对齐它们的亮度单位。设原始hdr图像为h,ldr图像转换到线性空间并归一化到[0,1],设为l,hl,c,ll,c分别为图像在位置l,通道c处的像素值,其对齐方法为:
其中
其中τ为[0,1]的常数。对齐后的hdr图像与其对应的ldr图像组成供神经网络训练的训练样本对。
3)生成高光掩码图像
得到对齐的hdr图像后,可以通过二值化的方式获取图像中高亮度区域的掩码图像。该掩码图像中值为1的区域代表场景中拥有较高亮度的物体或表面,如光源、强光反射面等。这些高光区域在ldr图像中往往会由于过曝光而被裁剪亮度,通过从hdr图像生成的高光掩码图像可作为网络优化训练部分的样本标签,用于优化神经网络的训练过程。
二、神经网络的训练
1)神经网络结构
网络结构主要分为生成网络和判别网络两个部分,结构示意图如附图3所示。其中生成网络为一个u-net结构,网络接受一张ldr图像作为输入,经过由resnet50模型构成的编码网络和6层“上采样+卷积层”模块构成解码网络后,分别输出一张hdr图像和高光掩码图像。网络输出的hdr图像即为根据ldr输入图像得到的hdr重建图像,而高光掩码图像作为网络对ldr图像中高光区域的预测,可作为优化网络训练的数据。判别器网络为一个由4层卷积层构成的全卷积网络,该判别器接受一张hdr图像与高光掩码图像作为输入,输出一张表征所输入的hdr图像为真实hdr图像或者是网络生成的虚假hdr图像的概率的特征图,该特征图可作为训练神经网络的数据。
2)神经网络的训练方法
该发明采用有监督学习的方式对上述网络进行训练。训练采用adam优化器分别逐次对生成网络和判别网络进行反向传播优化,其中生成网络共包含三组优化函数,损失函数定义如下:
lg=α1lhdr+α2lmask+α3lgan
该损失分别由三个损失函数控制,包括hdr重建图像的尺度不变损失、高光区域分类的交叉熵损失和生成对抗损失。
hdr重建图像的尺度不变损失:该项损失函数依据hdr图像在相对亮度域中具有尺度不变性提出,该项损失控制网络输出的hdr图像使其尽可能与hdr标签值接近。其定义如下:
其中y表示网络输出的hdr图像,
高光区域分类的交叉熵损失:该项损失控制网络对图片中高亮度区域的检测。网络输出的高光掩码图像为对输入ldr图像中高光区域或非高光区域的分类结果,该结果应与预处理步骤时生成的高光掩码图像尽可能接近。该损失函数定义如下:
其中m,
生成对抗损失:该项损失能使网络预测的hdr图像在分布上尽可能接近真实的hdr图像,防止预测结果与标签结果仅在数值差异上减小而忽视整体分布的差异。该损失函数定义如下:
其中d(y)为判别网络以生成网络输出为输入的计算结果。
判别网络的损失函数为标准wgan-gp损失,该项控制判别网络使其尽可能准确判断输入判别网络的图像是否为真实hdr图像。其定义如下:
其中∈为[0,1]的随机数。
根据上述训练方法对网络进行训练,当损失函数收敛后,生成网络便建立了一个从单张ldr图像到hdr图像的映射关系。利用该训练好的生成网络,即可完成从单幅普通数字图像尽可能重建真实的高动态范围图像的目标。
与现有技术相比,本发明有如下优点:
1.本发明构建了一个端到端的神经网络,仅需一张图片就能重建出足够真实的hdr图像,且无需人工交互的步骤;
2.本发明基于尺度不变性对hdr数据进行对齐和训练网络,能达到更好的重建效果;
3.本发明通过生成高光掩码图像对网络训练进行优化,能获得高亮度区域更好的重建效果。
附图说明
图1是本发明的总框架图;
图2是本发明的深度神经网络结构图;
图3是本发明的效果示意图。
具体实施方式
下面结合附图和实施例对本发明的技术方案作进一步说明。
如图1所示,本发明为一种基于深度学习的图像高动态范围重建方法,包括以下步骤:
步骤1,预处理hdr数据集以构建神经网络的训练数据。首先从收集到的hdr数据集中生成ldr数据,然后使用ldr-hdr数据来对齐hdr数据,再利用对齐后的hdr图像生成高光掩码图像,最后将这三者整合作为神经网络的训练数据。其中ldr数据为数据输入,对齐的hdr数据和高光掩码图像为标签数据。
步骤2,构建并训练神经网络以得到具有ldr到hdr映射关系的网络模型。根据训练策略,逐次轮替地对生成网络和判别网络进行反向传播训练,直到损失函数收敛。此时,生成网络部分即为最终用于重建高动态范围图像的网络模型。
步骤3,根据步骤2训练得到的生成网络模型,直接将待重建的ldr图像输入至网络模型,即可输出其重建的hdr图像。
下面结合实例对该方法进行详细说明。
一、数据预处理
hdr数据集选取现有的公共hdr数据集构成,通过对收集数据进行裁剪、缩放等操作组成一组尺寸、类型相同的数据集。根据此整合的数据集,分别应用显示适应的色调映射(displayadaptivetonemapping)算法和前述的虚拟相机拍摄的方式获取ldr数据。关于色调映射,根据实际应用时图片的类型选取,比如如果应用时的大多图片是未经后期处理拍摄的图片,就选择本实施例这个的方法。如果是针对某处理的图片,就选取一种与后处理效果相近的方式。具体地,对每一张hdr图像,应用显示适应的色调映射算法获取一张ldr图像,再应用随机参数的虚拟相机进行一次拍摄获取一张ldr图像,即每张hdr图像生成两张不同方法获取的ldr图像。生成的ldr图像转换至线性空间,并从范围[0,255]的整数值归一化至[0,1]的小数值。
然后基于每一对ldr-hdr图像对其中的hdr图像进行亮度对齐。对齐方法参照说明内容中的公式进行:
其中
其中τ可为[0,1]的常数,这里取τ=0.08。将该公式应用到每一对ldr-hdr图像后,得到对齐的hdr图像数据,该数据将作为训练网络时的样本标签,而ldr图像数据作为样本输入。
最后,基于对齐的hdr数据,由如下公式计算高光掩码图像:
其中
二、神经网络训练
神经网络的结构依照附图2所示进行搭建。具体地,对于resnet50模型,这里使用现有的基于imagenet数据集的分类任务中已训练好的模型作为该部分网络权重的初始化值;其余每一个网络块都代表一个由卷积层和实例规范化操作以及relu激活函数组成的卷积块;生成网络中decoder部分的输入由上一层卷积块的输出和encoder对称位置的输出拼接而成;对于判别器网络部分,其输入由生成网络的输出组成,在经过四层卷积块后,输出一张判断输入hdr图像是否为真实图像的概率特征图。
其中,生成网络的输出与对应输入的样本标签数据,以及判别网络根据该输出数据计算的到的概率特征图,一同根据如下公式计算生成器损失:
lg=α1lhdr+α2lmask+α3lgan
该损失分别由三个损失函数控制,包括hdr重建图像的尺度不变损失、高光区域分类的交叉熵损失和生成对抗损失。
hdr重建图像的尺度不变损失:该项损失函数依据hdr图像在相对亮度域中具有尺度不变性提出,该项损失控制网络输出的hdr图像使其尽可能与hdr标签值接近。其定义如下:
其中y表示网络输出的hdr图像,
高光区域分类的交叉熵损失:该项损失控制网络对图片中高亮度区域的检测。网络输出的高光掩码图像为对输入ldr图像中高光区域或非高光区域的分类结果,该结果应与预处理步骤时生成的高光掩码图像尽可能接近。该损失函数定义如下:
其中m,
生成对抗损失:该项损失能使网络预测的hdr图像在分布上尽可能接近真实的hdr图像,防止预测结果与标签结果仅在数值差异上减小而忽视整体分布的差异。该损失函数定义如下:
其中d(y)为判别网络以生成网络输出为输入的计算结果。
判别网络的损失函数为标准wgan-gp损失,该项控制判别网络使其尽可能准确判断输入判别网络的图像是否为真实hdr图像。其定义如下:
其中∈为[0,1]的随机数。
其中α1,α2,α3分别取1,0.1,0.02,每一项损失的具体计算公式如发明内容中描述。根据计算得到的损失值,使用adam优化算法对网络进行反向传播并更新权重。另外,每次更新完生成网络的权重,需要继续计算判别网络的损失并更新判别网络的权重,其更新算法同样使用adam算法,具体公式如发明内容中描述。
依照上述训练方法,每次交付一对或多对训练数据供网络训练,对整个训练数据集依次循环迭代,直至损失函数收敛,网络即训练完成。
(三)网络模型应用
在网络训练完成后,将生成网络部分的网络及其权重参数提取出来即得到了最终的高动态范围图像的重建模型。利用该模型,每次仅需要一张ldr图片作为输入,即可得到近似真实的hdr图片。附图3展示了一个应用的示例,其中生成网络模型即通过前述方法训练好的神经网络中的生成网络部分,该模型可接受任意尺寸的ldr图片作为输入,并直接输出同尺寸下的hdr重建图像。
本发明基于深度学习提出了一个单张普通数字图像重建高动态范围的方法,可对一般场景的图像进行有效、逼真的高动态范围重建。本发明应用广泛,根据对不同数据集进行训练可以适应不同需求的场景,且对于同一训练集仅需训练一次便可多次应用。