專(zhuān)利名稱(chēng)::一種基于筆畫(huà)分段建模的手寫(xiě)漢字隸書(shū)美化方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于計(jì)算機(jī)識(shí)別手寫(xiě)漢字的
技術(shù)領(lǐng)域:
,特別是涉及一種基于筆畫(huà)分段建模的手寫(xiě)漢字隸書(shū)美化方法。
背景技術(shù):
:手寫(xiě)漢字美化一般是指用戶(hù)通過(guò)手寫(xiě)輸入設(shè)備(比如觸摸屏、鼠標(biāo)等)書(shū)寫(xiě)漢字,同時(shí)計(jì)算機(jī)對(duì)手寫(xiě)輸入設(shè)備采集到的漢字書(shū)寫(xiě)軌跡進(jìn)行處理,使最終顯示在屏幕上的漢字具有某種毛筆字體的藝術(shù)特征。手寫(xiě)漢字美化技術(shù)在過(guò)去幾十年的計(jì)算機(jī)發(fā)展史里面基本上沒(méi)有得到太大的發(fā)展。目前與漢字美化領(lǐng)域關(guān)系最密切,并且已有算法比較成熟的研究領(lǐng)域是計(jì)算機(jī)書(shū)法領(lǐng)域,而計(jì)算機(jī)書(shū)法的技術(shù)路線(xiàn)通常是根據(jù)標(biāo)準(zhǔn)字庫(kù)中漢字進(jìn)行造字,并不能體現(xiàn)用戶(hù)自身的書(shū)寫(xiě)特征。手寫(xiě)漢字美化技術(shù)具有兩個(gè)基本特征一是忠于用戶(hù)的書(shū)寫(xiě),二是具有某種毛筆字體的風(fēng)格特征。目前常用的手寫(xiě)漢字美化方法有以下三種1、對(duì)標(biāo)準(zhǔn)字圖像提取輪廓或骨架,通過(guò)直接套用或者仿射變換對(duì)漢字進(jìn)行美化;2、書(shū)寫(xiě)筆(毛筆)構(gòu)造建模,對(duì)毛筆的結(jié)構(gòu)及作用效果建模,期望模擬真實(shí)的書(shū)寫(xiě)過(guò)程進(jìn)而重現(xiàn)風(fēng)格;3、采用數(shù)字墨水的技術(shù)對(duì)筆畫(huà)進(jìn)行擬合建模。以上這三種方法都存在不同程度的缺陷。對(duì)于第一種方法,如果采用直接套用標(biāo)準(zhǔn)字輪廓,它的缺陷是美化后的筆畫(huà)風(fēng)格固定。事實(shí)上,各種筆畫(huà)的風(fēng)格都有很多種,如橫折鉤結(jié)構(gòu),對(duì)于"習(xí)"字和"羽"字,第一段的長(zhǎng)度比例就不一樣。而與"羽"字的第4筆差別就更大了,不僅僅是長(zhǎng)寬比例的問(wèn)題,筆畫(huà)段間的夾角都不一致了。如果采用仿效變換,它的缺陷是美化算法的復(fù)雜度太高,因?yàn)閷?duì)于未知筆畫(huà),只能獲取其長(zhǎng)寬范圍,若要進(jìn)一步對(duì)內(nèi)部筆畫(huà)段的夾角算得斜切角,那往往太過(guò)復(fù)雜。對(duì)于第二種方法,其缺陷是需要比較復(fù)雜的硬件設(shè)施,如壓力感應(yīng)器的支持,所以該方法成本高,適用面窄。對(duì)于第三種方法,其缺陷是美化效果過(guò)于簡(jiǎn)單,不能模擬出令人滿(mǎn)意的毛筆字體效果。這是由于數(shù)字墨水的方法是根據(jù)書(shū)寫(xiě)的速度來(lái)計(jì)算筆畫(huà)的寬度(那樣的話(huà),各種筆畫(huà)都是同一種風(fēng)格兩頭粗,中間細(xì)),而且該方法沒(méi)有涉及筆畫(huà)段之間的銜接,只作了最簡(jiǎn)單的筆畫(huà)擬合工作,故難以達(dá)到令人滿(mǎn)意的美化效果。
發(fā)明內(nèi)容本發(fā)明的目的在于克服上述手寫(xiě)漢字美化方法的不足,提供一種既忠于用戶(hù)的書(shū)寫(xiě)又能充分體現(xiàn)隸書(shū)字體藝術(shù)特征的手寫(xiě)漢字美化方法,即一種基于筆畫(huà)分段建模的手寫(xiě)漢字隸書(shū)美化方法。本發(fā)明采用的技術(shù)方案為—種基于筆畫(huà)分段建模的手寫(xiě)漢字隸書(shū)美化方法,包括如下步驟(1)、對(duì)用戶(hù)手寫(xiě)輸入點(diǎn)序列進(jìn)行插值處理,使得用戶(hù)手寫(xiě)輸入的漢字呈現(xiàn)為筆畫(huà)點(diǎn)連續(xù)的漢字;(2)、提取筆畫(huà)的拐點(diǎn)信息,并根據(jù)拐點(diǎn)信息把筆畫(huà)分段;(3)、根據(jù)模型庫(kù)中的筆畫(huà)段和連接件模型對(duì)漢字筆畫(huà)進(jìn)行渲染。上述技術(shù)方案中,所述步驟(1)對(duì)用戶(hù)手寫(xiě)輸入點(diǎn)序列進(jìn)行插值處理所采用的方法為DDA插值算法,其步驟包括(11)、把時(shí)序點(diǎn)序列相鄰的兩個(gè)點(diǎn)的坐標(biāo)定義為起點(diǎn)(xl,yl),終點(diǎn)(x2,y2),算出Ll=abs(xl-x2),L2=abs(yl-y2),L=max(Ll,L2);(12)、如果L=O,程序結(jié)束,不需要進(jìn)行DDA插值;(13)、如果L^O,令dx=(x2-xl)/L,dy=(y2-yl)/L;(14)、令point=xl+dx,point[1]=yl+dy,point為第一個(gè)插入點(diǎn)的橫坐標(biāo),point[1]為第一個(gè)插入點(diǎn)的縱坐標(biāo),令j=1;(15)、當(dāng)j<L時(shí),執(zhí)行循環(huán)語(yǔ)句point[j]=point[j_l]+dxpoint[j][1]=point[j-l]+dy,其中point[j]為第j-l個(gè)插入點(diǎn)的橫坐標(biāo),point[O][j]為第j-l個(gè)插入點(diǎn)的縱坐標(biāo),然后執(zhí)行j=j+l,循環(huán)插入下一個(gè)點(diǎn);(16)、當(dāng)j^L時(shí),程序結(jié)束,DDA插值完成。所述步驟(2)提取筆畫(huà)的拐點(diǎn)信息并把筆畫(huà)分段所采用的算法為基于自適應(yīng)彎曲值的拐點(diǎn)提取算法,該算法中,計(jì)算彎曲值的表達(dá)式為bik二max(lxi—k-Xi)+(xi+k-Xi)I,(y卜k-yi)+(yi+k1i)I),其中(x丄,y》,(x卜k,y卜k)和(xi+k,yi+k)分別為Pi,P卜k,Pi+k的坐標(biāo),k的值為Pi的支撐域,P卜k,Pi+k分別為它的前k點(diǎn)和后k點(diǎn),該算法的步驟包括(21)、將屬于直線(xiàn)段的點(diǎn)去除,方法是對(duì)于Pi,PH,Pw三點(diǎn),判斷P^,Pi兩點(diǎn)的斜率和Pi,Pi+1兩點(diǎn)的斜率是否相同,或判斷它們之間的鏈碼是否相同,如相同,證明這三點(diǎn)是在同一直線(xiàn)上,將這些不可能是拐點(diǎn)的直線(xiàn)上的點(diǎn)排除,剩余的點(diǎn)作為侯選點(diǎn);(22)、計(jì)算侯選點(diǎn)的彎曲值,支撐域k從l開(kāi)始,用bik表示當(dāng)支撐域的大小為k時(shí),第i點(diǎn)的彎曲值,如果bik>bi,k+1,k值增加l,否則k值停止增加,為所求的支撐域大小;1(23)、應(yīng)用公式6、=^,算出每一侯選點(diǎn)的彎曲值;(24)、判斷符合以下條件之一,就排除它是拐點(diǎn)條件1:bVi<e,這里e為1.1條件2:bVi<bVj,對(duì)于j=i-l或j=i+l條件3:bVi=bv卜p并且ki<k卜i條件4:bVi=bvi+1,并且b《ki+1排除后剩余的作為所計(jì)算的拐點(diǎn)。所述步驟(3)包括總結(jié)隸書(shū)筆畫(huà)中所有的筆畫(huà)段類(lèi)型,并對(duì)其進(jìn)行建模,具體操作如下(31)、用六種筆畫(huà)段類(lèi)型模擬所有的隸書(shū)筆畫(huà)段,該六種類(lèi)型包括兩頭粗中間稍細(xì)型,漸細(xì)型,漸粗型,粗細(xì)不變型,中間粗兩邊細(xì)型,開(kāi)始平緩后面粗型;(32)、根據(jù)步驟(2)的拐點(diǎn)信息,把用戶(hù)輸入的筆畫(huà)段分段用最小二乘法擬合成三階貝塞爾曲線(xiàn);(33)、根據(jù)步驟(31)中總結(jié)的筆畫(huà)段類(lèi)型以及拐點(diǎn)附近點(diǎn)方向信息,給擬合后的貝塞爾曲線(xiàn)添加寬度信息;(34)、根據(jù)步驟(33)中的給貝塞爾曲線(xiàn)添加的寬度信息延著擬合后的貝塞爾曲線(xiàn)畫(huà)出不同半徑的圓,完成對(duì)各種筆畫(huà)段模型的建模。所述步驟(3)包括總結(jié)隸書(shū)筆畫(huà)中所有連接件的類(lèi)型,并對(duì)其進(jìn)行建模,具體操作如下(311)、用四類(lèi)連接件模擬隸書(shū)書(shū)法中的筆畫(huà)拐彎處的形狀模型,這四類(lèi)連接件包括,獨(dú)體連接件,單向連接件,雙向連接件以及隸書(shū)特有的勾型連接件;(312)、通過(guò)繪圖工具畫(huà)出若干段三階貝塞爾,用以逼近步驟(311)中的連接件,記錄下每段貝塞爾曲線(xiàn)的控制參數(shù),用以在程序中進(jìn)行重現(xiàn);(313)、對(duì)重現(xiàn)后的連接件進(jìn)行縮放,旋轉(zhuǎn),平移操作,完成建模。所述步驟(3)根據(jù)筆畫(huà)段和連接件模型對(duì)漢字筆畫(huà)進(jìn)行渲染,其步驟包括(321)、判斷輸入筆畫(huà)的點(diǎn)數(shù),如果點(diǎn)數(shù)少于30,判斷筆畫(huà)為點(diǎn),用獨(dú)體連接件進(jìn)行渲染,程序結(jié)束;(322)、如果點(diǎn)數(shù)多于30,再判斷步驟(2)中提取到的拐點(diǎn)數(shù),如果拐點(diǎn)數(shù)為2,說(shuō)明筆畫(huà)只有筆畫(huà)頭和筆畫(huà)尾兩個(gè)拐點(diǎn),判斷該筆畫(huà)為簡(jiǎn)單筆畫(huà),進(jìn)行簡(jiǎn)單筆畫(huà)渲染(簡(jiǎn)單筆畫(huà)的判斷規(guī)則如下表),程序結(jié)束;<table>tableseeoriginaldocumentpage7</column></row><table>上表中,total表示筆畫(huà)的總點(diǎn)數(shù),cornercnt表示檢測(cè)到的拐點(diǎn)數(shù),2個(gè)拐點(diǎn)是指首點(diǎn)和末點(diǎn),curvature指曲率,表征筆畫(huà)的彎曲程度,dir是首點(diǎn)到末點(diǎn)的角度。(323)、如果拐點(diǎn)數(shù)大于2,判斷筆畫(huà)為復(fù)合筆畫(huà),并進(jìn)一步判斷該復(fù)合筆畫(huà)是否為反犬旁的第一筆、臥勾、末尾是右勾的筆畫(huà)、或末尾是左勾的筆畫(huà),對(duì)屬于這四種筆畫(huà)的復(fù)合筆畫(huà)進(jìn)行渲染;所述反犬旁的第一筆、臥勾、末尾是右勾的筆畫(huà)、或末尾是左勾的筆畫(huà)稱(chēng)為特殊筆畫(huà),其判斷規(guī)則如下表所示<table>tableseeoriginaldocumentpage8</column></row><table>(324)、對(duì)不屬于步驟(323)的其他復(fù)合筆畫(huà),進(jìn)行普通的復(fù)合筆畫(huà)渲染,程序結(jié)束。本發(fā)明將漢字總結(jié)為如下公式表示漢字=(起筆連接件)+筆畫(huà)段+{連接件+筆畫(huà)段}+(收筆連接件)其中,{連接件+筆畫(huà)段}表示連接件和筆畫(huà)段出現(xiàn)0次或多次,(起筆連接件)和(收筆連接件)表示起筆連接件和收筆連接件出現(xiàn)0次或1次。本發(fā)明的基本原理是每一種字體都有自己的風(fēng)格,而風(fēng)格主要體現(xiàn)在筆畫(huà)的粗細(xì)變化、筆畫(huà)拐彎處的停頓、起筆處的停頓、收筆處的筆鋒等等。以上的這些風(fēng)格的表現(xiàn),統(tǒng)一稱(chēng)為漢字的皮膚。將漢字的骨架蒙上皮膚,就賦予了一種風(fēng)格。而在具體的漢字美化實(shí)現(xiàn)過(guò)程中,皮膚是由筆畫(huà)段和連接件構(gòu)成的。筆畫(huà)段就是漢字中的一段段筆畫(huà),并為之蒙上皮。連接件就是起筆、落筆以及拐彎等處的連接頓筆。這本是機(jī)械工程中的一個(gè)術(shù)語(yǔ),這里用來(lái)描述漢字骨架的拐彎點(diǎn)。本發(fā)明與已有的手寫(xiě)漢字美化方法相比,具有如下的優(yōu)點(diǎn)和有益效果(1)、由于本發(fā)明對(duì)手寫(xiě)漢字進(jìn)行隸書(shū)美化是通過(guò)對(duì)六種筆畫(huà)段和四類(lèi)十三種連接件的建模重組完成的,不用存儲(chǔ)大量關(guān)于漢字輪廓的信息,故本發(fā)明所涉及的軟件系統(tǒng)規(guī)模要小,成本也會(huì)大大降低;(2)、由于本發(fā)明先抽象總結(jié)了各筆畫(huà)段和連接件的模型,然后根據(jù)用戶(hù)輸入的筆畫(huà)骨架進(jìn)行蒙皮處理,所以本發(fā)明能真正做到忠于用戶(hù)書(shū)寫(xiě),又不丟隸書(shū)毛筆書(shū)法的藝術(shù)特征。美化效果豐富多變,風(fēng)格因用戶(hù)輸入風(fēng)格的不同而有所變化,這是計(jì)算機(jī)書(shū)法所不能做到的;(3)、由于本發(fā)明連接件的建模方法是先在畫(huà)圖工具中用三階貝塞爾逼近真實(shí)隸書(shū)筆畫(huà)的拐彎處的停頓、起筆處的停頓以及收筆處的筆鋒,三階貝塞爾能充分地體現(xiàn)隸書(shū)字體的輪廓特征,所以本發(fā)明的美化效果比起傳統(tǒng)漢字美化(如數(shù)字墨水技術(shù))更逼真,效果更美觀(guān);(4)、本發(fā)明實(shí)現(xiàn)簡(jiǎn)單,算法空間復(fù)雜度和時(shí)間復(fù)雜度都較低,能真正做到實(shí)時(shí)美化;圖1是本發(fā)明的系統(tǒng)結(jié)構(gòu)框圖;圖2是本發(fā)明的四類(lèi)十三種連接件分類(lèi)圖;圖3是本發(fā)明的獨(dú)體連接件建模說(shuō)明圖;圖4是本發(fā)明的單向連接件建模說(shuō)明圖;圖5是本發(fā)明的雙向連接件建模說(shuō)明圖;圖6是本發(fā)明的勾型連接件建模說(shuō)明圖;圖7是本發(fā)明的簡(jiǎn)單筆畫(huà)渲染編程流程圖;圖8是本發(fā)明的復(fù)合筆畫(huà)渲染流程圖;圖9是本發(fā)明的手寫(xiě)漢字隸書(shū)美化效果具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明做進(jìn)一步的說(shuō)明,實(shí)施本發(fā)明所用的識(shí)別設(shè)備可以采用手寫(xiě)板或者鼠標(biāo)書(shū)寫(xiě)漢字,用純平型顯示器顯示用戶(hù)圖形界面,可采用〔++語(yǔ)言編制各類(lèi)處理程序,便能較好地實(shí)施本發(fā)明。本發(fā)明的系統(tǒng)結(jié)構(gòu)框圖如附圖1所示,該系統(tǒng)分為兩個(gè)模塊。當(dāng)用戶(hù)輸入手寫(xiě)漢字后,系統(tǒng)進(jìn)入第一個(gè)模塊預(yù)處理模塊。該模塊的作用是對(duì)用戶(hù)手寫(xiě)輸入筆畫(huà)進(jìn)行預(yù)處理,為后面的主美化模塊提供必要的參數(shù)。該模塊由兩部分組成,第一部分是對(duì)用戶(hù)的筆畫(huà)進(jìn)行DDA插值,由于從手寫(xiě)板或者鼠標(biāo)輸入的漢字筆畫(huà)可能是不連續(xù)的,如果對(duì)其直接進(jìn)行隸書(shū)美化,反走樣的效果會(huì)很不好,例如筆畫(huà)段邊沿會(huì)出現(xiàn)不平滑的現(xiàn)象,嚴(yán)重影響美觀(guān)。第二部分是對(duì)用戶(hù)輸入的筆畫(huà)進(jìn)行拐點(diǎn)提取,其目的是為以后的住美化模塊提供關(guān)于拐點(diǎn)的參數(shù),方便提取拐點(diǎn)附近的方向信息以及給用戶(hù)筆畫(huà)進(jìn)行分段,這是本發(fā)明美化方法實(shí)現(xiàn)的前提。然后系統(tǒng)進(jìn)入第二個(gè)模塊主美化模塊,該模塊的主要作用是把用戶(hù)的筆畫(huà)分三類(lèi)進(jìn)行美化,分別為獨(dú)體連接件,簡(jiǎn)單筆畫(huà),和復(fù)合筆畫(huà)。所有的筆畫(huà)都可歸結(jié)在這三類(lèi)筆畫(huà)當(dāng)中,該模塊是整個(gè)系統(tǒng)的主體。本發(fā)明建模的四類(lèi)十三種連接件分類(lèi)圖如附圖2所示,下面對(duì)四類(lèi)連接件進(jìn)行介紹(A)、獨(dú)體連接件只有"點(diǎn)"一種,這種連接件實(shí)質(zhì)并不用于連接筆畫(huà)段,而是將整段筆畫(huà)變?yōu)辄c(diǎn)。(B)、單向連接件包括了"橫頭"、"橫尾"、"豎頭"、"豎尾"、"撇尾"、"捺尾"、"臥勾"7種。這種連接件用于筆畫(huà)的起筆或收筆處,所以又可以稱(chēng)為"末稍連接件"。(C)、雙向連接件只有"橫折"一種,這種連接件主要用于筆畫(huà)中筆畫(huà)段與筆畫(huà)段的連接處,所以又可以稱(chēng)為"關(guān)節(jié)連接件"。(D)、勾型連接件包括"右勾","左勾","臥勾","反犬勾"等等的勾型筆畫(huà)的末端。這種連接件只在隸書(shū)字體中出現(xiàn),充分體現(xiàn)了隸書(shū)字體的風(fēng)格,由于隸書(shū)字體,線(xiàn)條平滑柔和,而手寫(xiě)漢字在勾處的位置往往產(chǎn)生大角度的拐點(diǎn),故在出現(xiàn)"勾"型處,需要重新建模。本發(fā)明中的獨(dú)體連接件建模說(shuō)明圖如附圖3所示,其實(shí)本發(fā)明中四種連接件的建模都可分以采用如下兩個(gè)步驟,不同點(diǎn)僅僅是貝塞爾曲線(xiàn)控制點(diǎn)參數(shù)讀取的方法,獨(dú)體連接件建模步驟如下(A)、在繪圖工具中用若干段貝塞爾曲線(xiàn)逼近連接件輪廓利用繪圖軟件的貝氏曲線(xiàn)繪制工具對(duì)"點(diǎn)"的輪廓進(jìn)行建模。通過(guò)觀(guān)察,其輪廓曲線(xiàn)可以用3段貝氏曲線(xiàn)拼接而成,如附圖3所示。將這3段曲線(xiàn)的控制點(diǎn)坐標(biāo)記錄下來(lái),在程序中利用貝氏曲線(xiàn)的畫(huà)法就可以將其畫(huà)出。(B)、連接件的縮放、旋轉(zhuǎn)以平移很顯然,連接件在最終渲染過(guò)程中要根據(jù)筆畫(huà)段的方向以及粗細(xì)調(diào)整自身的大小和方向,然后將整個(gè)模型移動(dòng)到筆畫(huà)實(shí)際的位置中去。這就需要對(duì)連接件模型做縮放以及旋轉(zhuǎn)。先介紹旋轉(zhuǎn)的方法。觀(guān)察附圖3所示,繪制輪廓時(shí)特意將整個(gè)"點(diǎn)"的形狀依照書(shū)寫(xiě)方向?yàn)?0進(jìn)行放置(當(dāng)然按其他角度放置也是可以的)。這樣,只需檢測(cè)用戶(hù)的書(shū)寫(xiě)方向,并用其減去90,就是需要旋轉(zhuǎn)的角度。再介紹縮放的方法。假設(shè)要將整個(gè)連接件模型整體放大,也就是x和y方向縮放比例相同(但其實(shí)這個(gè)連接件的縮放比例要求x與y方向的縮放比例不同,后面將有說(shuō)明)。假若用戶(hù)書(shū)寫(xiě)的長(zhǎng)度為40,而本模型的預(yù)設(shè)大小(就是圖中y方向的長(zhǎng)度)大致為4。因此,縮放的比例為40/4=10。平移很簡(jiǎn)單,直接將模型中的點(diǎn)坐標(biāo)加上目標(biāo)點(diǎn)的坐標(biāo)即可。本發(fā)明中的單向連接件建模說(shuō)明圖如附圖4所示,單向連接件是處于筆畫(huà)段一端的連接件,可能處于筆畫(huà)段的開(kāi)始,也可能處于結(jié)尾。這是無(wú)關(guān)緊要的。圖形繪制的方法和縮放的方法與獨(dú)體連接件的方法都相同,對(duì)于旋轉(zhuǎn)參數(shù),依附圖4所示,在建模時(shí)設(shè)定默認(rèn)起筆方向是0,那么只需將用戶(hù)的手寫(xiě)方向減去0就是需要旋轉(zhuǎn)的方向。其余的連接件是類(lèi)似的??梢钥吹?,在原點(diǎn)右端有一段半圓弧,這是為了平滑連接件與筆畫(huà)段之間的無(wú)縫連接而設(shè)的,也可以用其它形狀,但圓形可以保障較好的連接。本發(fā)明中的雙向連接件建模說(shuō)明圖如附圖5所示,雙向連接件是連接兩段筆畫(huà)的重要連接部件。下面以隸書(shū)"橫折"為例,說(shuō)明雙向連接件的建模過(guò)程。對(duì)于"橫折",控制以下參量A、入端寬度(wl)B、出端寬度(w2)C、入端角度(al)D、出端角度(a2)從漢字筆畫(huà)的原始軌跡可以求出in與out矢量間的旋轉(zhuǎn)角,記為e,e是包含方向的,附圖5中所示是正值。易得下面的幾何關(guān)系。(==arctan(w/2/1OT|)<formula>formulaseeoriginaldocumentpage10</formula><formula>formulaseeoriginaldocumentpage11</formula>,這里設(shè)定|AB|=1.2同理<formula>formulaseeoriginaldocumentpage11</formula><formula>formulaseeoriginaldocumentpage11</formula>,這里設(shè)定ICDI=0.6f;^=xc+1CDI.cos(6>+;r)I^d=少c十Ic。I'sin(6>+;r)其它參量從附圖5中直接讀取即可。這樣,加上全局比例縮放和全局旋轉(zhuǎn)就可以將其應(yīng)用到實(shí)際中了。本發(fā)明中的勾型連接件建模說(shuō)明圖如附圖6所示,勾型連接件可以看成是一種特殊的單向連接件,其中建模的大部分過(guò)程都是一樣的。只是由于勾型連接件要有由上一筆畫(huà)段平緩過(guò)渡的效果,所以它并不是在拐點(diǎn)處開(kāi)始的,它會(huì)延伸到前一筆畫(huà)段處,上圖中標(biāo)明的距離1就是需要延伸的距離,可以對(duì)比附圖4,單向連接件是沒(méi)有這段距離的。需要具體說(shuō)明的是附圖6中A、B點(diǎn)的橫坐標(biāo)的確定,上圖中的w是連接件的寬度大小,在尺度變換的過(guò)程中,賦予它不同的值,就可產(chǎn)生不同的粗細(xì)效果。而1的距離與用戶(hù)手寫(xiě)輸入的筆畫(huà)有關(guān)的。統(tǒng)一把連接件延伸到前一筆畫(huà)段的15個(gè)點(diǎn)處,先計(jì)算最后的拐點(diǎn)與前一筆畫(huà)段倒數(shù)第15個(gè)點(diǎn)的距離,假如是20個(gè)象素,而筆畫(huà)寬度設(shè)為10個(gè)象素,由于在建模時(shí)w的距離固定為2(由附圖6可讀出),那么距離1=^/10*20,就為4,那樣在圖中A,B點(diǎn)的橫坐標(biāo)就為-4。其他的坐標(biāo)可以直接讀。本發(fā)明中的簡(jiǎn)單筆畫(huà)渲染流程圖如附圖7所示,附圖7中參數(shù)的意義表示為curvature表示存儲(chǔ)簡(jiǎn)單筆畫(huà)的曲率,dir表示存儲(chǔ)筆畫(huà)首尾兩點(diǎn)之間的方向,len表示存儲(chǔ)筆畫(huà)長(zhǎng)度,SegX表示選用某種筆畫(huà)段類(lèi)型進(jìn)行筆畫(huà)段渲染,jointX表示選用某種類(lèi)型的連接件進(jìn)行連接件渲染。本發(fā)明中的復(fù)合筆畫(huà)渲染流程圖如附圖8所示,對(duì)于復(fù)合筆畫(huà),先要辨別出四種特殊筆畫(huà),分別是反犬旁的第一筆,臥勾,末尾是右勾的筆畫(huà)和末尾是左勾的筆畫(huà)。對(duì)這四種筆畫(huà)寫(xiě)單獨(dú)的渲染算法。四種特殊筆畫(huà)的判斷規(guī)則如表2所示。辨認(rèn)了以上四種復(fù)合筆畫(huà)段后,其他的復(fù)合筆畫(huà)段都用統(tǒng)一的渲染算法。統(tǒng)一渲染算法如下(A)、渲染筆畫(huà)頭如果dir0<30IIdir0>330,用橫頭渲染筆頭,否則用豎頭渲染筆頭。(B)、渲染中間拐點(diǎn)連接件如果(dirl<45||dirl>315)&&(dir2>70&&dir2<180)或者是(dirl>80&&dirl<170)&&(dir2>290||dir2<20),用橫折連接件渲染,否則不加渲染。(C)、渲染中間筆畫(huà)段中間筆畫(huà)段都用兩頭粗中間細(xì)筆畫(huà)段渲染。(D)、首尾筆畫(huà)段收尾筆畫(huà)段根據(jù)不同的情況用上面提到的不同風(fēng)格的筆畫(huà)段渲染。dirO存儲(chǔ)筆畫(huà)開(kāi)頭一小部分的方向,dirl存儲(chǔ)筆畫(huà)進(jìn)入倒數(shù)第二個(gè)拐點(diǎn)(除了筆畫(huà)終點(diǎn)外最后一個(gè)拐點(diǎn))方向,dir2存儲(chǔ)筆畫(huà)走出倒數(shù)第二個(gè)拐點(diǎn)的方向。本發(fā)明的手寫(xiě)漢字隸書(shū)美化效果圖如附圖9所示,圖中挑選了18個(gè)漢字對(duì)本發(fā)明進(jìn)行測(cè)試,測(cè)試效果如附圖9所示,美化效果比較理想。權(quán)利要求一種基于筆畫(huà)分段建模的手寫(xiě)漢字隸書(shū)美化方法,其特征在于包括如下步驟(1)、對(duì)用戶(hù)手寫(xiě)輸入點(diǎn)序列進(jìn)行插值處理,使得用戶(hù)手寫(xiě)輸入的漢字呈現(xiàn)為筆畫(huà)點(diǎn)連續(xù)的漢字;(2)、提取筆畫(huà)的拐點(diǎn)信息,并根據(jù)拐點(diǎn)信息把筆畫(huà)分段;(3)、根據(jù)模型庫(kù)中的筆畫(huà)段和連接件模型對(duì)漢字筆畫(huà)進(jìn)行渲染。2.根據(jù)權(quán)利要求1所述的基于筆畫(huà)分段建模的手寫(xiě)漢字隸書(shū)美化方法,其特征在于所述步驟(1)對(duì)用戶(hù)手寫(xiě)輸入點(diǎn)序列進(jìn)行插值處理所采用的方法為DDA插值算法,其步驟包括(11)、把時(shí)序點(diǎn)序列相鄰的兩個(gè)點(diǎn)的坐標(biāo)定義為起點(diǎn)(xl,yl),終點(diǎn)(x2,y2),算出Ll=abs(xl-x2),=abs(yl_y2),L=max(U,L2);(12)、如果L=0,程序結(jié)束,不需要進(jìn)行DDA插值;(13)、如果L^O,令dx=(x2-xl)/L,dy=(y2-yl)/L;(14)、令point=xl+dx,point[1]=yl+dy,point為第一個(gè)插入點(diǎn)的橫坐標(biāo),point[O][1]為第一個(gè)插入點(diǎn)的縱坐標(biāo),令j=1;(15)、當(dāng)j<L時(shí),執(zhí)行循環(huán)語(yǔ)句point[j]=point[j-1]+ckpoint[j][1]=point[j-1]+dy,其中point[j]為第j-1個(gè)插入點(diǎn)的橫坐標(biāo),point[j]為第j-1個(gè)插入點(diǎn)的縱坐標(biāo),然后執(zhí)行j=j+l,循環(huán)插入下一個(gè)點(diǎn);(16)、當(dāng)j^L時(shí),程序結(jié)束,DDA插值完成。3.根據(jù)權(quán)利要求l所述的基于筆畫(huà)分段建模的手寫(xiě)漢字隸書(shū)美化方法,其特征在于步驟(2)提取筆畫(huà)的拐點(diǎn)信息并把筆畫(huà)分段所采用的算法為基于自適應(yīng)彎曲值的拐點(diǎn)提取算法,該算法中,計(jì)算彎曲值的表達(dá)式為bik=maX(|Xi—k-Xi)+(xi+k-Xi)I,(y卜k-yi)+(yi+k1i)I),其中(x丄,y》,(x卜k,y卜k)和(xi+k,yi+k)分別為Pi,P卜k,Pi+k的坐標(biāo),k的值為Pi的支撐域,P卜k,Pi+k分別為它的前k點(diǎn)和后k點(diǎn),該算法的步驟包括(21)、將屬于直線(xiàn)段的點(diǎn)去除,方法是對(duì)于Pi,P^,Pw三點(diǎn),判斷P^,Pi兩點(diǎn)的斜率和Pi,Pi+1兩點(diǎn)的斜率是否相同,或判斷它們之間的鏈碼是否相同,如相同,證明這三點(diǎn)是在同一直線(xiàn)上,將這些不可能是拐點(diǎn)的直線(xiàn)上的點(diǎn)排除,剩余的點(diǎn)作為侯選點(diǎn);(22)、計(jì)算侯選點(diǎn)的彎曲值,支撐域k從1開(kāi)始,用bik表示當(dāng)支撐域的大小為k時(shí),第i點(diǎn)的彎曲值,如果bik^bi,w,k值增加l,否則k值停止增加,為所求的支撐域大小;(23)、應(yīng)用公式6v,.=一免~,算出每一侯選點(diǎn)的彎曲值;(24)、判斷符合以下條件之一,就排除它是拐點(diǎn)條件1:bVi<e,這里e為1.1條件2:bVi<bVj,對(duì)于j=i-1或j=i+1條件3:bVi=bVi—p并且ki<k卜i條件4:bVi二b^,并且ki《kw排除后剩余的作為所計(jì)算的拐點(diǎn)。4.根據(jù)權(quán)利要求1所述的基于筆畫(huà)分段建模的手寫(xiě)漢字隸書(shū)美化方法,其特征在于所述步驟(3)包括總結(jié)隸書(shū)筆畫(huà)中所有的筆畫(huà)段類(lèi)型,并對(duì)其進(jìn)行建模,具體操作如下(31)、用六種筆畫(huà)段類(lèi)型模擬所有的隸書(shū)筆畫(huà)段,該六種類(lèi)型包括兩頭粗中間稍細(xì)型,漸細(xì)型,漸粗型,粗細(xì)不變型,中間粗兩邊細(xì)型,開(kāi)始平緩后面粗型;(32)、根據(jù)步驟(2)的拐點(diǎn)信息,把用戶(hù)輸入的筆畫(huà)段分段用最小二乘法擬合成三階貝塞爾曲線(xiàn);(33)、根據(jù)步驟(31)中總結(jié)的筆畫(huà)段類(lèi)型以及拐點(diǎn)前后點(diǎn)方向信息,給擬合后的貝塞爾曲線(xiàn)添加寬度信息;(34)、根據(jù)步驟(33)中的給貝塞爾曲線(xiàn)添加的寬度信息延著擬合后的貝塞爾曲線(xiàn)畫(huà)出不同半徑的圓,完成對(duì)各種筆畫(huà)段模型的建模。5.根據(jù)權(quán)利要求1所述的基于筆畫(huà)分段建模的手寫(xiě)漢字隸書(shū)美化方法,其特征在于所述步驟(3)包括總結(jié)隸書(shū)筆畫(huà)中所有連接件的類(lèi)型,并對(duì)其進(jìn)行建模,具體操作如下(311)、用四類(lèi)連接件模擬隸書(shū)書(shū)法中的筆畫(huà)拐彎處的形狀模型,這四類(lèi)連接件包括,獨(dú)體連接件,單向連接件,雙向連接件以及隸書(shū)特有的勾型連接件;(312)、通過(guò)繪圖工具畫(huà)出若干段三階貝塞爾曲線(xiàn),用以逼近步驟(311)中連接件的輪廓,記錄下每段貝塞爾曲線(xiàn)的控制參數(shù),用以在程序中進(jìn)行重現(xiàn);(313)、對(duì)重現(xiàn)后的連接件進(jìn)行縮放,旋轉(zhuǎn),平移操作,完成建模。6.根據(jù)權(quán)利要求1所述的基于筆畫(huà)分段建模的手寫(xiě)漢字隸書(shū)美化方法,其特征在于所述步驟(3)根據(jù)筆畫(huà)段和連接件模型分類(lèi)對(duì)漢字筆畫(huà)進(jìn)行渲染,其步驟包括(321)、判斷輸入筆畫(huà)的點(diǎn)數(shù),如果點(diǎn)數(shù)少于30,判斷筆畫(huà)為點(diǎn),用獨(dú)體連接件進(jìn)行渲染,程序結(jié)束;(322)、如果點(diǎn)數(shù)多于30,再判斷步驟(2)中提取到的拐點(diǎn)數(shù),如果拐點(diǎn)數(shù)為2,判斷該筆畫(huà)為簡(jiǎn)單筆畫(huà),進(jìn)行簡(jiǎn)單筆畫(huà)渲染,程序結(jié)束;(323)、如果拐點(diǎn)數(shù)大于2,判斷筆畫(huà)為復(fù)合筆畫(huà),并進(jìn)一步判斷該復(fù)合筆畫(huà)是否為反犬旁的第一筆、臥勾、末尾是右勾的筆畫(huà)、或末尾是左勾的筆畫(huà),對(duì)屬于這四種筆畫(huà)的復(fù)合筆畫(huà)進(jìn)行渲染;(324)、對(duì)不屬于步驟(323)的其他復(fù)合筆畫(huà),進(jìn)行普通的復(fù)合筆畫(huà)渲染,程序結(jié)束。7.根據(jù)權(quán)利要求1至6任一項(xiàng)所述的基于筆畫(huà)分段建模的手寫(xiě)漢字隸書(shū)美化方法,其特征在于將漢字總結(jié)為如下公式表示漢字=(起筆連接件)+筆畫(huà)段+{連接件+筆畫(huà)段}+(收筆連接件)其中,{連接件+筆畫(huà)段}表示連接件和筆畫(huà)段出現(xiàn)O次或多次,(起筆連接件)和(收筆連接件)表示起筆連接件和收筆連接件出現(xiàn)0次或1次。全文摘要本發(fā)明提供了一種基于筆畫(huà)分段建模的手寫(xiě)漢字隸書(shū)美化方法,包括如下步驟(1)對(duì)用戶(hù)手寫(xiě)輸入點(diǎn)序列進(jìn)行插值處理,使得用戶(hù)手寫(xiě)輸入的漢字呈現(xiàn)為筆畫(huà)點(diǎn)連續(xù)的漢字;(2)提取筆畫(huà)的拐點(diǎn)信息,并根據(jù)拐點(diǎn)信息把筆畫(huà)分段;(3)根據(jù)模型庫(kù)中的筆畫(huà)段和連接件模型對(duì)漢字筆畫(huà)進(jìn)行渲染。文檔編號(hào)G06K9/68GK101697234SQ20091019267公開(kāi)日2010年4月21日申請(qǐng)日期2009年9月25日優(yōu)先權(quán)日2009年9月25日發(fā)明者夏偉平,溫智寧,金連文申請(qǐng)人:華南理工大學(xué);