999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種改進的中文字符矢量化算法

2021-10-15 10:41:54李新杰江子傲王存睿
大連民族大學學報 2021年3期
關鍵詞:關鍵點方法

李新杰,江子傲,王存睿

(大連民族大學 計算機科學與工程學院,遼寧 大連 116605)

字體作為傳遞信息的關鍵載體,在計算機顯示中也是必不可少的,字體技術從最開始的點陣字庫、矢量字庫發展到了曲線字庫[1-2]。字體矢量化需要經歷樣字掃描得到簡單的矢量輪廓,然后人工去判斷向量輪廓上的每個向量點是曲線還是直線上的點,還需要判斷連續的向量段是用一條直線還是用曲線逼近。GBK字庫有兩萬余字,這些字都由人工進行矢量化,是一個工作量十分浩大的系統工程[3]。這種人工修改得到曲線字,生產效率較低,因此研究自動將字體圖像轉為曲線字形的矢量化方法具有十分重要的現實意義。

1 圖像矢量化算法研究現狀

曲線字形因為其錨點少,占用空間小,在計算機中加載速度快,例如,Plass和Stone在1983年使用分段參數三次多項式來表示位圖點序列[4];Agarwal等人在2005年介紹了一種近似線性時間復雜度下的曲線簡化算法;Kolesnikov和Franty在2007年提出了一種求閉合曲線多邊形逼近的算法[5]。經典的位圖輪廓矢量化算法Potrace[6],它利用多邊形逼近的方法,可以高效的完成位圖的矢量化工作。但是,只有在位圖的分辨率較高的情況下,選取的錨點較為準確,當位圖分辨率不高時,矢量化過程中選取的錨點就會出現不準確和冗余的情況。

在進行字體圖像矢量化時得到的字形輪廓中含有大量的冗余點,沒有對字形輪廓中的點集做篩選。對于算法生成的字形輪廓無法定量的分析其質量地優劣,只能人工大概地去判斷關鍵點選的是否準確、形狀是否與原稿吻合。

為了全面地檢測和度量本文所提到的矢量化方法的效果,本文從輪廓尖銳度[7]、關鍵點冗余率、錨點準確度[8]以及形狀吻合度[9]等四個方面提出了相關的度量指標,并分別建立了其對應的檢測方法。

對于輪廓平滑的正文字體圖像,本文在基于經典的Potrace位圖矢量化方法的基礎上進行改進,增加了消除冗余點的過程,形成了一套針對正文字體的矢量化算法。

2 改進的Potrace字體圖像矢量化方法

對于Potrace方法的優化和改進主要集中在對關鍵點冗余率的降低上,對于選出的最優多邊形,對其進行去除冗余點的操作。詳細算法流程如圖1,算法步驟主要分為如下六步。

Step1: 根據夾角判別法篩選出“可疑”冗余點,得到“可疑”點集;

Step2: 計算每個“可疑”冗余點的“刪除代價”(DC)值,剔除小于閾值TDC的點,保留“刪除代價”較大的點;

Step3: 檢測冗余率是否達標,是則繼續下一步,否則調整夾角閾值和刪除代價閾值,然后返回Step 1;

Step4: 根據弧弦距判別法判斷矢量段的擬合類型,決定保留多邊形的直線段還是用貝塞爾曲線插值擬合;

Step5: Bezier曲線插值擬合關鍵點;

Step6: 合并優化Bezier曲線段。

圖1 改進部分的算法流程圖

2.1 初步篩選“可疑”冗余點集

本文提出了夾角判別法來初步篩選冗余點,基本原理為:首先取環上鄰近三點作為一個單元,分析夾角,若夾角小于閾值,則作為規范關鍵點保留,繼續遍歷;若夾角大于閾值,則加入到“可疑”冗余點列表。具體的定義和計算步驟如下。

