王玉卓,閔華松
(武漢科技大學(xué) 信息科學(xué)與工程學(xué)院,湖北 武漢 430081)
中國的書法藝術(shù)已有幾千年的歷史,無數(shù)書法名家留下大量墨寶。時至今日,隨著手機電腦普及,人們對于書法藝術(shù)不甚了解。應(yīng)用現(xiàn)代技術(shù)進行書法創(chuàng)作,可以使更多人重新認(rèn)識書法的魅力[1]。同時,機器人書法的研究成果可以為解決其他問題提供思路,推進機器人發(fā)展[2]。
目前國內(nèi)外很多研究者都提出了書法機器人系統(tǒng),機器人書法的研究重點是生成一條機器人書寫字符軌跡。其中,Li 等[3]使用編碼器提取筆畫的特征,由解碼器獲得筆畫軌跡序列;Wu 等[4]提出了一種基于深度強化學(xué)習(xí)算法的書法機器人模型,使機器人能夠直接從筆畫圖像中獲得包括畫筆的壓力信息在內(nèi)的三維位置信息。Li 等[5]將書法機器人分為筆畫分離、漢字特征建模、漢字軌跡規(guī)劃三部分,成功復(fù)現(xiàn)了顏體漢字。但是,絕大多數(shù)書法機器人都假定筆畫寬度只與壓力有關(guān)。當(dāng)毛筆保持豎直狀態(tài)移動的情況下是成立的,但是實際書法過程中,毛筆會發(fā)生傾斜。因此,有必要分析筆畫寬度與傾斜角度之間的關(guān)系,使機器人從筆畫圖像中獲得更加準(zhǔn)確軌跡信息。
書法評價對產(chǎn)生高質(zhì)量書寫結(jié)果起著促進作用,但一些常規(guī)的機器人書法系統(tǒng)通常使用單一的評估指標(biāo)。Mueller 等[6]僅考慮書寫結(jié)果及其參考筆畫的輪廓匹配,并以此評價結(jié)果更新書寫軌跡。Xu 等[7]將書寫結(jié)果與知名書法家的示例模板進行比較,以產(chǎn)生筆畫質(zhì)量得分。Wang 等[8]提出了一種使用圓盤B 樣條曲線對字符進行矢量化,通過迭代最近點(iterative closest point,ICP)算法進行相似性評估。Zhou 等[9]使用可能性?概率分布方法對漢字提取的特征,從而計算字符的評估值。本文提出3 種評價指標(biāo),不僅從外形進行對比,較直觀地顯示筆畫差異,又包含了筆畫的骨架特征和起筆收筆特征,獲得更全面的評價。
本文提出了一種基于毛筆建模的機器人書法系統(tǒng),該系統(tǒng)不僅控制機器人進行實際書寫,而且結(jié)合評價指標(biāo)提高書寫質(zhì)量。這項工作的主要貢獻有兩個方面:1)考慮傾斜狀態(tài)對毛筆足跡形狀的影響,并使機器人復(fù)現(xiàn)了這一狀態(tài);2)針對筆畫設(shè)計評價指標(biāo),多角度評價書寫結(jié)果。
本文擬議的機器人毛筆模型框架如圖1 所示,該模型由筆觸模型、筆畫模型和控制模型組成。筆觸模型分析毛筆足跡,為筆畫模型提供足跡形狀與機器人位姿的函數(shù)關(guān)系。基于遺傳算法的筆畫模型從筆畫圖像中獲得軌跡信息,并加入了起筆、行筆、收筆規(guī)則,結(jié)合插值算法疊加筆觸形成筆畫圖像。控制模型根據(jù)筆畫模型提供的軌跡信息進行軌跡規(guī)劃,控制機器人進行實際書寫。

