一种图像阴影去除方法、装置、计算机设备和存储介质与流程

文档序号:32009384发布日期:2022-11-02 16:10阅读:41来源:国知局
一种图像阴影去除方法、装置、计算机设备和存储介质与流程

1.本发明涉及图像处理技术领域,具体涉及一种图像阴影去除方法、装置、计算机设备和存储介质。


背景技术:

[0002][0003]
图像阴影去除在计算机视觉和计算机图形学中有着重要应用。目前,卷积神经网络技术高速发展,因此通过卷积神经网络端到端的处理过程实现图像阴影的去除已经成为主流方案。
[0004]
但是,目前的基于卷积神经网络进行图像阴影去除的方案多采用vgg网络机构,由于vgg网络数据特征提取能力有限,以及使用少量的深浅层特征融合,因此在图像阴影去除方面效果不佳。


技术实现要素:

[0005]
发明目的:为克服现有技术的缺陷,本发明提出了一种图像阴影去除方法、装置、计算机设备和存储介质。本发明采用了基于像素级语义分割的卷积图像分割网络unet,使用了大量多层的深浅层特征融合和改进的损失函数,使得整个网络模型有着强大的特征提取和图像还原能力,在图像阴影去除方面达到了更加出色的效果。
[0006]
技术方案:为实现上述目的,本发明提出了一种图像阴影去除方案,该方案基于unet实现,unet是一种自编码结构的图像分割神经网络,自编解码结构意味着它有图像还原能力,而图像分割意味着他有阴影检测能力。如果将检测到具有阴影图像的特征向没有阴影图像的特征靠拢然后再还原,这样就可以一次性完成图像阴影去除。
[0007]
基于上述原理,本发明提出了以下方案:
[0008]
第一方面,本发明提出一种图像阴影去除方法,包括以下步骤:
[0009]
(1)构建训练样本:获取多对样本图像,每对样本图像包括一幅只有背景的无阴影图像和一幅相同背景下只带有阴影的阴影图像;
[0010]
(2)构建基于unet的阴影图像去除模型;
[0011]
(3)将每对样本中的阴影图像作为输入图像,将阴影图像作为标签图像,训练所述模型;在训练过程中,使用损失函数对预测图像和相应的标签图像做损失计算,再梯度更新所述unet网络每一层的权重,使得所述unet网络中每层卷积神经网络的上采样部分输出的预测图像和由所述预测图像融合成的单幅预测图像分别逼近所述标签图像,同时,使得每个预测图像的颜色空间通道图像及所有颜色空间通道图像融合成的整体预测图像逼近所述标签图像;
[0012]
(4)所述阴影图像去除模型训练完成后,通过所述阴影图像去除模型对输入的带阴影图像进行阴影去除。
[0013]
针对所述图像阴影去除方法,以下还提供了若干可选方式,但并不作为对上述总
体方案的额外限定,仅仅是进一步的增补或优选,在没有技术或逻辑矛盾的前提下,各可选方式可单独针对上述总体方案进行组合,还可以是多个可选方式之间进行组合。
[0014]
可选的,在所述图像阴影去除方法中,所采用的损失函数为:
[0015][0016]
其中,l表示整体损失,n表示所述unet网络中卷积神经网络的层数,c表示所述预测图像的rgb颜色空间通道总数,表示对第n层卷积神经网络输出的预测图像的第i个颜色空间通道图像做损失计算的损失函数,表示对第n层卷积神经网络输出的预测图像做损失计算的损失函数,f
fuse
表示对所述整体预测图像做损失计算的损失函数,表示对所述整体预测图像做损失计算的损失函数,和w
fuse
为权重系数。
[0017]
可选的,所述损失函数由和f
fuse
三个子损失函数构成,而这三个子损失函数均由相应的二值交叉熵损失函数和均方误差损失函数构成,即:
[0018][0019][0020][0021]
其中,ψ
boe
表示二值交叉熵损失函数,φ
mse
表示均方误差损失函数,w
boe
和w
mse
均为权重系数;h和w分别表示图像的高和宽,(i,j)表示图像中的像素坐标,p
g(i,j)
和p
s(i,j)
分别表示在标签图像和预测图像中坐标为(i,j)处的像素点的颜色值。
[0022]
可选的,所述阴影图像去除模型采用u2net网络实现。
[0023]
第二方面,本发明提出一种图像阴影去除装置,包括:图像输入模块、图像处理模块和图像输出模块;其中,
[0024]
所述图像输入模块用于采集输入图像并进行图像预处理,然后将预处理之后的图像输入所述图像处理模块;
[0025]
所述图像处理模块用于基于权利要求1至4任意一项所述的图像阴影去除方法,对输入的图像进行阴影去除;
[0026]
所述图像输出模块用于对所述图像处理模块输出的图像进行格式处理,以符合预设的输出图像格式要求。
[0027]
针对所述图像阴影去除装置,以下还提供了若干可选方式,但并不作为对上述总体方案的额外限定,仅仅是进一步的增补或优选,在没有技术或逻辑矛盾的前提下,各可选方式可单独针对上述总体方案进行组合,还可以是多个可选方式之间进行组合。
[0028]
可选的,所述装置还包括图像显示模块,所述图像显示模块用于显示取出阴影之后的图像。
[0029]
第三方面,本发明提出一种存储介质,所述存储介质存储有计算机程序,所述计算
机程序被执行时,实现所述的图像阴影去除方法。
[0030]
第四方面,本发明提出一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,实现所述的图像阴影去除方法。
[0031]
有益效果:
[0032]
相比于现有的基于卷积神经网络去除图像阴影的技术方案,本发明采用了unet网络结构作为图像阴影去除模型,利用unet网络的图像分割功能实现阴影检测,利用unet网络的自编解码结构实现图像还原,再结合本发明设计的独特的损失函数,在训练过程中同时使用了多层次和单层次、多通道与单通道的预测图像与标签图像做损失计算,将检测到具有阴影图像的特征向没有阴影图像的特征靠拢然后再还原,这样就可以一次性完成图像阴影去除,且去除阴影之后的图像纹理清晰、细节表现佳。
附图说明
[0033]
图1为实施例1涉及的流程图;
[0034]
图2为实施例1涉及的u2net网络结构图;
[0035]
图3为实施例2涉及的装置结构图。
具体实施方式
[0036]
下面结合附图和具体实施例,进一步阐明本发明,应理解这些实例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本技术所附权利要求所限定的范围。
[0037]
实施例1:
[0038]
本实施例提出一种图像阴影去除方法,具体流程如图1所示,主要包括:
[0039]
步骤1:样本采集;
[0040]
步骤2:样本数据的预处理和扩充;
[0041]
步骤3:构建基于图像分割的卷积神经网络模型;
[0042]
步骤4:设计损失函数;
[0043]
步骤5:数据集划分成训练集和测试集;
[0044]
步骤6:加载数据到卷积神经网络模型进行训练和测试;
[0045]
步骤7:推理和应用。
[0046]
下面对每一个步骤进行具体阐述。
[0047]
一、样本采集。
[0048]
样本的采集分为线上公开数据集的收集和线下人工实景拍照采集。
[0049]
线上公开阴影去除数据集基本都包含带阴影的图像a、阴影的掩码图b和和无阴影的图像c,如istd,desoba等。
[0050]
线下人工实景拍照采集使用固定三脚架将相机固定,保证所拍有和无阴影照片使用相同的参数(如:位置、角度、尺寸、焦距、曝光度、色调等)和相同的区域,并且不作为阴影目标的区域内是不能有阴影的,要么丢弃该类场景拍摄区域,要么将所有有阴影的区域都作为目标再经过处理后得到对应的无阴影图像c。由于阴影的产生受到天气影响,在光照弱时可以使用可调节流明的强光手电筒代替。根据拍摄阴影目标的不同,含阴影照片可分为
以下四种类型:
[0051]
1、可移动无阴影源物体的含阴影照片(如不含人的人影照片);
[0052]
2、可移动含阴影源物体的含阴影照片(如含人和人影的照片);
[0053]
3、不可移动无阴影源物体的含阴影照片(如不含建筑物的建筑物阴影照片);
[0054]
4、不可移动含阴影源物体的含阴影照片(如含建筑物和建筑物阴影的照片)。
[0055]
对于类型一(可移动无阴影源物体的含阴影照片)的采集方法比较简单,设定好相机参数后,实景拍摄中含阴影部分(通常在地面)的照片a,由于阴影的源物体是可移动的,然后移开阴影源物体并使用同样的相机参数对相同的拍摄区域再次拍摄,这样可得到无阴影的照片c。网上公开的阴影数据集istd属于此类类型。
[0056]
对于类型二(可移动含阴影源物体的含阴影照片)的采集方法相对于类型一而言略为复杂,区别在于拍摄的区域不仅含实景部分、阴影部分还包含阴影源物体部分,可以先拍下该区域后得到照片a,然后移开阴影源物体并使用同样的相机参数对相同的拍摄区域再次拍摄从而得到无阴影照片c。由于无阴影照片c中并不包含阴影源物体,可以先通过人工标注出阴影区域或使用现有的人工神经网络自动检测/分割出阴影区域得到对应的阴影掩码图b,再通过图形矩阵中的位运算将含阴影源物体的阴影图像中的阴影源物体合成到无阴影图像c中(数据预处理部分将具体描述合成过程)。网上公开的阴影数据集desoba中大部分样本属于此类型。
[0057]
对于类型三(不可移动无阴影源物体的含阴影照片)的采集方法主要采用模拟真实场景和光照方法实现。模拟真实场景是将要拍摄的真实场景进行缩小做成一个模型(例如一个可拆卸的楼盘模型),将不可移动的阴影源物体变得可移动。如果模拟的真实场景模型是在室内或在光线较弱的地方,这需要额外模拟光照,通过使用可调节流明的强光手电筒模拟太阳光实现。后续的样本采集/拍摄步骤可使用类型一方法。
[0058]
对于类型四(不可移动含阴影源物体的含阴影照片),可以使用类型三的方法先模拟真实场景和光照,然后使用类型二的方法进行样本采集/拍摄。
[0059]
二、样本数据的预处理和扩充
[0060]
1、样本的检查和匹配。线下实景拍摄采集到的样本根据照片描述的内容进行匹配,将含阴影照片存放到目录x,无阴影的照片存放到目录z,使用相同的文件名来保持匹配关系,将匹配不到的照片丢弃处理。而线上收集的样本也同样需要对每一组样本进行检查。检查和匹配的标准为:有阴影照片a和无阴影照片c在完全相同的场景区域,它们的拍摄位置、角度、尺寸和焦距也完全相同,而他们的曝光度和色调可以有小范围偏差(在后续流程中有修正操作)。
[0061]
2、样本的标注。对于通过线下实景拍摄采集的样本,为了后续的修正和扩充操作,将对样本的阴影部分进行标注。标注可以使用标注软件进行人工标注也可以使用现有的人工神经网络自动检测/分割出阴影区域,其目的是生成阴影的掩码图b(即描述阴影所在区域的遮罩图,尺寸和含阴影图a相同,a中的阴影区域在b中对应区域的像素值为255,非阴影区域的像素值为0)然后放入目录y。对于网上收集的样本如istd和desoba,由于已经包含了图像阴影掩码图b,所以直接放入目录y中即可。
[0062]
3、样本的修正。由于采集的图像样本无论是线上收集还是线下人工实景拍摄,由于通过拍摄得到的两张照片(有阴影图a和无阴影图c)存在时差,那么就很有可能出现光线
和色调的误差,只要误差不是很大,就可以进行修正。其原理是通过图像矩阵的位运算用阴影图像a中的阴影部分去覆盖无阴影图c对应的部分合成新的有阴影图像a