以Potrace算法所得到的多邊形頂點集P為初始集合,定義集合D為它的“可疑”點集,遍歷初始點集,設Pi為點集中的一點,其相鄰點為Pi-1和Pi+1,則由Pi,Pi+1和Pi+1三點可構成一個三角形,由余弦定理可求出以Pi為角心的角度值 α,其中

(1)

某筆畫局部輪廓點集如圖2。這里取夾角角度閾值 Tang=172,則夾角角度大于172的點將被加入到“可疑”冗余點集;例如B點夾角∠ABC=121,所以 B 點為必然關鍵點,排除冗余的可能;由于C點夾角∠BCD=175,大于Tang,所以 C 點為可疑冗余點;同理,D、E 和 I 點的角度均小于閾值,為必然關鍵點,而 F、G、H 和 K 點的角度大于閾值172,故需要加入到“可疑”點集中。

圖2 某筆畫局部輪廓點集

2.2 確定冗余點集

在得到可疑的冗余點集 D 后,是否能將其從初始點集 P 中刪除,還要取決于其刪除后對整個輪廓的影響,這里本文定義了一個變量“刪除代價”(Delete Cost, DC)來決定該可疑點是否真正的冗余且可被刪除。

DC 值用于測量刪除每個輪廓點的成本。在本方法中做出規定:移除后對擬合結果影響最小的點將被逐個刪除。首先對多邊形點集中的所有點進行遍歷,然后遇到“可疑”冗余點后,計算其刪除代價 DC 值,若大于設定閾值保留該點不予刪除;小于閾值則確定為冗余點,并將其刪除。