圖1 機器人毛筆模型框架Fig.1 Robot brush model framework
本文筆觸模型采用經(jīng)驗?zāi)M,著重觀察分析毛筆和紙張交互產(chǎn)生的毛筆足跡,避免對毛筆位置的實時計算[10]。參考張俊松等的筆觸模型[11],在考慮毛筆傾斜情況下,機器人使用示教方式采集實際足跡,使用線性回歸算法計算筆觸模型參數(shù)。
1.2.1 采集實際足跡
機器人向下運動在紙面留下毛筆足跡,如圖2所示。這個過程中需要控制的機器人位姿參數(shù)包括毛筆下降高度和毛筆傾斜角度。其中,當(dāng)毛筆沿著Z軸向下移動到筆尖恰好接觸紙張時,設(shè)為初始位置,h值隨著毛筆下降而增加。足跡水平中心線為X軸,毛筆從垂直紙面的豎直狀態(tài)繞Y軸順時針旋轉(zhuǎn) α度,α 即毛筆傾斜角度。實驗規(guī)定毛筆下降高度值為8~20 mm,毛筆傾斜角度α為0°~10°。

圖2 實際筆觸Fig.2 Actual stroke
采集筆觸過程如圖3 所示,描述如下,首先機器人以末端垂直紙面的姿態(tài)運行至起始點,進行姿態(tài)變化調(diào)整到指定傾斜度。然后,機器人沿縱向緩慢下降到指定高度,到達指定高度后迅速提筆。

圖3 采集筆觸Fig.3 Collecting strokes
1.2.2 計算模型參數(shù)
筆觸模型用2 條3 次Bézier 曲線進行擬合,如圖4。定義仿真足跡St=(Lt,Lh,Lr),其中Lt為筆鋒長度,Lh為筆根長度,Lr為筆肚長度。

圖4 仿真筆觸Fig.4 Simulation brushstroke
3 次Bézier 曲線如式(1)所示:

式中:P0和P3為曲線起止點,P1和P2坐標(biāo) (P1x,P1y)、(P2x,P2y),如式(2):

式中:Lt為筆鋒長度;Lh為筆根長度;Lr為筆肚長度。
將一幅機器人參數(shù)為(h,α) 的實際筆觸圖像轉(zhuǎn)換成二值圖像,并提取輪廓信息。隨機設(shè)置仿真筆觸參數(shù) (Lt,Lh,Lr),擬合形成仿真筆觸圖像,將該筆觸的輪廓與實際筆觸輪廓進行匹配,調(diào)整仿真筆觸參數(shù)令兩者基本重合,如圖5 所示,記錄模型參數(shù) (Lt,Lh,Lr)。

圖5 輪廓匹配Fig.5 Contour matching
對模型參數(shù)和機器人參數(shù)采用逐步分析法,分析模型參數(shù)(Lt,Lh,Lr)與 (h2,α2,h,a) 函數(shù)關(guān)系,并進行線性回歸,筆觸模型參數(shù)描述如式(3):

式中:Lt為筆鋒長度;Lh為筆根長度;Lr為筆肚長度;h為毛筆下降高度值;α 為傾斜角度。
Sn={(x1,y1,h1,α1),(x2,y2,h2,α2),···(xn,yn,hn,αn)}表示筆畫模型中毛筆運動軌跡,其中x和y是筆觸模型原點在紙面坐標(biāo)系上坐標(biāo)值,h值表示毛筆所受壓力,而 α 值的改變反應(yīng)毛筆傾斜情況。位置信息和高度信息是通過遺傳算法從筆畫圖像中提取,遺傳算法得到的初步軌跡信息需要根據(jù)起筆、行筆、收筆規(guī)則進行修改,并添加傾斜信息。
1.3.1 遺傳算法提取信息
遺傳算法是模仿自然界生物進化機制發(fā)展起來的隨機全局搜索和優(yōu)化方法,不斷向搜索空間中適應(yīng)度越高的區(qū)域移動以求得最優(yōu)解。遺傳算法流程如圖6 所示,染色體是多個基因的集合,而基因決定了個體的外部表現(xiàn)。筆畫模型設(shè)計兩條染色體,第一條染色體包含位置信息,決定了筆畫的骨架特征。第二條染色體包含位置信息和高度信息,即軌跡信息,決定了筆畫的外型特征。

圖6 遺傳算法流程圖Fig.6 Flow chart of genetic algorithm
對參考筆畫圖像(圖7(a)) 進行形態(tài)學(xué)處理,提取骨架如圖7(b),圖中所有灰度值為0 的像素點位置是初始數(shù)據(jù),染色體Sm={(x1,y1),(x2,y2),···,(xm,ym)}。根據(jù)筆畫垂直水平兩個方向端點差值大小確定筆畫趨向,筆畫“橫”為水平趨向,數(shù)據(jù)按趨向進行排序并分為k組。

