本發(fā)明涉及一種文字生成方法,尤其涉及一種基于智能推導(dǎo)的方塊苗文生成方法。
背景技術(shù):
當(dāng)前操作系統(tǒng)處理表意文字時(shí),通常是“逐字”進(jìn)行編碼和字符設(shè)計(jì),字符數(shù)據(jù)存儲(chǔ)量巨大,編碼字符集亦難以瘦身。方塊苗文是武陵山片區(qū)民間苗族文化的主要載體,是一種具有固定結(jié)構(gòu)特性的表意文字,基本上都是合體字。因其信息處理研究起步很晚,unicode及其它字符集標(biāo)準(zhǔn)尚未為其分配碼位?,F(xiàn)有技術(shù)中,有一種基于構(gòu)件組合運(yùn)算表達(dá)式的方塊苗文動(dòng)態(tài)生成方法。該方法通過借助opentype字體技術(shù),構(gòu)造方塊苗文合體字的字模,規(guī)劃字體布局表,編寫組合替換的映射腳本,就能在不占用unicode編碼區(qū)間的情況下生成不同結(jié)構(gòu)的苗文字符。然而,這種方法必須以方塊苗文合體字的字符數(shù)據(jù)為基礎(chǔ),需要對(duì)每個(gè)方塊苗文制作字模。無字模對(duì)應(yīng)的方塊苗文將無法顯示。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種基于智能推導(dǎo)的方塊苗文生成方法,解決了字符數(shù)據(jù)存儲(chǔ)量巨大,編碼字符集難以瘦身的問題。
本發(fā)明是這樣實(shí)現(xiàn)的,種基于智能推導(dǎo)的方塊苗文生成方法包括以下步驟:
a:建立構(gòu)件包圍盒并對(duì)其進(jìn)行歸一化處理;
b:確定包圍盒拓?fù)渥儞Q系數(shù);
c:對(duì)構(gòu)件包圍盒進(jìn)行變換操作;
d:建立對(duì)應(yīng)推導(dǎo)過程的編碼樹;
e:建立智能推導(dǎo)模型;
f:根據(jù)智能推導(dǎo)算法生成方塊苗文。
本發(fā)明的進(jìn)一步技術(shù)方案是:所述步驟a為:給定一個(gè)苗文字符網(wǎng)格,其寬和高分別為w和h;以網(wǎng)格左上角為原點(diǎn),建立一個(gè)x軸向右、y軸向下的直角坐標(biāo)系;在此坐標(biāo)系中,構(gòu)件包圍盒是由構(gòu)件字符圖像的左上頂點(diǎn)坐標(biāo)(x,y)以及寬(w)和高(h)共同決定的一個(gè)最小外接矩形,可表示為一個(gè)四元組b:b=(x,y,w,h)。其中,x∈(0,w),y∈(0,h),w∈(0,w-x),h∈(0,h-y);并將構(gòu)件包圍盒歸一化處理為:
本發(fā)明的進(jìn)一步技術(shù)方案是:所述步驟b為:給定包圍盒b=(x,y,w,h)和b'=(x',y',w',h'),將b變換為b’的拓?fù)渥儞Q系數(shù)用式(1)計(jì)算:
本發(fā)明的進(jìn)一步技術(shù)方案是:所述步驟c中,計(jì)算目標(biāo)構(gòu)件在苗文中所處的位置和大小,涉及到居中、平鋪和縱橫比調(diào)整變換操作;
居中
調(diào)整后包圍盒的寬和高不變,僅左上頂點(diǎn)坐標(biāo)發(fā)生變化。給定包圍盒b1=(x1,y1,w1,h1)和b2=(x2,y2,w2,h2),將b1沿x軸方向、y軸方向、同時(shí)沿x軸和y軸方向居中到b2中,三種情況下得到新包圍盒b’1=(x’,y’,w1,h1)中的x’和y’分別用式(2)、(3)、(4)計(jì)算:
平鋪
將上述包圍盒b1沿x軸方向、y軸方向,同時(shí)沿x軸和y軸方向平鋪到包圍盒b2中,分別得到新包圍盒b'=(x2,y1,w2,h1)、b'=(x1,y2,w1,h2)和b'=(x2,y2,w2,h2)。
縱橫比調(diào)整
設(shè)原構(gòu)件包圍盒為b=(x,y,w,h),按縱橫比為r進(jìn)行調(diào)整后得到的包圍盒為b’;那么,對(duì)于左右型構(gòu)件,保持高度不變,按式(5)進(jìn)行調(diào)整;對(duì)于上下型構(gòu)件,保持寬度不變,按式(6)進(jìn)行調(diào)整;對(duì)于外包構(gòu)件或內(nèi)含構(gòu)件,高度和寬度都變化,如果h/w≤r,則按式(5)進(jìn)行調(diào)整,否則,按式(6)進(jìn)行調(diào)整。
b’=(x,y,h/r,h)(5)
b’=(x,y,w,w.r)(6)
本發(fā)明的進(jìn)一步技術(shù)方案是:所述步驟d為:利用二叉樹的遞歸性,把樹中各結(jié)點(diǎn)數(shù)據(jù)的求解分解到簡(jiǎn)單的子樹中求解,建立對(duì)應(yīng)推導(dǎo)過程的編碼樹;編碼樹是推導(dǎo)樹的符號(hào)化描述;編碼樹中,將左右型、上下型、內(nèi)外型,以及側(cè)圍型的左上包、左下包和右上包這7種苗文結(jié)構(gòu),分別用字母“z”、“s”、“n”、“a”、“b”和“c”表示;將構(gòu)件用其標(biāo)準(zhǔn)字符的unicode編碼表示;2構(gòu)件型苗文的編碼樹為1級(jí)結(jié)構(gòu),分2層;3構(gòu)件型苗文的編碼樹為2級(jí)結(jié)構(gòu),分3層。
本發(fā)明的進(jìn)一步技術(shù)方案是:所述步驟e為按3個(gè)層次建立苗文智能推導(dǎo)模型;頂層為完成編碼樹分解工作的子模塊;中間層為針對(duì)不同結(jié)構(gòu)苗文進(jìn)行結(jié)構(gòu)推導(dǎo)的子模塊,用于完成編碼樹中各結(jié)點(diǎn)拓?fù)渥儞Q系數(shù)的求解工作;底層為構(gòu)件縱橫比調(diào)整的子模塊;由于可以將左右結(jié)構(gòu)和上下結(jié)構(gòu)歸為縱橫結(jié)構(gòu)一類,將內(nèi)外結(jié)構(gòu)和3種側(cè)圍結(jié)構(gòu)歸為包含結(jié)構(gòu)一類,故中間層只針對(duì)縱橫結(jié)構(gòu)和包含結(jié)構(gòu)設(shè)計(jì)兩個(gè)結(jié)構(gòu)推導(dǎo)子模塊。
本發(fā)明的進(jìn)一步技術(shù)方案是:所述步驟f包括以下算法:
頂層子模塊的算法:
1)根據(jù)苗文所含構(gòu)件的unicode編碼序列及苗文結(jié)構(gòu)類型,建立相應(yīng)的苗文生成編碼樹;
2)對(duì)編碼樹進(jìn)行深度優(yōu)先的先根遍歷,得到苗文的生成編碼序列;
3)分析生成編碼序列,按照流程,調(diào)用相應(yīng)的結(jié)構(gòu)推導(dǎo)子模塊,推導(dǎo)出苗文所包含全部構(gòu)件的變換參數(shù);
4)根據(jù)獲得的構(gòu)件變換參數(shù),將原始構(gòu)件變換成苗文中的目標(biāo)構(gòu)件。縱橫結(jié)構(gòu)推導(dǎo)子模塊的算法:
1)根據(jù)各構(gòu)件的標(biāo)準(zhǔn)包圍盒,確定其在整個(gè)苗文結(jié)構(gòu)中的比重,并根據(jù)其在苗文結(jié)構(gòu)中出現(xiàn)的次序,確定其最大可能包圍盒;
2)對(duì)于左右結(jié)構(gòu),按式(2)將各個(gè)構(gòu)件沿x軸方向居中到苗文結(jié)構(gòu)的最大包圍盒中;對(duì)于上下結(jié)構(gòu),按式(3)將各個(gè)構(gòu)件沿y軸方向居中到苗文的最大包圍盒中;
3)調(diào)用縱橫比調(diào)整子模塊調(diào)整各構(gòu)件的縱橫比,得到各構(gòu)件在苗文中的包圍盒;
4)利用式(1)計(jì)算各構(gòu)件的變換系數(shù)。
包含結(jié)構(gòu)推導(dǎo)子模塊的推導(dǎo)算法:
1)取外包構(gòu)件的最大包圍盒作為其在苗文中的實(shí)際包圍盒;
2)調(diào)用縱橫比調(diào)整子模塊,將內(nèi)含構(gòu)件的標(biāo)準(zhǔn)包圍盒調(diào)整為其在苗文中的最大包圍盒的大小;
3)將調(diào)整后內(nèi)含構(gòu)件的包圍盒同時(shí)沿x軸和y軸方向平鋪到外包構(gòu)件的最大包圍盒中,得到其在苗文中的實(shí)際包圍盒;
4)利用式(1)計(jì)算出各構(gòu)件的變換系數(shù)。
縱橫比調(diào)整子模塊的算法:
1)對(duì)縱橫結(jié)構(gòu)的構(gòu)件,檢查其縱橫比值是否位于最小值和最大值之間。若是,則保持當(dāng)前縱橫比不變;否則,按式(5)將左右型構(gòu)件的調(diào)整縱橫比為平均值,按式(6)將上下型構(gòu)件的縱橫比調(diào)整為平均值;
2)對(duì)包含結(jié)構(gòu)的構(gòu)件,將其縱橫比與平均值進(jìn)行比較。若等于,則保持當(dāng)前縱橫比不變;若大于,則按式(6)將縱橫比調(diào)整到平均值;若小于,則按式(5)將縱橫比調(diào)整到平均值。
本發(fā)明的有益效果是:基于智能推導(dǎo)求得的目標(biāo)構(gòu)件字形數(shù)據(jù)所生成的方塊苗文字形整齊規(guī)范,且不占用編碼空間,能夠滿足實(shí)用性要求;該方法有3個(gè)特點(diǎn):一是,基于構(gòu)件變換來生成方塊苗文的思想是該模型的核心;二是,利用二叉樹的遞歸性來實(shí)現(xiàn)構(gòu)件變換參數(shù)的求解,不但保證了方塊苗文生成方法的簡(jiǎn)單有效性,而且體現(xiàn)了字符推導(dǎo)的智能性;三是,該模型中,方塊苗文生成的智能推導(dǎo)所需的各類數(shù)據(jù)存放在獨(dú)立的信息庫中,使得方塊苗文的語言特征得以從文字處理軟件的程序邏輯中分離,便于日后進(jìn)行軟件功能的調(diào)整優(yōu)化和擴(kuò)展。
附圖說明
圖1是本發(fā)明提供的一種方塊苗文結(jié)構(gòu)示意圖;
圖2是本發(fā)明提供的一種識(shí)別方塊苗文的dfa狀態(tài)圖;
圖3是本發(fā)明提供的一種構(gòu)件包圍盒示意圖;
圖4是本發(fā)明提供的一種智能推導(dǎo)系統(tǒng)的結(jié)構(gòu)示意圖;
圖5是本發(fā)明提供的一種基于智能推導(dǎo)的方塊苗文生成方法的推導(dǎo)流程圖;
圖6是本發(fā)明提供的一種方塊苗文字例c6的推導(dǎo)示意圖;
圖7是本發(fā)明提供的一種方塊苗文字例c6的推導(dǎo)結(jié)果。
具體實(shí)施方式
實(shí)施例一:
圖1-圖7為一種基于智能推導(dǎo)的方塊苗文生成方法的示意圖。方塊苗文其結(jié)構(gòu)大致分為圖1所示的4類:左右型、上下型、側(cè)圍型和內(nèi)外型。其中,側(cè)圍型又可分為左上包、左下包和右上包3種。根據(jù)方塊苗文的造字原理和構(gòu)字方式,當(dāng)一個(gè)苗文由3個(gè)及3個(gè)以上部分構(gòu)成時(shí),其中的某兩個(gè)或3個(gè)部分通常可組成一個(gè)簡(jiǎn)單漢字。此時(shí),宜將此簡(jiǎn)單漢字視為一個(gè)構(gòu)件。對(duì)已整理出的1129個(gè)方塊苗文進(jìn)行統(tǒng)計(jì)的結(jié)果表明,大部分苗文均可視為2構(gòu)件型,僅個(gè)別左右型和上下型的苗文需當(dāng)作3構(gòu)件型處理。
方塊苗文的構(gòu)件可歸為16類:左構(gòu)件(cl)、右構(gòu)件(cr)、上構(gòu)件(cu)、下構(gòu)件(cd)、左上外包構(gòu)件(colu)、右下內(nèi)含構(gòu)件(cird)、左下外包構(gòu)件(cold)、右上內(nèi)含構(gòu)件(ciru)、右上外包構(gòu)件(coru)、左下內(nèi)含構(gòu)件(cild)、全外包構(gòu)件(coa)、全內(nèi)含構(gòu)件(cia)、右左構(gòu)件(crl)、右右構(gòu)件(crr)、下左構(gòu)件(cdl)和下右構(gòu)件(cdr)。如果用sg代表方塊苗文,ci代表構(gòu)件字符(i=start,end,first,middle,final),則方塊苗文的構(gòu)成可用集合形式表示為sg={cstartcend}或sg={cfirstcmiddlecfinal}。其中,cstart={cl,cu,colu,cold,coru,coa},cend={cr,cd,cird,ciru,cild,cia},cfirst={cl,cu},cmiddle={crl,cdl},cfinal={crr,cdr}。
一個(gè)方塊苗文由2-3個(gè)構(gòu)件構(gòu)成?;?6類構(gòu)件,可構(gòu)造出識(shí)別方塊苗文的確定有窮自動(dòng)機(jī)dfa(deterministicfiniteautomata)。該dfa用五元組表示為m=(k,a,f,s,z),其中:
1)k是狀態(tài)有窮集,k={0,1,2,3,4,5,6,7,8,9};
2)a是輸入符號(hào)有窮集,a={cl,cu,colu,cold,coru,coa,cr,cd,cird,ciru,cild,cia,crl,cdl,crr,cdr};
3)f是k×a→k上的映射集,f={f(0,cl)=1,f(0,cu)=2,f(0,colu)=3,f(0,cold)=4,f(0,coru)=5,f(0,coa)=6,f(1,crl)=7,f(1,cr)=9,f(2,cdl)=8,f(2,cu)=9,f(3,cird)=9,f(4,ciru)=9,f(5,cild)=9,f(6,cia)=9,f(7,crr)=9,f(8,cdr)=9};
4)s∈k,是初態(tài),取值唯一,s=0;
5)
圖2給出了該dfa的狀態(tài)圖表示。從圖2中的初態(tài)0出發(fā),到達(dá)終態(tài)9(用雙圓圈表示)的任意路徑上的構(gòu)件字符序列合成一個(gè)方塊苗文。
本文將作為方塊苗文構(gòu)件使用的漢字、漢字部首及純粹符號(hào)的字符稱為原始構(gòu)件,將方塊苗文顯示時(shí)的構(gòu)成部分稱為目標(biāo)構(gòu)件。目標(biāo)構(gòu)件由原始構(gòu)件經(jīng)拓?fù)渥儞Q得到。當(dāng)一個(gè)苗文所包含的全部目標(biāo)構(gòu)件均已由原始構(gòu)件變換得到時(shí),這個(gè)方塊苗文就可直接由這些目標(biāo)構(gòu)件組合得到。
包圍盒是一種能夠正確反映復(fù)雜幾何對(duì)象的位置和大小特性的簡(jiǎn)單且?guī)缀螆D形。為了簡(jiǎn)化構(gòu)件變換操作,本文對(duì)苗文構(gòu)件字符圖像的處理轉(zhuǎn)化為對(duì)其包圍盒的處理。為此,給出苗文構(gòu)件包圍盒的定義如下:
定義1給定一個(gè)方塊苗文字符網(wǎng)格,其寬和高分別為w和h。以網(wǎng)格左上角為原點(diǎn),建立一個(gè)x軸向右、y軸向下的直角坐標(biāo)系。在此坐標(biāo)系中,構(gòu)件包圍盒是由構(gòu)件字符圖像的左上頂點(diǎn)坐標(biāo)(x,y)以及寬(w)和高(h)共同決定的一個(gè)最小外接矩形(如圖2所示),可表示為一個(gè)四元組b:b=(x,y,w,h)。其中,x∈(0,w),y∈(0,h),w∈(0,w-x),h∈(0,h-y);為了便于分析,根據(jù)拓?fù)洳蛔冃栽?,將?gòu)件包圍盒歸一化處理為:
方塊苗文的生成過程可轉(zhuǎn)換為構(gòu)件包圍盒的計(jì)算過程。該過程就是通過計(jì)算確定拓?fù)渥儞Q系數(shù),將原始構(gòu)件的標(biāo)準(zhǔn)包圍盒逐步調(diào)整為目標(biāo)構(gòu)件包圍盒的過程。
給定包圍盒b=(x,y,w,h)和b'=(x',y',w',h'),將b變換為b’的拓?fù)渥儞Q系數(shù)用式(1)計(jì)算:
因原始構(gòu)件的標(biāo)準(zhǔn)包圍盒信息可以直接從相應(yīng)漢字字庫中獲取,故拓?fù)渥儞Q系數(shù)的確定問題就轉(zhuǎn)化成目標(biāo)構(gòu)件包圍盒的求解問題。
求解目標(biāo)構(gòu)件包圍盒就是計(jì)算目標(biāo)構(gòu)件在苗文中所處的位置和大小,涉及到居中、平鋪和縱橫比調(diào)整等變換操作。
1)居中
居中系指沿某個(gè)坐標(biāo)軸方向?qū)⒁粋€(gè)包圍盒調(diào)整到另一個(gè)包圍盒的中間位置。調(diào)整后包圍盒的寬和高不變,僅左上頂點(diǎn)坐標(biāo)發(fā)生變化。給定包圍盒b1=(x1,y1,w1,h1)和b2=(x2,y2,w2,h2),將b1沿x軸方向、y軸方向、同時(shí)沿x軸和y軸方向居中到b2中,三種情況下得到新包圍盒b’1=(x’,y’,w1,h1)中的x’和y’分別用式(2)、(3)、(4)計(jì)算:
2)平鋪
平鋪系指將一個(gè)包圍盒沿某一坐標(biāo)軸方向擴(kuò)展或壓縮到另外一個(gè)包圍盒中。將上述包圍盒b1沿x軸方向、y軸方向,同時(shí)沿x軸和y軸方向平鋪到包圍盒b2中,分別得到新包圍盒b'=(x2,y1,w2,h1)、b'=(x1,y2,w1,h2)和b'=(x2,y2,w2,h2)。
3)縱橫比調(diào)整
縱橫比是反映構(gòu)件在苗文中形狀的重要參數(shù)。不同類型的構(gòu)件進(jìn)行縱橫比調(diào)整的方法不同。設(shè)原構(gòu)件包圍盒為b=(x,y,w,h),按縱橫比為r進(jìn)行調(diào)整后得到的包圍盒為b’。那么,對(duì)于左右型構(gòu)件,保持高度不變,按式(5)進(jìn)行調(diào)整;對(duì)于上下型構(gòu)件,保持寬度不變,按式(6)進(jìn)行調(diào)整;對(duì)于外包構(gòu)件或內(nèi)含構(gòu)件,高度和寬度都變化,如果h/w≤r,則按式(5)進(jìn)行調(diào)整,否則,按式(6)進(jìn)行調(diào)整。
b’=(x,y,h/r,h)(5)
b’=(x,y,w,w.r)(6)
求解目標(biāo)構(gòu)件包圍盒的關(guān)鍵是獲取拓?fù)渥儞Q系數(shù)和包圍盒的位置及大小數(shù)據(jù)。本文采用“結(jié)構(gòu)+構(gòu)件”形式的二叉樹表示苗文生成的推導(dǎo)過程。推導(dǎo)樹的非葉結(jié)點(diǎn)代表苗文結(jié)構(gòu),葉結(jié)點(diǎn)代表具體構(gòu)件。利用二叉樹的遞歸性,即可把樹中各結(jié)點(diǎn)數(shù)據(jù)的求解分解到簡(jiǎn)單的子樹中去求解。編碼樹是推導(dǎo)樹的符號(hào)化描述。編碼樹中,將左右型、上下型、內(nèi)外型,以及側(cè)圍型的左上包、左下包和右上包這7種苗文結(jié)構(gòu),分別用字母“z”、“s”、“n”、“a”、“b”和“c”表示;將構(gòu)件用其標(biāo)準(zhǔn)字符的unicode編碼表示。2構(gòu)件型苗文的編碼樹為1級(jí)結(jié)構(gòu),分2層。3構(gòu)件型苗文的編碼樹為2級(jí)結(jié)構(gòu),分3層。圖1中字例c6和c8的編碼分別為“s5408z76ee76ee”和“b51a05b50”。
苗文智能推導(dǎo)模型可按圖4所示的3個(gè)層次進(jìn)行結(jié)構(gòu)設(shè)計(jì)。頂層為完成編碼樹分解工作的子模塊;中間層為針對(duì)不同結(jié)構(gòu)苗文進(jìn)行結(jié)構(gòu)推導(dǎo)的子模塊,用于完成編碼樹中各結(jié)點(diǎn)拓?fù)渥儞Q系數(shù)的求解工作。底層為構(gòu)件縱橫比調(diào)整的子模塊??紤]到推導(dǎo)過程的相似性,可將左右結(jié)構(gòu)和上下結(jié)構(gòu)歸為縱橫結(jié)構(gòu)一類,將內(nèi)外結(jié)構(gòu)和3種側(cè)圍結(jié)構(gòu)歸為包含結(jié)構(gòu)一類。因此,中間層只需針對(duì)縱橫結(jié)構(gòu)和包含結(jié)構(gòu)設(shè)計(jì)兩個(gè)結(jié)構(gòu)推導(dǎo)子模塊。
頂層子模塊首先按深度優(yōu)先后序遍歷整棵編碼樹,將編碼樹依次分解為多個(gè)子樹。每分解出一棵子樹,就將該子樹交給相應(yīng)的結(jié)構(gòu)推導(dǎo)子模塊求解,并用求解結(jié)果代替這棵子樹。如此循環(huán),直到所有子樹求解完畢。
頂層子模塊的算法設(shè)計(jì)如下:
1)根據(jù)苗文所含構(gòu)件的unicode編碼序列及苗文結(jié)構(gòu)類型,建立相應(yīng)的苗文生成編碼樹。
2)對(duì)編碼樹進(jìn)行深度優(yōu)先的先根遍歷,得到苗文的生成編碼序列。
3)分析生成編碼序列,按照?qǐng)D5所示流程,調(diào)用相應(yīng)的結(jié)構(gòu)推導(dǎo)子模塊,推導(dǎo)出苗文所包含全部構(gòu)件的變換參數(shù)。
4)根據(jù)獲得的構(gòu)件變換參數(shù),將原始構(gòu)件變換成苗文中的目標(biāo)構(gòu)件。
縱橫結(jié)構(gòu)苗文的構(gòu)件,在苗文中顯現(xiàn)的形狀不僅與其在苗文中出現(xiàn)的次序有關(guān),也與其本身的大小有關(guān)。構(gòu)件所占的比重同原始構(gòu)件大小成正比。2構(gòu)件型苗文構(gòu)件的包圍盒,直接取原始構(gòu)件的標(biāo)準(zhǔn)包圍盒。3構(gòu)件型苗文構(gòu)件的包圍盒,是對(duì)生成樹進(jìn)行深度優(yōu)先遍歷得到的結(jié)果。各個(gè)構(gòu)件的包圍盒相關(guān)信息均保存在構(gòu)件位置信息庫中。該庫具體包含有構(gòu)件名、構(gòu)件類型、結(jié)構(gòu)名、位置數(shù)、各位置的最大包圍盒列表等數(shù)據(jù)。求解時(shí),直接從該庫中取出相關(guān)數(shù)據(jù)作用于各個(gè)構(gòu)件上,即可獲得相應(yīng)構(gòu)件的最大包圍盒。
縱橫結(jié)構(gòu)推導(dǎo)子模塊的算法設(shè)計(jì)如下:
1)根據(jù)各構(gòu)件的標(biāo)準(zhǔn)包圍盒,確定其在整個(gè)苗文結(jié)構(gòu)中的比重,并根據(jù)其在苗文結(jié)構(gòu)中出現(xiàn)的次序,確定其最大可能包圍盒。
2)對(duì)于左右結(jié)構(gòu),按式(2)將各個(gè)構(gòu)件沿x軸方向居中到苗文結(jié)構(gòu)的最大包圍盒中;對(duì)于上下結(jié)構(gòu),按式(3)將各個(gè)構(gòu)件沿y軸方向居中到苗文的最大包圍盒中。
3)調(diào)用縱橫比調(diào)整子模塊調(diào)整各構(gòu)件的縱橫比,得到各構(gòu)件在苗文中的包圍盒。
4)利用式(1)計(jì)算各構(gòu)件的變換系數(shù)。
包含結(jié)構(gòu)苗文的共同特征是,由外包構(gòu)件充當(dāng)框架,內(nèi)含構(gòu)件嵌入到這個(gè)框架中,各構(gòu)件的最大可能包圍盒由外包構(gòu)件決定。各個(gè)構(gòu)件的包圍盒相關(guān)信息亦保存在構(gòu)件位置信息庫中。求解時(shí),直接從該庫中取出相關(guān)數(shù)據(jù)作用于各個(gè)構(gòu)件上,即可獲得相應(yīng)構(gòu)件的最大包圍盒。
包含結(jié)構(gòu)推導(dǎo)子模塊的推導(dǎo)算法設(shè)計(jì)如下:
1)取外包構(gòu)件的最大包圍盒作為其在苗文中的實(shí)際包圍盒。
2)調(diào)用縱橫比調(diào)整子模塊,將內(nèi)含構(gòu)件的標(biāo)準(zhǔn)包圍盒調(diào)整為其在苗文中的最大包圍盒的大小。
3)將調(diào)整后內(nèi)含構(gòu)件包圍盒同時(shí)沿x軸和y軸方向平鋪到外包構(gòu)件的最大包圍盒中,得到其在苗文中的實(shí)際包圍盒。
4)利用式(1)計(jì)算出各構(gòu)件的變換系數(shù)。
苗文智能推導(dǎo)時(shí),各結(jié)構(gòu)推導(dǎo)子模塊需調(diào)用縱橫比調(diào)整子模塊,根據(jù)從構(gòu)件縱橫比信息庫中讀取的相關(guān)數(shù)據(jù),按不同的調(diào)整方式對(duì)構(gòu)件進(jìn)行調(diào)整。構(gòu)件縱橫比信息庫包含了構(gòu)件名、構(gòu)件類型、結(jié)構(gòu)名、構(gòu)件出現(xiàn)次數(shù),以及縱橫比的最小值、最大值、平均值、方差等數(shù)據(jù)。
縱橫比調(diào)整子模塊的算法設(shè)計(jì)如下:
1)對(duì)縱橫結(jié)構(gòu)的構(gòu)件,檢查其縱橫比值是否位于最小值和最大值之間。若是,則保持當(dāng)前縱橫比不變;否則,按式(5)將左右型構(gòu)件的調(diào)整縱橫比為平均值,按式(6)將上下型構(gòu)件的縱橫比調(diào)整為平均值。
2)對(duì)包含結(jié)構(gòu)的構(gòu)件,將其縱橫比與平均值進(jìn)行比較。若等于,則保持當(dāng)前縱橫比不變;若大于,則按式(6)將縱橫比調(diào)整到平均值;若小于,則按式(5)將縱橫比調(diào)整到平均值。
基于上述算法,苗文的生成求解過程可分解為從編碼樹葉結(jié)點(diǎn)開始的一系列一級(jí)結(jié)構(gòu)的字符生成求解。下面以苗文c6為例來說明苗文生成的智能推導(dǎo)求解過程,據(jù)圖6,苗文c6的構(gòu)件變換系數(shù)求解步驟描述如下:
1)確定結(jié)構(gòu)級(jí)數(shù)。c6有2級(jí)結(jié)構(gòu):頂級(jí)結(jié)構(gòu)為“s”,末級(jí)結(jié)構(gòu)為“z”。
2)將末級(jí)結(jié)構(gòu)分離出來,當(dāng)作一個(gè)偽苗文求解,如圖7(a)所示。此時(shí)的生成編碼序列為“z76ee76ee”。利用縱橫結(jié)構(gòu)推導(dǎo)子模塊,求出兩個(gè)子構(gòu)件“76ee”和“76ee”在偽苗文中的包圍盒。
3)將偽苗文(表示為“#1”)視為一個(gè)構(gòu)件,并入上一級(jí)結(jié)構(gòu)中,如圖7(b)所示。此時(shí),的生成編碼序列為“s5408#1”。利用縱橫結(jié)構(gòu)推導(dǎo)子模塊,求出兩個(gè)構(gòu)件“5408”和“#1”作為c6中目標(biāo)構(gòu)件顯現(xiàn)的包圍盒。
4)根據(jù)式(1),計(jì)算苗文各構(gòu)件的拓?fù)渥儞Q系數(shù)。
5)將各構(gòu)件按上述拓?fù)渥儞Q系數(shù)進(jìn)行變換得到相應(yīng)的目標(biāo)構(gòu)件,將這些目標(biāo)組合到一起,得到苗文字符c6。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。