Dk=max{ym-xm│m∈(i,j)。

(2)

即Pk的“刪除代價”定義為影響值Vm的最大值,其中Pm是它的兩個相鄰顯著點Pi和Pj之間的輪廓點。最后,調整閾值TDC,如果小于TDC,則認為Pk是冗余的關鍵點,應該去掉,否則保留。

圖3 刪除代價原理圖

2.3 判斷擬合類型

至此已經得到了冗余率檢測能夠達標的關鍵點集,然而由于Potrace方法在擬合階段將所有多邊形的邊線段都用貝塞爾曲線進行擬合,曲線片段過多會導致控制點過多,這里本文加入了弧弦距的方法[10]能夠保留一定的直線片段,從而降低貝塞爾曲線的控制點的數量。

所謂弧弦距,就是矢量段上的點到連接矢量段兩端點所成的弦的最大距離;所謂基準弧弦距原則,就是預先給定一個弧弦距值作為基準,來判斷某矢量段是用直線段還是用曲線段來替換;對多邊形上連續的矢量段,根據基準弧弦距原則進行判斷,確定矢量段的替換類型如圖4。 由圖4可以看出連接矢量段 AB 的兩端點的弦為線段 AB,矢量段AB上C點到線段AB的距離最大,記為d,則d就稱為矢量段 AB 的弧弦距。根據擬合精度的需要,設定一個數值 T 作為判斷矢量段 AB 應該用直線段還是曲線段代替的基準,如果d

圖4 弧弦距示意圖

應用于處理矢量字形輪廓如圖5。使用Potrace方法提取的關鍵點為 A、B、C、D、E、F、G、H 等,設定基準弧弦距 T 為0.8,根據基準弧弦距原則判定兩兩關鍵點間的矢量段的替換類型。矢量段AB的弧弦距為1.2,大于預先設定的基準T,則矢量段 AB 應該用曲線段替換,從而存儲矢量段 AB 的線段類型標志為“2”,并存儲A點坐標,同理存儲 BC、CD、DE;矢量段 EF 的弧弦距為0.5,小于基準 T,則應用直線段替換,從而存儲線段類型標志為“1”,并順次存儲 E 點和 F 點坐標;同理處理矢量字形輪廓上的其他矢量段。這樣將得到的待插值擬合的直線端點和曲線端點按字形輪廓數據的存儲格式保存,最終生成曲線字輪廓數據表示。

圖5 根據弧弦距判斷向量段擬合類型

2.4 實現輪廓擬合

字符輪廓線由直線和曲線組成[11],因此,如果在兩個相鄰的錨點之間的輪廓線是直線,則遍歷輪廓中的錨點以逐段擬合輪廓線時,不需要控制點和線性Bezier曲線即可擬合。如果在兩個相鄰的錨點之間存在曲線,則將出現兩種情況, 一種是下一個輪廓仍然是一條曲線(即兩條連續的平滑曲線),另一種是下一個輪廓是一條直線。為了簡化算法,可以在第二種情況下在曲線段的中間添加錨點,以在第一種情況下對其進行變換。因此,這里只需要將兩條連續的平滑輪廓曲線與兩條二次貝塞爾曲線擬合即可。

由于字體曲線的輪廓線是平滑的,因此在將長曲線輪廓用多段Bezier曲線擬合時,必須使每個Bezier曲線的連接平滑。可以看出,貝塞爾曲線的控制點和錨點之間的連接與貝塞爾曲線本身相切如圖6。假設控制點 c1、c2和兩段貝塞爾曲線連接處的錨點 pt共線,可以確定兩條Bezier曲線的交點是平滑的。因此,該思想可用于計算貝塞爾曲線的控制點。

圖6 角平分線法擬合輪廓

計算控制點的方法如圖7。取直線為平分線的垂線,令 c2暫為 p2在上的投影,且與等長,然后,對 c1和 c2縮放,通常實際控制點在原始投影點的0.2到0.6之間。最后,計算由縮放控制點和相應的錨點所繪制的貝塞爾曲線與原曲線所包圍的封閉空間的面積[12],并使用面積更小且更接近0的縮放點作為最終檢查點。從邏輯上講,該區域可能不接近0,因此將不接近0的曲線再次劃分,并重復先前的計算。鑒于上述方法,當控制點不在相鄰錨點的線段等分線的垂直線上時,有必要將曲線分割并添加錨點以達到擬合的目的。下面補充實現輪廓擬合的第二種方法,此方法類似于先前的方法,需要兩條連續的平滑曲線。

圖7 中點法擬合輪廓

2.5 貝塞爾曲線合并與優化

在上一節中已經得到了由多段貝塞爾曲線擬合的矢量字符輪廓線,雖然它己經很好地擬合了字符輪廓線,但其錨點和控制點數一般還是比較多,仍需要對其進行優化,即合并相鄰的貝塞爾曲線段。在此,不合并直線段和曲線段,而只合并滿足條件的連續曲線段和連續直線段。

這里的條件是由合并的貝塞爾曲線和原始輪廓曲線形成的封閉空間的面積接近于零。連續曲線合并的方法如圖8。合并相鄰的兩段曲線 b0b1和 b1b2,只需延長 b0a1和 b2a2,其相交于一點則為合成后貝塞爾曲線的控制點,否則不能合并。如果驗證了此新合并的貝塞爾曲線滿足條件,那么就以此段曲線為第一段曲線迭代上面操作,否則此處不能合并。

圖8 連續曲線合并原理圖

3 實驗結果與分析

本文抽取了幾種常用的商用字庫,然后對其圖像進行矢量化操作,由于本章節主要討論的是對正文字體圖像的矢量化,正文字體輪廓本身就是平滑的,而Potrace算法對于輪廓本身比較平滑的字體矢量化后輪廓依然可以保持原來的平滑程度,故這里不再對尖銳度這個指標進行檢測對比,接下來將就錨點冗余率、關鍵點的準確度和形狀吻合度等三項指標分別進行檢測,然后對Potrace方法及其改進后的方法進行對比實驗,并對結果進行分析。最后為了進一步說明本改進方法對于曲線字庫的重要性和優越性,還展示了一項關于字庫的重要檢測指標,即字庫的空間壓縮比。

3.1 關鍵點冗余率的對比

錨點即關鍵點如圖9。這一項指標是所有檢測指標中最為關鍵的一項,直接決定著矢量字體的質量,想要達到的預期實驗結果是用最少的點就能描繪字形,即錨點的冗余率越少,則認為該算法的錨點效果越好。本文從7個商用字庫中各選取了9 169個漢字作為實驗變量,按照筆畫由少到多的字形分別對其用包括手動錨點在內的三種方法進行錨點,部分實驗結果見表1。不同字庫的錨點平均冗余率如圖10。

圖9 輪廓關鍵點對比實驗圖

表1 輪廓錨點實驗部分數據結果

通過實驗數據發現,隨著檢測字體數量的增多,輪廓錨點冗余率逐漸趨于穩定,Potrace算法的冗余率大約在56%左右,而本文的算法則將冗余率降到10%左右。經過分析可知,在本文針對Potrace方法的改進中,根據夾角閾值選出的“可疑點”能夠篩選出大量的冗余點,10%的點冗余是由于刪除代價的閾值決定的,若該閾值設置得過大,則會導致有些關鍵點被“誤刪”,所以10%的冗余率是符合標準的。

圖10 不同字體錨點冗余率對比圖

3.2 錨點準確度的對比

這里同樣采用上述7×916 9個實驗字體,以設計師手動錨點生成的svg矢量圖讀取的控制點和關鍵點為參照點集,分別計算其Hausdorff距離[8],為了控制變量,這里統一選擇位圖像素為512×512,實驗結果見表2。不同字體輪廓點集平均偏差值對比圖如圖11。可以看出,同一分辨率下,輪廓復雜度越高的字體,算法改進前和改進后的Hausdorff距離都很大,即錨點的準確度都會降低,但本文去除冗余點后的方法的偏差值明顯要低于Potrace算法,說明本文對于Potrace算法的改進是有效且可行的。

表2 部分字體輪廓點集的Hausdorff距離

圖11 不同字體輪廓點集平均偏差值對比圖

3.3 形狀吻合度的對比

由于本文改進的算法降低了Potrace算法得到的多邊形的冗余率,但是在去除冗余點后字體輪廓的形狀是否發生了改變,也是需要檢測的一項指標,所以這里用是 dHashValue 值來檢測其形狀吻合度,dHashValue 越大則形變越大[9],由于Potrace方法對于擬合形狀已經很精準,那么這里衡量的一項標準在于改進后的結果的 dHashValue 值是否與Potrace方法接近,接近則說明本文方法可以在去除冗余點后還是能夠很精準的擬合字形的輪廓。部分字體的實驗數據見表3。不同字體輪廓的平均dHashValue值對比圖如圖12。雖然在字形輪廓較復雜時 dHashValue 較大,但是基本上可以看出改進后的方法和改進前的差值并不大,即對字形輪廓的擬合形狀還原度還是比較高的,圖12進一步反應了這一點,也進一步說明改進方法是有效且可行。

表3 兩種方法對于部分字形的 dHashValue

圖12 不同字體輪廓的平均dHashValue值對比圖

3.4 空間存儲壓縮比的對比

單個字形去除冗余點的空間抽稀效果還不明顯,真正能反應冗余點去除之后的效果還是要在整體字庫的層面上,因為只有整個曲線字庫的空間存儲量更小,加載速度才能更快,為了進一步證明改進算法的實際作用,這里為字庫再定義一個指標,稱為字庫的空間壓縮比。接下來對選取的七種典型字庫(每種字體包含9 169個常用漢字)進行矢量化實驗,并分別統計其TrueType字庫文件的空間大小[13],其中采用的原始字體位圖大小為512×512像素,每種字體的9 169張位圖所占空間大小均為1536 MB,對應兩種方法生成的TTF字庫格式文件大小統計結果如圖13。由統計結果可看出,本文改進后的方法對于曲線字庫文件的空間壓縮比是相當低的,即壓縮效果達到了預期效果,特別是對于“寫刻字”這類輪廓復雜的字體,壓縮效果尤其明顯。

4 結 語

本文提出了一種根據Potrace改進后的字體圖像矢量化方法,并且建立了字體曲線輪廓的度量指標,其中包括輪廓尖銳度、關鍵點冗余率、錨點準確度和形狀吻合度等指標。在使用本文提出的方法進行實驗發現得到的字形輪廓質量優于原Potrace算法,也論證了本文方法的有效性和可行性。在矢量化的過程中雖然在關鍵點和字形上能夠達到預期效果,但是針對算法本身來說,由于其對多邊形點集進行了多次遍歷,時間復雜度較高,降低字體矢量化算法的時間復雜度是一個需要解決的問題,同時根據字體設計的美學原理建立起一套完整的規范體系也是一個值得研究的方向。

猜你喜歡
關鍵點方法
聚焦金屬關鍵點
肉兔育肥抓好七個關鍵點
今日農業(2021年8期)2021-11-28 05:07:50
學習方法
豬人工授精應把握的技術關鍵點
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
醫聯體要把握三個關鍵點
中國衛生(2014年2期)2014-11-12 13:00:16
鎖定兩個關鍵點——我這樣教《送考》
語文知識(2014年7期)2014-02-28 22:00:26
主站蜘蛛池模板: 成年午夜精品久久精品| 久久五月天国产自| 五月婷婷综合网| 国产白浆一区二区三区视频在线| 国产午夜无码专区喷水| 日本色综合网| 欧美成人怡春院在线激情| 午夜啪啪网| 色噜噜综合网| 日本91在线| 久久精品视频一| 成人夜夜嗨| 人妻一本久道久久综合久久鬼色| 久久精品国产免费观看频道| 美女被操91视频| 毛片在线看网站| 一级毛片免费的| 亚洲第一视频网站| 91蝌蚪视频在线观看| 欧美性天天| 成人综合在线观看| 久久黄色影院| 免费啪啪网址| 亚洲欧美色中文字幕| 国产在线观看一区二区三区| 国产亚洲精品自在线| 91精品人妻互换| 人妻丰满熟妇av五码区| 久久永久精品免费视频| JIZZ亚洲国产| 色窝窝免费一区二区三区| 91色在线观看| 这里只有精品国产| 亚洲AV成人一区二区三区AV| 亚洲天堂在线视频| 福利国产微拍广场一区视频在线| 国产欧美另类| 色偷偷综合网| 久久夜色精品国产嚕嚕亚洲av| 午夜国产理论| 亚洲不卡无码av中文字幕| 91香蕉视频下载网站| 97无码免费人妻超级碰碰碰| 538国产视频| 伦伦影院精品一区| 日韩精品无码免费专网站| 内射人妻无码色AV天堂| 无遮挡一级毛片呦女视频| 中文字幕精品一区二区三区视频 | 欧美另类精品一区二区三区| 久久综合色播五月男人的天堂| 人人91人人澡人人妻人人爽 | 97青青青国产在线播放| 国产乱子伦无码精品小说| 日日碰狠狠添天天爽| 999精品视频在线| 91在线视频福利| 伊人无码视屏| 国产成人乱无码视频| 国内精品久久久久久久久久影视 | 熟妇丰满人妻| 午夜不卡福利| 亚洲精品国产乱码不卡| 成年午夜精品久久精品| 91蜜芽尤物福利在线观看| 亚洲精品第一在线观看视频| 成人福利免费在线观看| 国产精品对白刺激| 日本国产精品一区久久久| 九九视频在线免费观看| 久久精品亚洲热综合一区二区| 欧美一级在线看| 国产91无码福利在线| 日本不卡在线视频| 青草91视频免费观看| 波多野结衣中文字幕一区| 日韩免费毛片| 一级全免费视频播放| 欧美国产日产一区二区| 国产网站黄| 久久五月视频| 亚洲无码熟妇人妻AV在线|