圖7 筆畫“橫”Fig.7 Stroke "horizontal"
將初始數(shù)據(jù)擬合成目標(biāo)曲線,通過計算對比多種擬合函數(shù)擬合誤差平方和,選擇使用5 次多項式進行擬合的,如式(4)所示:

式中p1,p2,···,p6為多項式系數(shù)。
遺傳算法隨機生成一個原始的種群,種群中每個個體含有k個基因,將基因?qū)?yīng)的數(shù)據(jù)通過拉格朗日插值法擬合成一條曲線,擬合曲線描述如式(5):

因此,最優(yōu)個體的擬合曲線應(yīng)該與目標(biāo)曲線盡可能地重合,目標(biāo)函數(shù)要最小化,如式(6)所示:

更加適應(yīng)于環(huán)境的個體應(yīng)該擁有更高的適應(yīng)度,第i個體適應(yīng)度如式(7)所示:

在每個種群50 個個體,染色體含有10 個基因,80%交叉概率,20%變異概率下,經(jīng)過20 代進化最佳個體骨架圖像與目標(biāo)圖像骨架對比結(jié)果,如圖8 所示。結(jié)果說明兩條曲線較為重合,證明遺傳算法選取的坐標(biāo)信息是具有代表性。

圖8 骨架對比Fig.8 Skeleton comparison
將位置信息作為輸入信息,對種群初始化,染色體Sk={(x1,y1,h1,α1),(x2,y2,h2,α2),···,(xk,yk,hk,αk)},其中高度信息取值范圍8~20 mm,傾斜信息均設(shè)為0°
對于每一個體,已知每個軌跡點的位置、高度信息、傾斜信息,根據(jù)筆觸模型可計算得到每個軌跡點的筆肚長度Lr,從而計算得到2k個筆畫輪廓點位置,通過閉合B 樣條將這些輪廓點光滑連接形成筆畫圖像。由于目標(biāo)函數(shù)取最大值,目標(biāo)函數(shù)和適應(yīng)度函數(shù)相等,描述如式(8):

式中:Xi,j為參考筆畫圖像像素點;為仿真筆畫圖像像素點。
圖9 顯示了在每個種群50 個個體,80%交叉概率,20%變異概率下,基因數(shù)k取不同值,經(jīng)過100代進化后筆畫仿真以及與目標(biāo)圖像輪廓對比結(jié)果。

圖9 遺傳算法結(jié)果Fig.9 Genetic algorithm results
當(dāng)k=10時,兩者存在較大差異;當(dāng)k=20 和k=30的仿真效果較好,但是k=30 時,虛擬筆畫輪廓不光滑,說明需要增加迭代次數(shù)進行優(yōu)化,但這會增加運算成本。因此合理選擇基因數(shù)k,既可以較好復(fù)現(xiàn)目標(biāo)圖像,又降低運算量。
1.3.2 書寫規(guī)則修改軌跡
筆畫仿真圖像在筆畫開始和結(jié)束階段與目標(biāo)圖像存在較大差距,這是由于中國書法在這兩個階段充滿變化,軌跡信息需要根據(jù)書寫規(guī)則進行調(diào)整。
在起筆階段,書法家握住毛筆,使筆尖剛好達到紙面。此時,手在身體的左前方,而肘部朝右后方。然后將毛筆持續(xù)下壓,形成杏仁點。然后,根據(jù)不同筆畫毛筆向不同方向運動。對于“橫”,毛筆向右運動,擴大墨跡。最后,書法家逆時針轉(zhuǎn)動毛筆,帶動筆鋒作逆時針調(diào)鋒,使原來的筆鋒指向由向左前變成向左,起筆結(jié)束。
在起筆階段,根據(jù)毛筆運動方向調(diào)整位置信息;對毛筆的壓力逐漸加大,逐步增大高度信息,毛筆保持豎直狀態(tài),傾斜信息設(shè)為零。
在行筆階段,毛筆在紙上運行時,筆畫模型根據(jù)毛筆運行軌跡結(jié)合筆觸模型不斷進行累加筆觸,模擬漢字書寫。在實際書寫中為了突出層次,書法家往往會將毛筆前傾加重痕跡,故行筆階段,傾斜角 α 會發(fā)生變化。
在行筆階段,遺傳算法計算的軌跡點數(shù)量較多,實際機器人進行書寫會出現(xiàn)卡頓現(xiàn)象。在不影響筆畫光滑的前提下,刪減軌跡點;對毛筆的壓力變化不大,適當(dāng)調(diào)整高度信息;同時根據(jù)書寫的筆畫類別對傾斜信息進行修改。
行筆結(jié)束后,接下來就要收筆,毛筆收筆有兩種方法:藏鋒收筆、露峰收筆。
藏鋒收筆以橫為例,藏峰收筆在筆畫末端形成棱角,需要連續(xù)變化毛筆方向,最后將筆尖輕輕收回,藏在已有足跡中。“橫”的仿真過程如圖10 所示。

