冯 青, 王婧慧
(西安科技大学 艺术学院,西安 710054)
中国丝织品品类多样,清新雅致、华贵高洁的当属“罗”为之最,罗织物的产生代表了中国古代织物技艺的最高水准[1]。但罗织物由于自身的物理特性,因而目前出土或现存的古代罗织物多有破损或残缺。相关研究者将图像数字修复技术运用在文物修复上进行了持续的探索[2],随即也呈现了一些多元的研究方法。
李海燕等[3]提出了一种双转移网络结构的图像修复网络,可以在大面积缺失图像的修复中,提供更加清晰细腻的修复结果;魏明强等[4]提出了青铜器缺块的多元数字化补配框架,为破损的缺块补配提供了一个专业、便捷的,且具有多元互补方案的计算机辅助几何处理平台;王雨等[5]提出了一种基于特征增强的青铜器尖锐特征提取算法,能够自动、高效地提取青铜器纹饰的特征。但一些图像修复算法单独使用存在局限性,陈永等[6]使用了一种基于边缘缺失结构重构和改进优先权的壁画图像修复算法,通过对Criminisi算法的改进将其运用在壁画修复上,使得修复更加精确;楚天鸿等[7]结合FCM和Criminisi提出了一种可以准确分辨车牌图像污渍区域并对此区域进行修复的方法,使得车牌图像修复准确率提高到95%。
研究人员从不同领域进行了图像修复的相关研究,但也存在一些问题:一方面,研究对象选取较为主观,对纺织物纹样的修复研究不足。要用数字化修复使得那些因传统手工艺失传而难以留存的纺织物纹样得以复原。另一方面,一些图像修复方法单独使用起来存在弊端。如Criminisi算法属于图像修复中的经典算法,但在使用时会出现匹配错误和信息丢失等问题,使得修复结果变得不理想,导致效率降低。本文针对四经绞罗规律性纹样的破损区域,使用Criminisi算法进行修复,生成掩膜图像,同时根据图像特点用开运算对Criminisi算法进行改进,去除掩膜边缘的毛边,用改进后的算法再修复一次。
Criminisi算法是由Criminisi等在2004年提出的一种基于样本块的修补算法,是一种经典的基于纹理合成的图像修复算法,具有良好的修复效果,主要包括优先权的计算、匹配块的搜索和置信度的更新这3个部分(图1)。尤其针对大面积破损图像的修复,所以被广泛运用于各种修复领域。传统的Criminisi算法是将母本图像上面最相似的一块目标区域填充到需要修复的区域[8]。算法的重点就是对于待修复块优先权的计算,待修补块由于其内部像素点的差别而具有不同的优先权,在修复过程中,通过计算区块优先权的法则,优先权会倾向具有高可信度数据的缺失数据边缘,得到优先权的修复块后,根据第一次修复程度,可以重复修复步骤。
图1 Criminis算法修复原理Fig.1 Criminis algorithm repair principle
图1中:Φ=完整区域,Ω=图片需要修复的区域[9],δΩ=待修复区域和图案母本之间的边界,Ψp=待修复的像素块,np=像素点p的延伸方向。
Criminisi算法的图解填充原理如图2所示。
图2 Criminis算法填充原理Fig.2 Criminis algorithm filling principle
将图像分为已知完整区域(source region)和目标区域(target region),从目标区域的边界开始填充,以边界点p作为中心,设置像素块的大小,形成图2(b)的效果;然后在已知区域中根据匹配准则找到相似的像素块,如图2(c)所示的q′和q″为中心的两个像素块;最后选择最佳匹配的块进行填充,如图2(d)所示。
Criminisi算法虽然应用广泛,但是在修复比较大面积的破损时,修复好的图像边界会有明显的瑕疵。本文在传统的基础上要对Criminisi算法进行改进,使用开运算来处理这些毛边瑕疵,这样可以提高其修复区域边缘的清晰度和优先权计算的精准度[10]。
图像形态学腐蚀可以将细小的噪声区域去除,但是会将图像主要区域的面积缩小,造成主要区域的形状发生改变;而图像形态学膨胀可以扩充每一个区域的面积,填充较小的空洞,但是会增加噪声的面积。根据两者的特性将图像腐蚀和膨胀适当的结合,便可以既去除图像中的噪声,又不缩小图像中主要区域的面积;既填充了较小的空洞,又不增加噪声所占的面积,这样的结合就产生了开运算。
开运算(opening)的定义是对图像进行先腐蚀(erode)后膨胀(dilate),对图像进行腐蚀,主要作用就是消除图像中的噪声和一些很小的像素点,之后通过膨胀运算来弥补因腐蚀而造成的一些面积减小,从而保留原有图像。总体来说,开运算的作用主要有:消除值高于邻近点的孤立点,达到去除图像中噪声的作用;消除较小的连通域,保留较大的连通域;断开较窄的狭颈,可以在两个物体纤细的连接处将它们分离;不明显改变较大的连通域面积的情况下,平滑连通域的边界和轮廓。
本文将采用传统的Criminisi算法与改进过后的算法对四经绞罗纹样进行修复,使图像中的纹样可以恢复到无残缺的程度,改进后的算法修复流程如图3所示。
图3 改进后的算法修复流程Fig.3 Algorithm repair flow after the improvement
第1步:开始时,标记出图像的待修复区域,将该区域标记为纯色,然后选出待修复的图像边缘;若待修复区域Ω没有空缺,则输出结果,修复结束;
第2步:若待修复区域Ω空缺,则需要优先权计算;
第3步:确定最大修复块的优先权;
第4步:找寻母本中与破损部分最接近的纹理;
第5步:将这一部分纹理填充到破损部分对应的像素点;
第6步:若修复结果不理想则重复步骤1~5,直至得出最终结果,修复结束。
Criminisi算法修复的核心就是不同待修复块的优先级别的计算与比较,会先寻找到边界上具有最大优先权的像素点,母本图像的每个像素点都有其不同的置信度,而待修复区域和母本图像的像素点不同所以具有不同的优先级权。
算法中算出优先权P(p)的步骤如下式[11]所示:
P(p)=C(p)D(p)
(1)
对于整个待修复的区域边缘,算法会优先计算待修复区域的优先权,由此来决定算法对四经绞罗纹样缺失的修复优先次序,其中的步骤如下式所示:
(2)
(3)
式中:C(p)为置信项,用来衡量点p所在的修复区域的利用率高的信息;D(p)为数据项,用来对比被选区域的结构特征。
当检测到无缝隙可以修复时(直至边缘轮廓size等于0时),算法会自动停止修复,程序暂停。
2.3.1 腐 蚀
腐蚀的作用是消去物体的边界点,可以把小于目标图像的物体都去除掉。
aΘb={x|bx⊆a}
(4)
2.3.2 膨 胀
膨胀的作用是扩大目标的区域,填补其中空白的部分,可以将两个离得很近的物体进行连接。
(5)
开运算的原理就是先腐蚀后膨胀,需要通过程序控制其处理结果,主要将得出的掩膜图像附近的毛边和瑕疵消除了,使其边界变得平滑,且没有改变掩膜整体的形状和大小,这样在后期的修复中,修复出的纹样图片才会更加平整。由此可以得出,在原Criminisi算法修复的基础上增加开运算这一步,能够去除小颗粒的噪点,以及目标区域旁边的粘连物,使得待修复的边缘变得很平滑。
2.3.3 优先权函数的改进
由前文的公式可知,当C(p)为0时,D(p)的值最高,而优先权P(p)的值也会等于0,这样的话就会不知道该优先修复哪一块目标。针对这一问题,提出对优先权的修改如下式所示:
(6)
(7)
式中:P(p)为优先权,D(p)为数据项,用来对比被选区域的结构特征。α和β都是常数。
由式(9)(10)可以看出,尽管在可信度上为0时,仅要求所需数据量足够大,仍可获得较高的优先级计算结果,因此可以将所需修复的目标区域加以优先修复,以达到对原算法混乱修复顺序问题的改进。
开运算处理后部分代码:
import math, cv2 import numpy as np import numba as nb from numba import jit, cuda print(cuda.select_device(0)) class Inpainter(): DEFAULT_HALF_PATCH_WIDTH=3 MODE_ADDITION=0 MODE_MULTIPLICATION=1 ERROR_INPUT_MAT_INVALID_TYPE=0 ERROR_INPUT_MASK_INVALID_TYPE=1 ERROR_MASK_INPUT_SIZE_MISMATCH=2 ERROR_HALF_PATCH_WIDTH_ZERO=3 CHECK_VALID=4
……
def checkEnd(self): height, width = self.sourceRegion.shape[:2] for y in range(height): for x in range(width): if self.sourceRegion[y, x] == 0: return True return False
罗又称绞罗,是一种以两经(地经、绞经)或以上的经线与纬线相互绞缠成椒孔呈网状的丝织物,与“纱”统称为“纱罗组织”[12]。根据绞经的数量,可以将罗分为二经绞罗、三经绞罗、四经绞罗等。最早出土的完整丝织品应是从湖南马王堆出土的菱纹提花四经绞罗[13],结构如图4所示。
图4 四经绞罗Fig.4 Four-warp twisted Luo
四经绞罗中最具代表性的几何纹主要有菱纹罗、信期绣和长寿绣3种,利用图谱分析法将样本进行归纳,四经绞罗工艺代表织物纹样如表1所示。菱纹罗,横向每行排列7~8个菱形纹饰,纵向每行排列11~12个菱形纹饰,花纹的排列规整有序,布局紧凑。每单个菱形纹饰由一个大菱形纹饰在对称的两角,套扣两个小的菱形纹饰组成,菱形纹饰左右对称,在视觉上很像耳杯的俯视形态;信期绣是在菱形花纹的罗上进行刺绣,用绣花针绣上燕子的形象,表1中为代表文物烟色菱纹罗地信期绣,绣片上的燕子形象较完整的共有5排,每横排大约6只,共计约30只,且每排的燕子之间夹有流云装饰,线条细密圆曲;长寿绣,是在原有织物的基础上绣有云纹、花蕾、枝叶等图案,相互交错摆放。
中国传统图案都多采用的对称、循环、均衡等来表现[14],规律性图样形式具有典型的重复或对称规律[15],可以无限并且有序的排列下去[16]。此外,从微观角度来看,若图样待修复面积较小,则其局部重复性高[17],也可被视为规律性图样[18]。结合四经绞罗的纹样特征与本文的主要算法的契合程度,最终选取了最具有基础性的朱红杯纹四经绞罗来进行纹样修复,保证样本具有四经绞罗典型的艺术样貌和特征。
本文的实验操作在Dell Burn 7000,内存128 GB,系统Win11的设备上完成,通过Criminisi算法和开运算的编程来实现本文的修复过程。为了验证此方法的有效性,本文选取中国丝绸官网发布的朱红杯纹四经绞罗高清图像,由于图像篇幅较大,为了保证修复的时效性,截选出其中的一处破损进行修复。
修复步骤如下:
表1 基于考古发现的四经绞经代表织物纹样Tab.1 Fabric patterns of four-warp twisted Luo based on archaeological findings
第1步:将采集完成的朱红杯纹四经绞罗图像上传,从完好的四经绞罗纹样图像中分割出破损区域,获得了含损的织物纹样图像,等待程序读取待修复图像及其掩膜;
第2步:第一阶段修复,根据掩膜得到待修复区域的边缘轮廓,进行选取(掩膜是用来控制图像处理的区域或处理过程的,它提取出四经绞罗纹样中感兴趣区,使得感兴趣区的图像值保持不变,而区域外部的图像值都为0,掩膜还可以通过对某些区域的屏蔽,使其不参与参数的计算,只针对屏蔽区作处理);
第3步:根据第2步中掩膜得出的待修复边缘轮廓,计算每个边缘轮廓的优先权,得出填充次序(选择边缘的优先权,得出最中心的两处破损处于优先修复级别);
第4步:针对优先级最高的轮廓点,在母本图像已知区域内寻找最佳匹配的图像块并进行填充(因是规律性纹样,所以很好选出相同的匹配特征块);
第5步:更新边缘轮廓,若边缘轮廓size大于0,表示纹样还未填充完毕,则需要回到第3步再次更新轮廓,开启新一轮迭代,直到填充完毕(填充完毕的标志是显示没有边缘轮廓点);
第6步:朱红杯纹四经绞罗图像的第二阶段修复,更新边缘轮廓,若边缘轮廓size等于0,表示纹样修复完毕,输出修复完毕的图像。
由于修复时间较长,程序每隔2 min会自动展示修复的时间点及修复程度,本文无法全部展示,表2为4月6日下午7:55:18开始进行修复,4月7日凌晨3:40:02修复完毕。
朱红杯纹四经绞罗原图如图5(a)所示,图5(b)为截取后需要修复的图像。
表2 计算机修复的时间节点及完毕时间Tab.2 Timeframe and completion time of computer restoration
图5 朱红杯菱纹罗破损区域提取Fig.5 Extraction of damaged area of the vermilion cup diamond-patterned Luo
图5为破损区域的提取展示,将需要修复的图像输入程序,首先进行灰度处理(图5(c)),这样可以更好地得到图像的掩膜区域,未改进的图像掩膜边缘毛刺居多、不够平整(图5(d)),开运算优化过后的图像掩膜变得无毛刺且清晰(图5(f)),针对优先级最高的轮廓点,在母本图像已知区域内寻找最佳匹配的图像块并进行填充,得到图6(c)。为了验证开运算优化后的算法的修复效果是否有所提高,本文分别采用优化后的和传统Criminisi算法进行修复,将两者的图像质量进行对比。
图6为菱纹罗最终修复效果对比,可以得出,传统的Criminisi算法修复出的四经绞罗纹样有着严重的不足:修复区域边缘不平整,有很多小像素点,图6(b)右侧有明显的修复痕迹,再向下延伸,影响了整个纹样图案的美观性,不利于之后的纹样提取工作。而使用了改进后的算法,在右侧明显的裂痕消失了,小型的破损区域也没有了。为了验证此方法的可行性和可信性,根据同样的修复方法与过程,本文将烟色菱纹罗地信绣和长寿绣进行修复对比,修复过程如图7、图8所示,结果对比如图9、图10所示。
图6 朱红杯菱纹罗修复效果对比Fig.6 Comparison of repair effects of vermilion cup diamond-patterned Luo
图7 地信期绣破损区域提取Fig.7 Extraction of damaged area of Luo-grounded Xinqi embroidery
图8 长信绣破损区域提取Fig.8 Extraction of damaged area of Changxin embroidery
图9 地信期绣纹样修复效果对比Fig.9 Repair effect comparison of patterns of Luo-grounded Xinqi embroidery
图10 长信绣纹样修复效果对比Fig.10 Repair effect comparison of of patterns of Changxin embroidery
本文提出的改进后的Criminisi算法有效地修正了原始算法的不足,解决了四经绞罗纹样破损区域难以获取的问题,可说明此方法在修复效果方面相较于传统的Criminisi算法有很大的提高。改进后的算法相较于原算法,在保持图像的纹理和结构连续性上,有明显的提升,修复效果更令人满意。综上所述,本文方法能够比较好地满足修复效果需求,相较于人工修复可以缩短修复时间。
通过开运算改进的Criminisi修复方法,一方面提高了罗织物的修复效率,为纹样修复增添了新的方法,拓宽了四经绞罗的发展空间和传播范围;另一方面,针对传统图像修复效果差等问题,对其进行了改进,使得样本在视觉上和使用价值方面都具有更好的效果。但目前的研究只局限于修复方面,之后还需将所修复出的纹样运用于产品设计之中,设计出满足用户需求和审美的现代产品,也是今后工作的重要内容。
《丝绸》官网下载
中国知网下载