。使用集合运算表示为:
[0063][0064]
其中,a

为合成后的含阴影图像矩阵,a为含阴影图像矩阵,b为阴影掩码图像矩阵,c为无阴影图像矩阵,i和j为矩阵下标,m和n为图像宽和高或矩阵的行数和列数。
[0065]
4、样本的缩放旋转扩充。为了提高卷积神经网络的鲁棒性,可以将样本进行缩放成不同尺寸和旋转成不同角度来扩充样本,这种操作也叫数据增强。通常图片缩放的尺寸是8的倍数且宽高相同,而旋转的度数可以每5度保存一次旋转结果。
[0066]
三、构建基于图像分割的卷积神经网络模型
[0067]
unet是一种自编码结构的图像分割神经网络,自编解码结构意味着它有图像还原能力,而图像分割意味着他有阴影检测能力。如果将检测到具有阴影图像的特征向没有阴影图像的特征靠拢然后再还原,这样就可以一次性完成图像阴影去除。
[0068]
unet系列有:unet,unet++,u2net,unet+++,attunet,transunet,swinunet等。
[0069]
这里示例性地选择了u2net,它是一种显著性目标检测的图像分割卷积神经网络,能达到像素级语义分割,通过对数据集的采集、预处理、网络和损失函数的少量修改,将数据集加载到该网络训练和测试后,达到了我们期待的效果,纹理清晰、细节表现佳。
[0070]
如图2所示,u2net一共使用了6层对称的卷积神经网络,每层包含对称的下采样和上采样两个子卷积神经网络,第6层是高维特征的提取和上采样过渡层(只有一个子卷积神经网络)。每层的子卷积神经网络与外层结构类似,同样是u形结构,这就是u2net名字由来,u的平方net。
[0071]
在u2net模型中使用多层次的深浅特征通道融合1次,对称性深浅特征通道融合共计29次,批归一化batchnorm共计112次,卷积层conv2d共计130次,非线性激活函数leakyrelu共计112次,使用残差网络11次,最大池化maxpool共计33次,下采样32次,上采样32次。
[0072]
下采样是做特征提取得到的是更深层的语义特征;而上采样是做特征恢复得到的是更浅层的轮廓特征来进行图像还原。将每层对应的下采样和上采样得到的深层和浅层特征进行通道融合能够增强特征对图像的表达能力,轮廓和细节纹理更加完善。每一个下采样过程都包含一个嵌套的卷积神经子网络和一个最大池化层;而上采样过程是与下采样过程相逆的过程,同样包含一个嵌套卷积神经子网络和一个基于线性插值法的上采样函数。
[0073]
各层的子卷积神经网络的层数根据特征状态有所不同,当特征比较浅时子网络的层数较多,随着特征的不断提取而变得越来越深时,网络的层数逐渐变少。每个子网络都是一个u形结构的残差网络,增强了特征的流动性,解决了梯度消失问题;也同样在对称子层使用了深浅层通道融合来增强特征的表达能力;每一个子层使用了卷积、批归一化、非线性激活、最大池化操作和对应非线性插值函数进行上采样操作。
[0074]
四、设计损失函数
[0075]
本实施例使用了两种比较常见的损失函数:交叉熵和均方误差,需要说明的是这里同时使用了多层次和单层次、多通道与单通道的预测图像与标签图像做损失计算。在训练过程中先使用损失函数做损失计算再梯度更新每一层的权重使得6层卷积神经网络各层
上采样部分输出的预测图像靠着真实的标签图像逼近,并把这6个预测图像进行通道融合成单张预测图再靠着真实的标签图像逼近;同时也将预测图的rgb颜色空间各通道图像和融合后的图像靠着标签图像逼近。
[0076]
整体损失l定义为:
[0077][0078]
其中,n=6,表示对6层预测图像做损失计算,c=3,表示对预测图的rgb颜色空间的每一个通道图像做损失计算;和f
fuse
为三个子损失函数,其中,表示对第n层卷积神经网络输出的预测图像的第i个颜色空间通道图像做损失计算的损失函数,表示对每层预测图(rgb三通道合成后的图像)做损失计算的损失函数,f
fuse
表示将6层预测图通道融合后的整体预测图做损失计算的损失函数,而和w
fuse
表示对应损失函数的权重。
[0079]
每个子损失函数f由两种损失函数组合而成,定义为:
[0080][0081][0082][0083]
其中,ψ
boe
表示二值交叉熵损失函数,φ
mse
表示均方误差损失函数,w
boe
和w
mse
均为权重系数;h和w分别表示图像的高和宽,(i,j)表示图像中的像素坐标,p
g(i,j)
和p
s(i,j)
分别表示在标签图像和预测图像中坐标为(i,j)处的像素点的颜色值
[0084]
通过对预测图像与真实标签图像损失计算和梯度计算,让神经网络知道了当前的学习状态和未来的学习方向并朝着这个方向不断优化网络各层权重,再经过不断的迭代训练学习,让预测出来的无阴影图像与标签无阴影图像越来越相似,最终达到图像去阴影效果。
[0085]
五、数据集划分成训练集和测试集
[0086]
在采集到的数据集中,以目录x中文件名为准,在x、y、z目录中随机抽取20%的样本作为测试集,剩下的80%样本作为训练集。其中,目录x的内容为输入样本/带阴影图像,目录y的内容为阴影掩码图(暂时不用),目录z的内容(无阴影图像)为样本标签图像。
[0087]
分别将训练集样本打乱顺序再分批,每一批样本数量根据显卡内存容量设置,对批内图像样本利用线性插值法和黑边填充法统一等比压缩成高h等于宽w的方形图(方便做矩阵运算),它的大小根据实际需求和显存容量而定,通常是8的倍数,如512x512。如果要去除阴影的图像是高清图像且所占空间超过了显卡最大存储容量,可以使用显存可容纳的最大方形尺寸作为样本的载入尺寸,每批样本数量设为1,在最后的推理阶段可使用超分辨率技术进行还原。
[0088]
为了避免数值过大造成的计算问题或溢出问题,还需对样本数据进行归一化处理将数据映射到0-1之间,这里使用min-max归一法:
[0089][0090]
其中,x