圖10 “橫”仿真過程Fig.10 “Horizontal” simulation process
露峰收筆以撇為例,露峰收筆強調(diào)寫出筆鋒,需要慢慢提高毛筆,使筆毛漸漸收攏,最后毛筆快速從紙面移開,形成筆鋒。“撇”的仿真過程如圖11 所示。

圖11 “撇”仿真過程Fig.11 “skimming” simulation process
在收筆階段,藏鋒收筆要求位置信息連續(xù)變化形成棱角;對毛筆的壓力變化逐漸減小,高度信息緩慢減小;傾斜信息設(shè)為零。露鋒收筆僅需要一兩個軌跡點;高度信息迅速減小;傾斜信息設(shè)為零。
控制模型根據(jù)筆畫模型的數(shù)據(jù)進行軌跡規(guī)劃,控制機器人書寫漢字。控制模型框圖如圖12所示,采用B 樣條進行路徑規(guī)劃,獲得連續(xù)光滑的機器人末端位置,通過姿態(tài)計算獲得機器人末端位姿信息,運用逆運動學(xué)轉(zhuǎn)換為關(guān)節(jié)參數(shù)。其中,本文采用的AUBO-i5 協(xié)作機械臂符合Pieper準(zhǔn)則[12],由于其自帶的逆解算法在姿態(tài)計算方面存在不連續(xù)的問題,根據(jù)文獻[13]采用基于球面幾何的解析法求機器人運動學(xué)的逆解。

圖12 控制模型框圖Fig.12 Control model block diagram
1.4.1 路徑規(guī)劃
軌跡信息Sn={(x1,y1,h1,α1),(x2,y2,h2,α2),···,(xn,yn,hn,αn)}是不連續(xù)的,控制模型采用3 次B 樣條作為插值函數(shù)進行路徑規(guī)劃。
對于n個軌跡點,存在n?1條曲線。其中第i條曲線的三維坐標(biāo)為pi(t) 描述如式(9):

式中Pi+k為樣條控制點。顯然,n?1 條曲線需要n+2個控制點,設(shè)P0、Pn+1控制點分別與P2、Pn?1重合,所有控制點計算如式(10)所示:

式中:P1,P2,···,Pn+1是控制點坐標(biāo),(x1,y1,h1),(x2,y2,h2),···,(xn,yn,hn)是軌跡點坐標(biāo)。
將所有控制點代入B 樣條計算公式,擬合出機械臂的運動路徑。
1.4.2 姿態(tài)計算
在筆畫模型中,起筆和收筆階段毛筆垂直紙面,設(shè)該姿態(tài)為機器人末端初始姿態(tài)。在行筆階段,毛筆可能處于傾斜的狀態(tài),根據(jù) α 進行姿態(tài)求解。
毛筆垂直紙面,與Z1軸重合,O點為筆尖,A點為筆帽。繞Y1軸順時針旋轉(zhuǎn) α 度,點A移動到點A′。點A相對點A在坐標(biāo)軸上投影?X、?Z如式(11)所示:

式中:L為毛筆長度;α 為傾斜角度。
在機器人基坐標(biāo)系X0Y0Z0中,如圖13(b),毛筆旋轉(zhuǎn) α 度后姿態(tài)P描述如式(12):

圖13 坐標(biāo)系Fig.13 Coordinate System

