專(zhuān)利名稱(chēng):書(shū)法特定風(fēng)格渲染的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)數(shù)字書(shū)法生成,尤其涉及一種書(shū)法特定風(fēng)格渲染的方法。
背景技術(shù):
計(jì)算機(jī)快速發(fā)展和普及的今天,為了書(shū)法藝術(shù)更廣泛的應(yīng)用于日常生活,數(shù)字化 書(shū)法創(chuàng)作應(yīng)運(yùn)而生。毛筆字形態(tài)變化豐富,視覺(jué)表現(xiàn)力強(qiáng),是研究的熱點(diǎn)?!队?jì)算機(jī)圖形與應(yīng)用》雜志1999年(IEEE Computer Graphics and Applications (S0272-1716),1999,19 (3) :74_81)公布的一種虛擬毛筆方法中引入彈性力 學(xué)理論,將彈簧的物理性質(zhì)運(yùn)用于筆毛的形變,考慮毛筆按壓之時(shí)的筆毫位置和方向的變 化,構(gòu)建了毛筆的三維模型?!队?jì)算機(jī)與圖形》雜志2000年(Computer and Graphics, 2000, 24(1) 99-113)公布的方法中用簡(jiǎn)單的用三維倒圓錐模型建模毛筆,將筆畫(huà)視為一系列密 集橢圓的疊加,橢圓主軸隨毛筆運(yùn)動(dòng)而旋轉(zhuǎn),能夠表現(xiàn)筆觸的輪廓,但無(wú)法表現(xiàn)毛筆書(shū)寫(xiě) 過(guò)程中側(cè)鋒中鋒等諸多重要技巧。《計(jì)算機(jī)圖形論壇》雜志2002年(Computer Graphics Forum(S0167-7055), 2002, 21 (3) =299-308)公布的虛擬毛筆建模方法運(yùn)用廣義掃成法構(gòu) 建“書(shū)寫(xiě)元”實(shí)體模型,并引進(jìn)機(jī)器學(xué)習(xí)系統(tǒng),模擬出逼真的書(shū)畫(huà)效果,但計(jì)算過(guò)于復(fù)雜。 SIGGRAPH 2004年(SIGGRAPH 2004. USA ACM Press 2004)公布的方法中認(rèn)為筆毛的整體 運(yùn)動(dòng)對(duì)個(gè)體具有很大影響,提出了參數(shù)化毛筆模型(PHB),拋開(kāi)一些瑣碎的細(xì)節(jié),簡(jiǎn)化了模 型,取得很好的藝術(shù)效果。2004年《計(jì)算機(jī)圖形與應(yīng)用》(IEEE Computer Graphics and Applications (S0272-1716), 2004,10 :76_85)公布的虛擬毛筆模型中包含毛筆的幾何模 型和動(dòng)態(tài)模型,并在真實(shí)毛筆上安裝硬件設(shè)備(Ultrasound Buzzer和Gyroscope)來(lái)感知 毛筆的三維空間位置和毛筆形態(tài),需要而外的硬件支持并且使用起來(lái)并不是很自然。2004 年(Proceedings of the 2006 IEEE International Conference on Multimedia and Expo, Toronto, 2006 =2073-2076)公布的方法在毛筆字骨架提取的基礎(chǔ)之上實(shí)現(xiàn)了一個(gè)基 于web的3D中國(guó)書(shū)法重現(xiàn)系統(tǒng),較好的重現(xiàn)地了毛筆的書(shū)寫(xiě)過(guò)程,但用戶不能根據(jù)需要書(shū) 寫(xiě)。
發(fā)明內(nèi)容
本發(fā)明的目的是為克服上述現(xiàn)有方法不忠實(shí)于用戶手寫(xiě)輸入,沒(méi)能充分展現(xiàn)某種 特定書(shū)法風(fēng)格的特性等缺點(diǎn),提供一種實(shí)時(shí)性強(qiáng)、具有特定書(shū)法風(fēng)格的書(shū)法字渲染方法。書(shū)法特定風(fēng)格渲染的方法包括以下步驟1)選擇一個(gè)碑帖作為范本,在要抽取的筆畫(huà)上面選取若干個(gè)點(diǎn)作為貝塞爾曲線的 端點(diǎn),指定每一段貝塞爾曲線的階數(shù),調(diào)整貝塞爾曲線控制點(diǎn)的位置,使這些貝塞爾曲線組 成的閉合曲線與筆畫(huà)輪廓重合,用貝塞爾曲線指定筆畫(huà)的骨架,每個(gè)標(biāo)準(zhǔn)筆畫(huà)最終由輪廓 控制點(diǎn)和骨架表示,將標(biāo)準(zhǔn)筆畫(huà)按漢字筆畫(huà)類(lèi)型類(lèi)組成標(biāo)準(zhǔn)筆畫(huà)庫(kù);2)根據(jù)筆畫(huà)的轉(zhuǎn)折情況將筆畫(huà)庫(kù)中的標(biāo)準(zhǔn)筆畫(huà)進(jìn)行分段,沒(méi)有轉(zhuǎn)折的為一段筆 畫(huà),有一個(gè)轉(zhuǎn)折的為兩段筆畫(huà),有兩個(gè)轉(zhuǎn)折的為三段筆畫(huà),將相同筆畫(huà)段數(shù)的筆畫(huà)歸為一
5類(lèi),構(gòu)建筆畫(huà)索引;3)構(gòu)建包含漢字常用的偏旁部首的偏旁部首索引,手動(dòng)為偏旁部首索引中的每一 偏旁部首的每一個(gè)筆畫(huà)從步驟1)中的標(biāo)準(zhǔn)筆畫(huà)庫(kù)中選擇筆畫(huà);4)使用九宮格為漢字的每個(gè)基本筆畫(huà)設(shè)置判定的法則,實(shí)時(shí)捕獲記錄書(shū)寫(xiě)筆畫(huà), 識(shí)別筆畫(huà)的基本類(lèi)型;5)構(gòu)建偏旁部首過(guò)濾器,從手寫(xiě)輸入筆畫(huà)序列中查找出偏旁部首,再通過(guò)步驟3) 中的偏旁部首索引從步驟1)的標(biāo)準(zhǔn)筆畫(huà)庫(kù)中找出相應(yīng)的標(biāo)準(zhǔn)渲染筆畫(huà);6)將找出的標(biāo)準(zhǔn)筆畫(huà)根據(jù)手寫(xiě)輸入筆畫(huà)的形態(tài)進(jìn)行形變,將整個(gè)字的所有形變后 的筆畫(huà)疊加組合后輸出。所述的步驟4)包括將筆畫(huà)的外包圍盒均勻劃分為九塊,并畫(huà)出水平和垂直中軸 線,稱(chēng)之為九宮格,用九宮格為漢字中的每一個(gè)筆畫(huà)設(shè)置判定的法則,豎折折鉤筆畫(huà)用如下 法則判定 其中Ci表示筆畫(huà)的端點(diǎn)和轉(zhuǎn)折點(diǎn),X和Y分別表示轉(zhuǎn)折點(diǎn)的X和Y坐標(biāo)值,Rij表 示九宮格中的第i行、第j列的格子,實(shí)時(shí)捕獲手寫(xiě)輸入,將輸入漢字進(jìn)行筆畫(huà)分解,高斯平 滑筆畫(huà)曲線,計(jì)算每個(gè)點(diǎn)的曲率,設(shè)置曲率的閾值,曲率大于閾值的為拐點(diǎn),根據(jù)將手寫(xiě)筆 畫(huà)分段,依據(jù)段數(shù)將筆畫(huà)歸類(lèi),挨個(gè)匹配對(duì)應(yīng)類(lèi)別的各個(gè)基本筆畫(huà),找出匹配的筆畫(huà)類(lèi)型, 最終為整個(gè)輸入筆畫(huà)序列的各個(gè)筆畫(huà)打上類(lèi)型標(biāo)簽。所述的步驟5)包括構(gòu)建偏旁部首過(guò)濾器,偏旁部首過(guò)濾器包含一個(gè)偏旁部首列 表,列表將偏旁部首依據(jù)筆畫(huà)數(shù)分類(lèi),記錄每一個(gè)偏旁部首由哪一些筆畫(huà)組成,利用九宮格 為每一個(gè)偏旁部首制定判定的法則,草字頭判定法則如下
戶4日風(fēng)”代 &隊(duì),及
P1 G {i 02'^12}· 其中Pi表示筆畫(huà)的端點(diǎn)和轉(zhuǎn)折點(diǎn),X和Y分別表示端點(diǎn)和轉(zhuǎn)折點(diǎn)的X和Y坐標(biāo)值, Rij表示九宮格中的第i行、第j列的格子,midX表示九宮格的中軸線,偏旁部首過(guò)濾器利用 最長(zhǎng)匹配原則,從打好標(biāo)簽的手寫(xiě)輸入筆畫(huà)序列中查找出可能的偏旁部首,給定一個(gè)序列,先從中查找是否有筆畫(huà)數(shù)為6的偏旁部首,如果沒(méi)有再查找筆畫(huà)數(shù)為5的偏旁部首,一直到 筆畫(huà)數(shù)為2的偏旁部首,挨個(gè)匹配查找偏旁部首,直到找到合適的為止,再通過(guò)偏旁部首索 引對(duì)應(yīng)的項(xiàng),從筆畫(huà)庫(kù)中找出相應(yīng)的標(biāo)準(zhǔn)渲染筆畫(huà);剩下的孤立筆畫(huà)從步驟2)的筆畫(huà)索引 中挨個(gè)檢索得到相應(yīng)的標(biāo)準(zhǔn)渲染筆畫(huà)。 所述的步驟6)包括步驟5)中取出的標(biāo)準(zhǔn)渲染筆畫(huà)的骨架有N-I段,包含2個(gè)端 點(diǎn)和N-I個(gè)拐點(diǎn)(Ctl, C1, ···(;),將每一段平均分割為10小節(jié),第i段有9個(gè)分割點(diǎn)Bi = (Pi,0,Pi,?!ぁ?Pi,8),整個(gè)骨架的節(jié)點(diǎn)序列為 P = (C0, B0, C1, B1,
'CN^IJBMJCN);步驟 4)將每
一個(gè)手寫(xiě)輸入筆畫(huà)依據(jù)拐點(diǎn)(C1 對(duì)于第i段有9個(gè)分割點(diǎn)Bi' Pi nP,- ,1 = P,- ? P-
)分割成N-I段,將每一小段分割為10段, -P^8'),使得 ICiPiJ = ICi' Pi,/ |,
P,·
,IP1- .rC,·+-, I 一 IP1-C1.
,而(Pi
.Pi,6' MfPi
PM
和
之間的線段平均劃分為6段,手寫(xiě)筆畫(huà)的節(jié)點(diǎn)序列為q = (C0' ,B0',C1',B/,…CN_/,Bn-/,C/ );對(duì)于標(biāo)準(zhǔn)渲染筆畫(huà)中的每一個(gè)控制點(diǎn)V,運(yùn)
用公式'計(jì)算形變后的位置ν',f;計(jì)算如下
X(V)HV-A+
/ =Σ^4,
A = w,.
P丨V-p.I-^Jl--(ν-.P·}P, = Pi --P”4 = <ii -Σ簡(jiǎn)^ Σ9
<1- =■
Wj = 其中丄是-維向量的運(yùn)算符,(χ,γ) ι= (-y,x);根據(jù)形變后的控制點(diǎn)重新繪
制筆畫(huà)輪廓并填充輪廓區(qū)域,將所有的形變筆畫(huà)重疊繪制于一張圖像上輸出。本發(fā)明與現(xiàn)有技術(shù)相比具有的有益效果1.該方法計(jì)算量小、實(shí)時(shí)性強(qiáng),能夠在手寫(xiě)輸入完成時(shí)同時(shí)輸出渲染結(jié)果;2.該方法能夠較好渲染書(shū)法作品,渲染結(jié)果具有指定的碑帖的特定風(fēng)格;3.該方法渲染出的字可以不同尺度的縮放而不會(huì)發(fā)生大的扭曲和形變。
圖1 (a)是傳統(tǒng)碑帖中的字的示意圖;圖1(b)是本發(fā)明的用貝塞爾曲線抽取出的輪廓示意圖;圖1(c)是本發(fā)明的筆畫(huà)骨架示意圖;圖2(a)是本發(fā)明的特殊九宮格示意7
圖2(b)是本發(fā)明的筆畫(huà)“豎折折鉤”的判定示意圖;圖2(c)是本發(fā)明的草字頭的判定示意圖;圖3是本發(fā)明的“萬(wàn)”字的整個(gè)渲染流程圖;圖4(a)是本發(fā)明的手寫(xiě)輸入示意圖;圖4(b)是本發(fā)明的渲染結(jié)果示意圖。
具體實(shí)施例方式書(shū)法特定風(fēng)格渲染的方法包括以下步驟1)選擇一個(gè)碑帖作為范本,在要抽取的筆畫(huà)上面選取若干個(gè)點(diǎn)作為貝塞爾曲線的 端點(diǎn),指定每一段貝塞爾曲線的階數(shù),調(diào)整貝塞爾曲線控制點(diǎn)的位置,使這些貝塞爾曲線組 成的閉合曲線與筆畫(huà)輪廓重合,用貝塞爾曲線指定筆畫(huà)的骨架,每個(gè)標(biāo)準(zhǔn)筆畫(huà)最終由輪廓 控制點(diǎn)和骨架表示,將標(biāo)準(zhǔn)筆畫(huà)按漢字筆畫(huà)類(lèi)型類(lèi)組成標(biāo)準(zhǔn)筆畫(huà)庫(kù);2)根據(jù)筆畫(huà)的轉(zhuǎn)折情況將筆畫(huà)庫(kù)中的標(biāo)準(zhǔn)筆畫(huà)進(jìn)行分段,沒(méi)有轉(zhuǎn)折的為一段筆 畫(huà),有一個(gè)轉(zhuǎn)折的為兩段筆畫(huà),有兩個(gè)轉(zhuǎn)折的為三段筆畫(huà),將相同筆畫(huà)段數(shù)的筆畫(huà)歸為一 類(lèi),構(gòu)建筆畫(huà)索引;3)構(gòu)建包含漢字常用的偏旁部首的偏旁部首索引,手動(dòng)為偏旁部首索引中的每一 偏旁部首的每一個(gè)筆畫(huà)從步驟1)中的標(biāo)準(zhǔn)筆畫(huà)庫(kù)中選擇筆畫(huà);4)使用九宮格為漢字的每個(gè)基本筆畫(huà)設(shè)置判定的法則,實(shí)時(shí)捕獲記錄書(shū)寫(xiě)筆畫(huà), 識(shí)別筆畫(huà)的基本類(lèi)型;5)構(gòu)建偏旁部首過(guò)濾器,從手寫(xiě)輸入筆畫(huà)序列中查找出偏旁部首,再通過(guò)步驟3) 中的偏旁部首索引從步驟1)的標(biāo)準(zhǔn)筆畫(huà)庫(kù)中找出相應(yīng)的標(biāo)準(zhǔn)渲染筆畫(huà);6)將找出的標(biāo)準(zhǔn)筆畫(huà)根據(jù)手寫(xiě)輸入筆畫(huà)的形態(tài)進(jìn)行形變,將整個(gè)字的所有形變后 的筆畫(huà)疊加組合后輸出。所述的步驟4)包括將筆畫(huà)的外包圍盒均勻劃分為九塊,并畫(huà)出水平和垂直中軸 線,稱(chēng)之為九宮格,用九宮格為漢字中的每一個(gè)筆畫(huà)設(shè)置判定的法則,豎折折鉤筆畫(huà)用如下 法則判定 其中Ci表示筆畫(huà)的端點(diǎn)和轉(zhuǎn)折點(diǎn),X和Y分別表示轉(zhuǎn)折點(diǎn)的X和Y坐標(biāo)值,Rij表 示九宮格中的第i行、第j列的格子,實(shí)時(shí)捕獲手寫(xiě)輸入,將輸入漢字進(jìn)行筆畫(huà)分解,高斯平 滑筆畫(huà)曲線,計(jì)算每個(gè)點(diǎn)的曲率,設(shè)置曲率的閾值,曲率大于閾值的為拐點(diǎn),根據(jù)將手寫(xiě)筆 畫(huà)分段,依據(jù)段數(shù)將筆畫(huà)歸類(lèi),挨個(gè)匹配對(duì)應(yīng)類(lèi)別的各個(gè)基本筆畫(huà),找出匹配的筆畫(huà)類(lèi)型, 最終為整個(gè)輸入筆畫(huà)序列的各個(gè)筆畫(huà)打上類(lèi)型標(biāo)簽。
8旁部首過(guò)濾器,偏旁部首過(guò)濾器包含一個(gè)偏旁部首列 表,列表將偏旁部首依據(jù)筆畫(huà)數(shù)分類(lèi),記錄每一個(gè)偏旁部首由哪一些筆畫(huà)組成,利用九宮格 為每一個(gè)偏旁部首制定判定的法則,草字頭判定法則如下 P0.X < midX,
P1 e {U}·其中Pi表示筆畫(huà)的端點(diǎn)和轉(zhuǎn)折點(diǎn),X和Y分別表示端點(diǎn)和轉(zhuǎn)折點(diǎn)的X和Y坐標(biāo)值, Rij表示九宮格中的第i行、第j列的格子,midX表示九宮格的中軸線,偏旁部首過(guò)濾器利用 最長(zhǎng)匹配原則,從打好標(biāo)簽的手寫(xiě)輸入筆畫(huà)序列中查找出可能的偏旁部首,給定一個(gè)序列, 先從中查找是否有筆畫(huà)數(shù)為6的偏旁部首,如果沒(méi)有再查找筆畫(huà)數(shù)為5的偏旁部首,一直到 筆畫(huà)數(shù)為2的偏旁部首,挨個(gè)匹配查找偏旁部首,直到找到合適的為止,再通過(guò)偏旁部首索 引對(duì)應(yīng)的項(xiàng),從筆畫(huà)庫(kù)中找出相應(yīng)的標(biāo)準(zhǔn)渲染筆畫(huà);剩下的孤立筆畫(huà)從步驟2)的筆畫(huà)索引 中挨個(gè)檢索得到相應(yīng)的標(biāo)準(zhǔn)渲染筆畫(huà)。所述的步驟6)包括步驟5)中取出的標(biāo)準(zhǔn)渲染筆畫(huà)的骨架有N-I段,包含2個(gè)端 點(diǎn)和N-I個(gè)拐點(diǎn)(Ctl, C1, ···(;),將每一段平均分割為10小節(jié),第i段有9個(gè)分割點(diǎn)Bi = 汜,。斤,廣義,8),整個(gè)骨架的節(jié)點(diǎn)序列為?= (C0, B0, C1, B1,…Cn-PBn^Cn);步驟4)將每 一個(gè)手寫(xiě)輸入筆畫(huà)依據(jù)拐點(diǎn)(C。',C1,…C/ )分割成N-I段,將每一小段分割為10段, 對(duì)于第 i 段有 9 個(gè)分割點(diǎn) Bi' = (Pi,/,Pi,/ -Pi,,‘),使得 ICiPiJ = ICi' Pi,/ |, ΙΡ ,οΡ ,ιΙ = IPi,0' Pi,/ ,IPiA8I = IPi,/ Pi,8' I,lPi,8ci+1l = IPw' Ci+1',而(Pi, 2',...Pi,6' Mfpi,/和Pi,/之間的線段平均劃分為6段,手寫(xiě)筆畫(huà)的節(jié)點(diǎn)序列為q = (C0' ,B0',C1',B/,…CN_/ ,Bn^1',C/ );對(duì)于標(biāo)準(zhǔn)渲染筆畫(huà)中的每一個(gè)控制點(diǎn)V,運(yùn)
用公式νΛν,計(jì)算形變后的位置ν',f;計(jì)算如下
9 其中ι是-維向量的運(yùn)算符,(χ,y) ι= (-y, χ);根據(jù)形變后的控制點(diǎn)重新繪
制筆畫(huà)輪廓并填充輪廓區(qū)域,將所有的形變筆畫(huà)重疊繪制于一張圖像上輸出。實(shí)施例如附圖3和4所示,給出了書(shū)法特定風(fēng)格渲染的實(shí)例。下面結(jié)合本發(fā)明的方法詳 細(xì)說(shuō)明該實(shí)例實(shí)施的具體步驟,如下(1)選用柳公權(quán)《玄米塔》碑作為范本,用貝塞爾曲線手動(dòng)擬合抽取字帖中的筆畫(huà) 輪廓,在要抽取的筆畫(huà)上面選取若干個(gè)點(diǎn)作為貝塞爾曲線的端點(diǎn),指定每一段貝塞爾曲線 的階數(shù),調(diào)整貝塞爾曲線控制點(diǎn)的位置,使這些貝塞爾曲線組成的閉合曲線與筆畫(huà)輪廓重 合,用貝塞爾曲線指定筆畫(huà)輪廓,每個(gè)標(biāo)準(zhǔn)筆畫(huà)最終由輪廓控制點(diǎn)和骨架表示,將標(biāo)準(zhǔn)筆畫(huà) 按漢字筆畫(huà)類(lèi)型類(lèi)組成標(biāo)準(zhǔn)筆畫(huà)庫(kù);(2)將步驟(1)得到的筆畫(huà)庫(kù)中的筆畫(huà)根據(jù)筆畫(huà)的轉(zhuǎn)折情況將筆畫(huà)庫(kù)中的標(biāo)準(zhǔn) 筆畫(huà)進(jìn)行分段,沒(méi)有轉(zhuǎn)折的為一段筆畫(huà),有一個(gè)轉(zhuǎn)折的為兩段筆畫(huà),有兩個(gè)轉(zhuǎn)折的為三段筆 畫(huà),將有相同筆畫(huà)段數(shù)的筆畫(huà)歸為一類(lèi),構(gòu)建筆畫(huà)索引;(3)構(gòu)建偏旁部首索引,包含漢字常用的偏旁部首,手動(dòng)為每一個(gè)偏旁部首從步驟 (1)標(biāo)準(zhǔn)筆畫(huà)庫(kù)中選擇合適的筆畫(huà)組合用于渲染,將每一個(gè)偏旁部首中的每個(gè)筆畫(huà)都映射 到筆畫(huà)索引中的一項(xiàng);(4)用九宮格為漢字中的每一個(gè)筆畫(huà)設(shè)置判定的法則,實(shí)時(shí)捕獲用戶手寫(xiě)輸入漢 字“萬(wàn)”,根據(jù)輸入筆畫(huà)點(diǎn)的連續(xù)性,將漢字“萬(wàn)”進(jìn)行筆畫(huà)分解,得到手寫(xiě)輸入筆畫(huà)序列,利 用筆畫(huà)判定法則識(shí)別“萬(wàn)”字各個(gè)筆畫(huà)的類(lèi)型;(5)構(gòu)建偏旁部首過(guò)濾器,從步驟(4)的筆畫(huà)序列中查找偏旁部首“草字頭”和 “曰”字,再通過(guò)步驟(3)中的偏旁部首索引從步驟(1)的標(biāo)準(zhǔn)筆畫(huà)庫(kù)中找出相應(yīng)的標(biāo)準(zhǔn)渲 染筆畫(huà),剩下的筆畫(huà)再?gòu)牟襟E(1)的標(biāo)準(zhǔn)筆畫(huà)庫(kù)中找出相應(yīng)的標(biāo)準(zhǔn)渲染筆畫(huà);(6)將步驟5)中找出的標(biāo)準(zhǔn)筆畫(huà)根據(jù)手寫(xiě)輸入筆畫(huà)的形態(tài)進(jìn)行形變,將整個(gè)字的 所有形變后的筆畫(huà)疊加組合后輸出。本實(shí)例的運(yùn)行結(jié)果在附圖4中顯示,用戶手寫(xiě)輸入的是一個(gè)筆畫(huà)粗細(xì)一致的硬筆 字,系統(tǒng)將其渲染為具有特定風(fēng)格的毛筆字;由于筆畫(huà)庫(kù)中的標(biāo)準(zhǔn)筆畫(huà)是從唐代柳公權(quán)的《玄米塔碑》中抽取出的,如圖1所示,所以渲染出的結(jié)構(gòu)很明顯帶有“柳體”字的風(fēng)格特征。
權(quán)利要求
一種書(shū)法特定風(fēng)格渲染的方法,其特征在于包括以下步驟1)選擇一個(gè)碑帖作為范本,在要抽取的筆畫(huà)上面選取若干個(gè)點(diǎn)作為貝塞爾曲線的端點(diǎn),指定每一段貝塞爾曲線的階數(shù),調(diào)整貝塞爾曲線控制點(diǎn)的位置,使這些貝塞爾曲線組成的閉合曲線與筆畫(huà)輪廓重合,用貝塞爾曲線指定筆畫(huà)的骨架,每個(gè)標(biāo)準(zhǔn)筆畫(huà)最終由輪廓控制點(diǎn)和骨架表示,將標(biāo)準(zhǔn)筆畫(huà)按漢字筆畫(huà)類(lèi)型類(lèi)組成標(biāo)準(zhǔn)筆畫(huà)庫(kù);2)根據(jù)筆畫(huà)的轉(zhuǎn)折情況將筆畫(huà)庫(kù)中的標(biāo)準(zhǔn)筆畫(huà)進(jìn)行分段,沒(méi)有轉(zhuǎn)折的為一段筆畫(huà),有一個(gè)轉(zhuǎn)折的為兩段筆畫(huà),有兩個(gè)轉(zhuǎn)折的為三段筆畫(huà),將相同筆畫(huà)段數(shù)的筆畫(huà)歸為一類(lèi),構(gòu)建筆畫(huà)索引;3)構(gòu)建包含漢字常用的偏旁部首的偏旁部首索引,手動(dòng)為偏旁部首索引中的每一偏旁部首的每一個(gè)筆畫(huà)從步驟1)中的標(biāo)準(zhǔn)筆畫(huà)庫(kù)中選擇筆畫(huà);4)使用九宮格為漢字的每個(gè)基本筆畫(huà)設(shè)置判定的法則,實(shí)時(shí)捕獲記錄書(shū)寫(xiě)筆畫(huà),識(shí)別筆畫(huà)的基本類(lèi)型;5)構(gòu)建偏旁部首過(guò)濾器,從手寫(xiě)輸入筆畫(huà)序列中查找出偏旁部首,再通過(guò)步驟3)中的偏旁部首索引從步驟1)的標(biāo)準(zhǔn)筆畫(huà)庫(kù)中找出相應(yīng)的標(biāo)準(zhǔn)渲染筆畫(huà);6)將找出的標(biāo)準(zhǔn)筆畫(huà)根據(jù)手寫(xiě)輸入筆畫(huà)的形態(tài)進(jìn)行形變,將整個(gè)字的所有形變后的筆畫(huà)疊加組合后輸出。
2.根據(jù)權(quán)利要求1所述的一種書(shū)法特定風(fēng)格渲染方法,其特征在于所述的步驟4)包 括將筆畫(huà)的外包圍盒均勻劃分為九塊,并畫(huà)出水平和垂直中軸線,稱(chēng)之為九宮格,用九宮 格為漢字中的每一個(gè)筆畫(huà)設(shè)置判定的法則,豎折折鉤筆畫(huà)用如下法則判定C| .JC < Cq .-Ar,Cj .X < C*2C^ .X < (22C< C^-^iC0 e {氏(),^oi , ^02 },C2 E {^02’尺12},-C3 ^ {及20,^21,^22}·其中Ci表示筆畫(huà)的端點(diǎn)和轉(zhuǎn)折點(diǎn),X和Y分別表示轉(zhuǎn)折點(diǎn)的X和Y坐標(biāo)值,Rij表示九宮 格中的第i行、第j列的格子,實(shí)時(shí)捕獲手寫(xiě)輸入,將輸入漢字進(jìn)行筆畫(huà)分解,高斯平滑筆畫(huà) 曲線,計(jì)算每個(gè)點(diǎn)的曲率,設(shè)置曲率的閾值,曲率大于閾值的為拐點(diǎn),根據(jù)將手寫(xiě)筆畫(huà)分段, 依據(jù)段數(shù)將筆畫(huà)歸類(lèi),挨個(gè)匹配對(duì)應(yīng)類(lèi)別的各個(gè)基本筆畫(huà),找出匹配的筆畫(huà)類(lèi)型,最終為整 個(gè)輸入筆畫(huà)序列的各個(gè)筆畫(huà)打上類(lèi)型標(biāo)簽。
3.根據(jù)權(quán)利要求1所述的一種書(shū)法特定風(fēng)格渲染方法,其特征在于所述的步驟5)包 括構(gòu)建偏旁部首過(guò)濾器,偏旁部首過(guò)濾器包含一個(gè)偏旁部首列表,列表將偏旁部首依據(jù)筆 畫(huà)數(shù)分類(lèi),記錄每一個(gè)偏旁部首由哪一些筆畫(huà)組成,利用九宮格為每一個(gè)偏旁部首制定判 定的法則,草字頭判定法則如下 P\ e {滅20,及2l}, Pl e {滅10’ 及2。},< P3g{Ru,R21], Zj4 g (U02}, P5 e {R2l,R22), P1 G {^02^12}·其中Pi表示筆畫(huà)的端點(diǎn)和轉(zhuǎn)折點(diǎn),X和Y分別表示端點(diǎn)和轉(zhuǎn)折點(diǎn)的X和Y坐標(biāo)值,Rij 表示九宮格中的第i行、第j列的格子,midX表示九宮格的中軸線,偏旁部首過(guò)濾器利用最 長(zhǎng)匹配原則,從打好標(biāo)簽的手寫(xiě)輸入筆畫(huà)序列中查找出可能的偏旁部首,給定一個(gè)序列,先 從中查找是否有筆畫(huà)數(shù)為6的偏旁部首,如果沒(méi)有再查找筆畫(huà)數(shù)為5的偏旁部首,一直到筆 畫(huà)數(shù)為2的偏旁部首,挨個(gè)匹配查找偏旁部首,直到找到合適的為止,再通過(guò)偏旁部首索引 對(duì)應(yīng)的項(xiàng),從筆畫(huà)庫(kù)中找出相應(yīng)的標(biāo)準(zhǔn)渲染筆畫(huà);剩下的孤立筆畫(huà)從步驟2)的筆畫(huà)索引中 挨個(gè)檢索得到相應(yīng)的標(biāo)準(zhǔn)渲染筆畫(huà)。
4.根據(jù)權(quán)利要求1所述的一種書(shū)法特定風(fēng)格渲染方法,其特征在于所述的步驟6)包 括步驟5)中取出的標(biāo)準(zhǔn)渲染筆畫(huà)的骨架有N-I段,包含2個(gè)端點(diǎn)和N-I個(gè)拐點(diǎn)(Ctl, C1,… Cn),將每一段平均分割為10小節(jié),第i段有9個(gè)分割點(diǎn)Bi = (Pi,0,Pi^Pii8),整個(gè)骨架的 節(jié)點(diǎn)序列為P = (C0, B0, C1, B1,…CV1,Bm, Cn);步驟4)將每一個(gè)手寫(xiě)輸入筆畫(huà)依據(jù)拐點(diǎn) (C0' ,C1'…C/ )分割成N-I段,將每一小段分割為10段,對(duì)于第i段有9個(gè)分割點(diǎn)Bi' =(Pi,/ ,Pi,/ ...Pi,/ ),使得 ICiPiJ = ICi' PiV , IPii0PiaI = IPi,o' Pi,/ UPi, A8I = IPi,/ PiV ,IPwCwI = IPii8' ci+1',而(Pi,2',…Pi,6')將Pia'和Pi,/ 之間的線段平均劃分為6段,手寫(xiě)筆畫(huà)的節(jié)點(diǎn)序列為q= (C/ , B0' , C1' , B1'…CV1‘, Bn_/,Cn');對(duì)于標(biāo)準(zhǔn)渲染筆畫(huà)中的每一個(gè)控制點(diǎn)V,運(yùn)用公SvJ^v'計(jì)算形變后的位置 ν',fr計(jì)算如下 其中丄是一個(gè)二維向量的運(yùn)算符,(x,y)i= (_y,x);根據(jù)形變后的控制點(diǎn)重新繪制筆畫(huà)輪廓并填充輪廓區(qū)域,將所有的形變筆畫(huà)重疊繪制于一張圖像上輸出。
全文摘要
本發(fā)明公開(kāi)了一種書(shū)法特定風(fēng)格渲染的方法。它是采用貝塞爾曲線從特定的碑帖中抽取筆畫(huà),按照漢字筆畫(huà)類(lèi)別分類(lèi)創(chuàng)建筆畫(huà)庫(kù),構(gòu)建筆畫(huà)索引和偏旁索引,使用特殊九宮格判定識(shí)別手寫(xiě)輸入漢字的基本類(lèi)型,建立偏旁部首過(guò)濾器從手寫(xiě)輸入筆畫(huà)序列中查找偏旁部首,從筆畫(huà)庫(kù)中取出相應(yīng)的標(biāo)準(zhǔn)筆畫(huà),將標(biāo)準(zhǔn)筆畫(huà)根據(jù)手寫(xiě)輸入筆畫(huà)進(jìn)行形變,將渲染后的毛筆字輸出。本發(fā)明可以將手寫(xiě)的硬筆字渲染為具有指定碑帖的風(fēng)格的毛筆字,計(jì)算量小,實(shí)時(shí)性強(qiáng),渲染結(jié)果具有一定的審美價(jià)值。
文檔編號(hào)G06T11/00GK101916451SQ20101024225
公開(kāi)日2010年12月15日 申請(qǐng)日期2010年7月30日 優(yōu)先權(quán)日2010年7月30日
發(fā)明者俞凱, 吳江琴, 莊越挺, 張振庭 申請(qǐng)人:浙江大學(xué)