表示归一化后的样本值,x是原始样本值。
[0091]
六、加载数据到卷积神经网络模型进行训练和测试
[0092]
将训练集样本逐批载入基于图像分割的卷积神经网络u2net进行训练,优化器使用adam,学习率使用0.0005并以0.000001进行衰减,损失函数指明了模型学习的方向,通过不断地学习和权重更新,模型输出的图像与无阴影图像逐渐相似。
[0093]
可根据需要每隔n次迭代训练进行一次测试和权重保存。测试过程与训练过程类似,测试集的加载方式和训练集完全相同,但不需要计算损失和权重更新,只需要将网络输出图像反归一化再保存到文件中即可。
[0094]
七、推理和应用
[0095]
当损失下降趋于平稳且测试输出的图像集已几乎没有阴影时,可先停止训练,将训练好的权重数据加载到神经网络进行推理。
[0096]
推理过程和测试过程类似,过程为:
[0097]
1、初始化神经网络;
[0098]
2、加载训练好的权重;
[0099]
3、阴影图像分批、缩放成方形并归一化;
[0100]
4、逐批将阴影图像加载到神经网络;
[0101]
5、神经网络进行预测输出;
[0102]
6、将输出图像反归一化和缩放成原始尺寸得到高质量的无阴影图像。
[0103]
这里需要注意的是:
[0104]
1、加载到神经网络的图像只有带阴影的图像(即需要去除阴影的图像),无需加载标签图像;
[0105]
2、对输出图像缩放成原始尺寸需要先去除去之前填充的黑边;
[0106]
3、如果输入图像是经过上采样缩放载入的神经网络,那么只需对输出图像下采样缩放还原尺寸,反之则需要超分辨率技术将输出图像上采样缩放还原尺寸。
[0107]
实施例2:
[0108]
本实施例示例性地提出一种图像阴影去除装置,其结构如图3所示,包括:图像输入模块、图像处理模块、图像输出模块和图像显示模块;其中,
[0109]
所述图像输入模块用于采集输入图像并进行图像预处理,然后将预处理之后的图像输入所述图像处理模块;
[0110]
所述图像处理模块用于基于所述的图像阴影去除方法,对输入的图像进行阴影去除;
[0111]
所述图像输出模块用于对所述图像处理模块输出的图像进行格式处理,以符合预设的输出图像格式要求;
[0112]
所述图像显示模块用于显示取出阴影之后的图像。
[0113]
实施例3:
[0114]
本实施例提出一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被执行时,实现所述的图像阴影去除方法。
[0115]
实施例4:
[0116]
本实施例提出一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,实现所述的图像阴影去除方法。
[0117]
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1