式中:P0為機器人末端初始姿態(tài);α 為毛筆傾斜角度;β 為紙面坐標(biāo)系與機器人基坐標(biāo)系夾角,本文設(shè)定為2.391 1 rad。θ 為筆畫與X1軸夾角,例如“橫”,θ 約為0.718 8 rad,“豎”θ 約為?1.570 8 rad;L為毛筆長度。
書法評價可以促進機器人產(chǎn)生高質(zhì)量書寫結(jié)果,如果書寫結(jié)果評價值較低,說明筆畫模型軌跡信息修改存在問題,需要對筆畫進行進一步修改。本文首先對機器人書寫圖像和仿真圖像提取骨架特征,利用一致性點漂移(coherent point drift,CPD)和ICP 進行骨架匹配,獲得骨架相似度;根據(jù)骨架匹配結(jié)果對書寫結(jié)果圖像進行旋轉(zhuǎn)平移,處理后的圖像與參考圖像對比計算外形相似度;根據(jù)書寫規(guī)則,提取書寫特征,利用余弦相似度計算起筆收筆相似度,取平均值代表整個筆畫的書寫質(zhì)量。
使用細(xì)化算法獲得骨架信息,從圖像中提取獲得的特征Nn=((x1,y1),(x2,y2),···,(xn,yn))。需要找到書寫圖像和參考圖像兩個特征點集之間的關(guān)系,然后將書寫圖像點集(下文稱原始點集)進行轉(zhuǎn)換映射到參考圖像點集上(下文稱目標(biāo)點集),從而計算兩者相似度。
CPD 算法將點集配準(zhǔn)問題轉(zhuǎn)換為概率密度估計問題,其將原始點集的分布表示成混合高斯模型,迭代修改高斯模型的參數(shù),當(dāng)原始點集與目標(biāo)點集對應(yīng)的似然函數(shù)達到最大時,配準(zhǔn)完成。
ICP 算法要求兩個點集成員個數(shù)一致,計算出從原始點集上的每個點到目標(biāo)點集的每個點的距離,使其和目標(biāo)點集的最近點匹配,計算均方差誤差,如直到均方差誤差滿足要求時,配準(zhǔn)完成。
通過CPD 匹配計算兩者尺度信息S、旋轉(zhuǎn)矩陣R、平移矩陣T,根據(jù)尺度S,將參考圖像進行縮放,更新原始點集,使兩個點集個數(shù)相同,將CPD 所得旋轉(zhuǎn)矩陣R、平移矩陣T作為初始矩陣,進行ICP 匹配,骨架相似度描述如式(13):

式中:若存在映射后原始點集中的數(shù)據(jù)點與目標(biāo)點集中的數(shù)據(jù)點的距離小于閾值,則認(rèn)為匹配成功,統(tǒng)計匹配成功的數(shù)據(jù)點個數(shù)為m,n為目標(biāo)點集總個數(shù)。
書寫圖像通過相機采集獲得的,其筆畫位置、大小、方向與參考圖像存在差異,通過CPD計算得到的尺度信息,將參考圖像進行縮放,ICP 匹配計算得到旋轉(zhuǎn)矩陣R、平移矩陣T對其進行旋轉(zhuǎn)平移。對經(jīng)過處理后的參考圖像和書寫圖像進行二值化,獲得光柵圖像,外形相似度描述如式(14):

將柵格圖片提取輪廓,見圖14,設(shè)書寫特征X=[x1x2···xn xn+1],以字符端點為圓心,半徑r畫圓,記錄在圓內(nèi)的所有灰度值為1 的像素點。將圓分為n份,每個像素點根據(jù)其與點A所形成角度值分配至不同區(qū)域,統(tǒng)計每個區(qū)域內(nèi)像素點的個數(shù)Xi和總數(shù)Xn+1。

圖14 書法特征Fig.14 Calligraphic characteristics
余弦相似度表示起筆相似度,如式(15)所示:

式中:X為參考圖像書寫特征;X′為實際書寫圖像書寫特征。
同理,取字符末端端點,計算收筆相似度,兩者平均值為起筆收筆相似度。
本文擬議的書法機器人系統(tǒng)由硬件和軟件兩部分組成,研究中使用的機器人是六自由度機械臂,毛筆安裝在機械臂的末端執(zhí)行器上,宣紙位于機械臂正前方,如圖15。除此之外,模型的硬件還包括一臺計算機,該計算機用于實現(xiàn)模型的軟件部分。

