白茹意 郭小英 耿海军 贾春花
(山西大学软件学院 山西 太原 030013)
抽象绘画是由绘画者通过其主观思想,用点、线、面、颜色、肌理的组合视觉形式来表达的,通常被理解为不描述自然的艺术[1]。抽象画中通过色彩,图像的组合来表达人内心热烈的情感,被称为“热抽象”;不表达情感,而是通过图形和色彩的组合来表达结构,被称为“冷抽象”。如图1所示。本文的研究包括冷抽象和热抽象。当创作一幅抽象画时,艺术家会根据他们的审美观念,做出正确的方向选择,但是对于非专业领域的观赏者来说,在没有明确提示的情况下,抽象画(特别是冷抽象)的正确悬挂方向是不明显的。
图1 抽象画示例
心理学研究[2-5]表明绘画方向是一个与审美评价有关系的因素,抽象绘画的原始悬挂方向更易于获得较高的审美评价,即专业的艺术家或非专业的观赏者对正确方向的欣赏程度远远高于其他悬挂方向的审美程度。因此,在没有明确提示的情况下,自动识别抽象画的正确悬挂方向是十分必要的。
近年来,随着图像处理技术的发展,涌现出很多关于图像方向检测算法的研究。Safonov等[6]在假设图像下半部分的纹理比其他区域的纹理多的情况下,使用AdaBoost算法判断户外图像的方向。Lumini等[7]对6 000多幅真实照片方向进行自动检测,采用的特征包括颜色矩阵、哈里斯角点、相位对称和边缘方向直方图,并使用Borda count组合不同的分类器,包括支持向量机、AdaBoost、子空间分类器。Lyu[8]从多尺度多方向图像分解(如小波)中收集了一组图像统计信息,采用多二进制支持向量机分类器确定了18 040幅自然图像的方向。Cingovska等[9]提出了一种自动检测图像方向的算法,对5 400幅用户图像进行方向检测,其先根据图像所包含的语义线索(如天空、光线或人脸的存在和不存在),将图像按层次预先分类为不同的组,再对每组进行独立的SVM分类器训练。Zhang等[10]分别对室内外图像的朝向进行了估计,实验结果表明室外图像的准确率(85%)远远高于室内图像(48%)。Borawski等[11]提出一种确定图像方向的方法,该方法对图像降尺度,定位包含天空的图像子部分,计算其绝对频谱的对数,将得到的表示转换为极坐标,确定图像的方向,实验发现在100幅实验图像中仅有6幅失败。Ciocca等[12]结合低层特征和人脸,利用人脸方向来识别图像方向。Luo等[13]在贝叶斯框架中使用低层和语义特征,在此基础上开发了一种概率方法来研究图像的方向。Ciocca等[14]提出了一种基于LBP-LRR的图像方向自动检测方法。该算法已经被广泛应用于超过10万幅的场景图像方向检测中。此外,还总结了目前最先进的一些图像方向检测方法及其准确率。Hollitt等[15]使用图像的功率谱密度估计摄像系统的滚动方向,找到图像中大量的垂直纹理,并利用Hough变换确定图像中线的方向。Cao等[16]设计了一个局部旋转算子来计算最优输出和局部方向,作为图像方向估计的低层特征,并引入了一个特征筛选器来筛选大量无用的低级特征。实验结果表明,该方法对全局图像定位具有快速、可靠等优点。Swami等[17]通过使用低水平视觉特征,采用CNN对大量图像进行方向检测,结果表明,该方法显著优于目前最先进的文献[14]方法,其准确率达95%;同时还展示了图像局部区域的可视化,分析了哪些区域会影响分类结果。
以往对方向检测的研究主要针对自然和场景图像,且识别率都比较满意。然而,对于抽象画图像而言,其内容和语义相对于自然图像比较含蓄、不明显,因此对抽象画的方向检测会比较困难,近几年的相关工作也比较少。Liu等[18]基于抽象艺术理论,运用朴素贝叶斯和BP神经网络对抽象画的方向进行分类,其平均分类准确率仅为74%。
为了提高抽象画的方向检测准确率,本文采用一种基于非旋转不变等价LBP(nri-uniform-LBP)描述符和AdaBoost算法的自动检测方法,将抽象画分为“向上”(“up”)和“不向上”(“non-up”)两类。本文框架如图2所示。
图2 本文框架
局部二值模式(Local Binary Pattern,LBP)是由Ojala等[19]在1994年提出的一种用来描述图像局部纹理特征的算子。由于具有对光照条件的不变性和对图像噪声的鲁棒性,其在很多不同领域都有广泛应用[21],例如:人脸识别、多目标跟踪和场景分类等。上述应用主要利用的是LBP的旋转不变特性。而本文则利用LBP的旋转特性实现抽象绘画的方向检测。
LBP描述符[22]被定义为图像中每个像素周围的局部模式的直方图。这个模式是通过某个像素的灰度与其邻域像素的灰度进行阈值化来计算的。给定邻域半径R和像素个数P(邻域R上的采样点数),每个像素的LBPR,P计算如下:
(1)
式中:gc是当前像素的灰度级;gn是其领域的灰度级;s(x)是一个符号函数。
(2)
图3所示为P=8、R=1时某像素的LBPR,P码的形成过程。设定3×3的正方形窗口,把窗口中心像素的灰度值作为阈值,将该值与其8邻域像素的灰度值进行比较,若邻域像素的灰度值大于中心点像素,则将该像素点的值置1,反之置0,随后产生一个8位的二进制数,即为LBPR,P码。
图3 LBP1,8码的形成过程
经过不断探索,研究人员对原始的LBP算法提出了如下几种优化和改进策略。
1) LBP圆形算子。原始LBP算子的最大劣势是它只研究了半径为1的正方形窗口覆盖的小区域。因此,在位移(Rcos(2πn/P),Rsin(2πn/P))处对图像灰度进行插值,能满足不同尺度和频率采样的需要,如图4所示。
图4 不同尺度的LBP算子
2) LBP旋转不变模式是对LBP圆形算子的进一步扩展。将中心像素作为轴心,不断旋转圆形邻域,在旋转过程中得到一系列的LBP值,将其中的最小值作为中心像素的LBP值。然而,本文决定不采用LBP方法的这个特性,因为旋转不变性显然会丢弃关于图像方向的重要信息。
3) LBP等价模式。一个LBP算子可以产生多种二进制LBP编码,例如采样点为P的LBP圆形算子会产生2P种编码。很明显,编码种类会随着采样点数的增多而急剧递增,因此需要对原始的LBP模式进行降维,提高运算速度。为了解决该问题,“等价模式”被提出,其限制二进制序列从0到1或从1到0的跳变次数不超过2次,跳变次数小于等于2,则各自代表一类,大于2的所有情况归为一类。经过这样的优化之后,LBP编码的种类大大减少,由原来的2P减少为2+P(P-1),而且不会丢失任何信息。
表1 不同LBP模式的编码种类
AdaBoost[23]是一种集成迭代的自适应增强算法,能够很好地应用于分类问题。该算法原理如图5所示。
图5 AdaBoost算法原理
(1) 设置训练数据的初始权值:假设训练集中有N个样本,将每个样本的初始权值统一设置为1/N。
(2) 训练弱分类器:在训练过程中,如果某个样本已经被准确地分类,那么在构建下一个训练集时,它的权重就会减少;反之,其权重就会增加。更新权值后的样本集被用于训练下一个分类器,不断迭代整个训练过程。
(3) 合成强分类器:将训练得到的多个弱分类器按照一定规则合成一个强分类器,其中规则就是误差率低的弱分类器在最终分类器中占较大的比例,反之较小。
该算法流程如算法1所示,其中:wi,j表示样本权重;G表示分类器。
算法1AdaBoost算法
输入:训练集D={(x1,y1)},(x2,y2),…,(xN,yN)},xi表示数据,yi表示数据所属的类;弱分类器Gm;训练轮数M。
1.D1(x)=(w11,w12,…,w1i,…,wiN),w1i=1/N,i=1,2,…,N
2. form=1,2,…,Mdo
3.Gm(x):χ→{-1,1}
5. ifem>0.5 then break
9.Dm+1=(wm+1,1,wm+1,2,…,wm+1,i,…,wm+1,N)
10. end for
步骤1灰度变换:将一幅彩色绘画图像(RGB模式)转成灰度图像。
步骤2旋转图像:本文探讨的是抽象画的正确悬挂方向,然而对于大多数绘画来说,其悬挂方向不会是斜的,因此本文只考虑了(0°,90°,180°,270°)四个方向。使用PIL库中的“图像模块”将上述灰度图像逆时针旋转三个方向(90°,180°,270°),最终得到四幅方向不同的抽象画,并且旋转后的图像尺寸不发生变化,如图6所示。
图6 按不同度数旋转后的抽象画
步骤3图像分割:将灰度图像分别进行水平和垂直平均分割,得到6块水平子图和6块垂直子图,共12块,如图7所示。
图7 图像分割示意图
(1) LBP值:首先将检测窗口划分为16×16的小区域,即P为16,R为2,对子图中的每一个像素求出每个像素对应的LBP2,16值;
(2) 直方图:采用“非旋转不变等价模式”,计算每幅子图的直方图(横坐标为243种LBP编码方式,纵坐标为每个样本出现的频率),然后对该直方图进行归一化处理;
(3) LBP特征:将上一步得到的每幅子图的直方图纵坐标的值组合起来,作为整幅图的LBP特征,特征总数为12×243=2 916。
步骤5分类:采用AdaBoost分类器对绘画图像进行方向识别,分为“向上”和“不向上”两类。
此算法运行的软件环境为Anaconda 3,编程语言为Python,系统环境为Windows 7和6 GB RAM内存。为了验证本文算法的有效性,本文随机选取500幅抽象画,来自于Wikiart。其中随机选取400幅绘画作为训练集原始图像,100幅绘画作为测试集,因此,原始图像通过旋转后得到最终的训练集样本为1 600幅,测试集样本为400幅。为了得到更准确的分类结果,本文采用十折交叉验证评估该分类模型。
本文采用AdaBoost算法将抽象画分为“向上”和“不向上”两类。由于数据集中的正负样本数量不等,因此很多文献会采用不同手段将正负样本平衡表示。但是,本文倾向于保持数据集的不平衡,因为这样更能代表实际应用中所发生的情况。
在使用LBP进行绘画图像特征提取时,不同的邻域半径和采样点个数会导致不同的特征描述,实验中比较不同半径R=1,2,3对应的邻域像素个数P=8,16,24的LBP特征,以及该参数对应不同的弱分类器个数时,得到的分类准确率,具体的分类结果如表2所示。可以看出,当邻域半径为2,邻域像素为16,弱分类器为30时,分类准确率最高达78.75%。根据实验结果和计算成本,本文实验选取LBP2,16算子进行方向特征的提取。
表2 不同邻域半径和邻域像素数对应不同弱分类器数的分类精度
表3 不同分类器的分类精度
为了评估本文算法的分类性能,使用分类精度和CPU运行时间作为评价标准,如表4所示。实验结果显示,当弱分类器个数为10时,分类准确率较低,但是运行时间较短;之后随着弱分类器个数不断增加,分类准确率也逐渐提高,并且运行时间也逐渐变长,这是由于错分样本在多次训练后,权重会增加;但是,当弱分类器个数达到40时,运行时间成倍地增加,而分类准确率提高很少,这是由于错分样本的权重不可能无限地增加。因此本文选择30个弱分类器进行实验。
表4 不同弱分类器个数的分类精度和运行时间
表5 不同图像分割模块的分类精度和运行时间
在三种不同的颜色模式(灰度图像、RGB、HSI)下,采用LBP特征得到的分类准确率如表6所示,实验结果表明,采用不同的颜色模式,对本文算法影响不大。
表6 不同颜色模式的分类精度
由于目前对抽象绘画方向检测的研究比较少,并且为了验证本文算法的有效性,在同一数据库下,将本文算法与文献[18]算法的分类精度进行比较,结果表明其精度高于后者,如表7所示。
表7 算法分类精度比较
通过对抽象画图像方向的研究可以发现,内容清晰的抽象画的方向对于眼睛和分类模型都是很明显的,更容易被区分,如图8所示。从表6中可以看出,与自然图像的方向识别率相比识别率不是很高,那是因为还有一些内容抽象且含蓄的抽象画,它们的方向无论是眼睛还是模型都很难判断(如图8(b)所示)。对于这些抽象绘画方向的识别研究是我们今后着重研究的方向。
图8 抽象画图像示例
本文提出的检测抽象绘画方向算法的优势在于:(1) 许多情况下为方便研究,对大量图像的处理需要统一其大小,但是绘画的大小(长和宽)是画家设定好的,如果修改了绘画的大小,就会失去绘画内容的真实性。本文采用“等价LBP模式”,恰好可以在图像大小不一致的情况下,得到相同数量的特征(243个)。因此,可以在不统一绘画大小的基础上进行方向检测。(2) 在同一数据库下,与目前流行的绘画方向检测方法相比,本文方法的分类精度比较高。(3) 本文算法的总运行时间(模型训练+测试)为57.9 s,在实际应用过程中能够满足人们的实时体验。
然而,从实验结果可见,由于抽象画的内容相对含蓄,因此分类准确率不是特别高,在未来的研究中,特别针对内容含蓄的冷抽象绘画,可以从以下几方面进行进一步研究,从而提高分类精度:(1) LBP描述了图像的纹理特征,今后可以提取基于颜色、布局、语义或与方向相关的特征。(2) 本文采用Adaboost 分类算法,今后可以考虑将多种分类算法进行融合,取长补短,得到更强的分类器。(3) 可以增加抽象画样本的数量,采用深度学习算法(例如CNN等)实现更快速有效的分类。