圖15 書法機器人硬件Fig.15 Calligraphy robot hardware
書法機器人從參考筆畫圖像提取軌跡信息,機器人進行實際書寫,根據(jù)評價結(jié)果修改軌跡信息。然后,我們優(yōu)化了現(xiàn)有的筆畫分離算法,將顏體字筆畫分離的正確率提高到90%[7],進行了基本筆畫書寫和漢字仿真,寫作結(jié)果證明了系統(tǒng)的性能。
圖16 顯示了3 次機器人實際書寫結(jié)果,其中筆畫1 的位置信息來自第一階段遺傳算法,高度信息設(shè)置為10 mm,筆畫2 是第二階段遺傳算法結(jié)果,筆畫3 是軌跡信息根據(jù)書寫規(guī)則修改后的結(jié)果,圖17 為機器人實際書寫的實驗照片。

圖16 “橫”實際書寫筆畫Fig.16 “Horizontal” actual writing strokes

圖17 “橫”根據(jù)書寫規(guī)則修改后實驗圖片F(xiàn)ig.17 “Horizontal” modified experimental picture according to writing rules
圖18 顯示了筆畫骨架對比結(jié)果,其中藍色曲線是參考筆畫骨架,紅色是實際筆畫骨架。圖19顯示了實際筆畫與參考筆畫輪廓對比結(jié)果。
實際書寫筆畫評價結(jié)果如表1 所示。從評價結(jié)果可以看出,筆畫1 骨架相似度很高,這符合事實,因為第一階段遺傳算法只計算位置信息。同時,由于高度信息較小,圖19(a)顯示筆畫被參考筆畫包括在內(nèi),所以外形相似度較低。第二階段遺傳算法綜合考慮了位置信息和高度信息,外形相似度有了明顯提高,但是骨架相似度降低了,從圖18(e)說明筆畫2 骨架開始和結(jié)束與參考圖像存在較大偏差。第3 次書寫效果最好,說明進行書寫規(guī)則修改后軌跡信息能很好地反映筆畫特征,評價指標(biāo)可以為提高書寫質(zhì)量提出改進意見。

表1 橫的評價結(jié)果Table 1 Horizontal evaluation results %

圖18 骨架對比Fig.18 Skeleton comparison


圖19 外形對比Fig.19 Shape comparison
楷書由基本筆畫和其他復(fù)雜筆畫組成,而復(fù)雜筆畫可以通過基本筆畫經(jīng)過變形、疊加獲得。實驗將參考筆畫圖像輸入計算機,并用機械臂寫下相應(yīng)筆畫。書寫效果如圖20 所示。

圖20 基本筆畫書寫結(jié)果Fig.20 Basic stroke writing results
在該圖中,第1 行是參考筆畫圖像;第2 行是仿真圖像;第3 行是機器人的書寫結(jié)果。這些書寫結(jié)果具有很高的質(zhì)量,證明本文提出書寫模型的有效性。
筆畫按書寫順序進行排序形成漢字,實驗采用最基本的書法規(guī)則:從上到下,從左到右的方式排列基本筆畫和復(fù)雜筆畫,圖21 顯示“不忘初心”的實驗結(jié)果。

圖21 漢字仿真及書寫Fig.21 Chinese character simulation and writing
結(jié)果表明,機器人書寫結(jié)果與參考書法相似。
針對機器人毛筆書法,本文提出了一種基于毛筆建模的機器人書法系統(tǒng),通過觀察毛筆足跡建立筆觸模型,采用遺傳算法計算書寫軌跡建立筆畫模型,結(jié)合B 樣條軌跡規(guī)劃建立控制模型。對筆畫和漢字進行書寫測試,并提出了骨架、外形、起筆收筆3 種評價指標(biāo)。評價結(jié)果表明,本文的機器人毛筆書法系統(tǒng)可以得到較好的書寫效果。
這項工作仍有改進的空間。特別是,本文采用遺傳算法結(jié)合書寫規(guī)則計算漢字軌跡信息,而人工神經(jīng)網(wǎng)絡(luò)具有自學(xué)習(xí)能力,因此下一步計劃將神經(jīng)網(wǎng)絡(luò)納入筆畫模型。另外,我們計劃通過觀察、模仿大師書寫視頻獲取漢字書寫信息,將其與圖像獲得漢字軌跡信息對比篩選提高書寫質(zhì)量。