第三章、 研究方法與系統架構
3.2 系統架構
要偵測一個中文字的旋轉角度,可以分為以下的幾個步驟:(1) 筆畫線段的抽取。(2)各個長度方向的累計。(3)尋找累計長度最大的 方向。(4)尋找長度足夠的垂直方向。(5)找出滿足中文特性的方向組 合。(6)應用經驗法則修正偵測的結果。以下將針對各個步驟做詳細 的說明。
對於「筆畫線段的抽取」,必須要考慮三個方向:(1)決定方向的 量化方式。(2)抹平,也就是軌跡雜訊的移除。(3)紀錄線段方向與長 度。我們首先討論關於決定方向的量化方式。平面座標系統可以被 X 軸與 Y 軸分為四個象限,右上角是第一象限,左上角是第二象限,左 下角是第三象限,最後右下角則是第四象限。我們按照象限的編號方 式逆時針把整個平面等分為 N 個方向如 圖 3-2-1(a)(b)方向畫分與 量化示意圖 所示。圖 3-2-1(a)以圓點為中心將圓周 16 等分為例,
各個方向是由原點,也就是 X 軸與 Y 軸交叉點向外的射線,四個象限 總共可分為 0 到 N-1 的方向編號,圖 3-2-1(b)是根據方向畫分取 N=16 的時候的量化過程,將每個方向用一個位元(bit)來表示,方向 0 到 15(N-1)分別對應一個位元組(byte)中的 bit0 到 bit15,如果找 出來的線段方向是在方向 0,則對應的 bit0 將會被設置為 1,否則就 設置為 0。
(a) (b) 圖 3-2-1(a)(b). 方 向 畫 分 與 量 化 示 意 圖
18
經過這樣的一個量化(Quantization)的過程之後,我們就可以用 整數的位元圖(bitpattern)來表示角度範圍,在運算的表達上也更為 方便,如果要表示相鄰的幾個角度的區域的合併,只要簡單的把代表 這幾個區域的位元圖加起來,即可以獲得;之後如果要增加合併區域 或者刪除兩側的合併區域,則將位元圖之中對應的位元設立(set) 或者清除(reset)就可以完成運算。圖 3-2-2 量化方向表達示意圖 說明當圓周畫分為 16 等分的時候,要如何表示角度Θ落在區間 [0
°, 56.25°]?16 等分的圓周,每一等分相當於 22.5°,56.25°則剛好 落在方向 2 與方向 3 之間,分別以 L0 代表方向 0,L1 代表方向 1,
L2 代表方向 2。
圖 3-2-2. 量 化 方 向 表 達 示 意 圖
接著我們討論如何移除書寫軌跡中的雜訊,也就是所謂的「抹 平」。這個步驟的目的在於降低雜訊干擾的影響,以及減少線段的數 目,以下將說明如何達成這兩個目的的方法。透過前一個步驟將所有 輸入的線段的方向量化之後,開始依序追蹤每一個筆畫中的線段,每 次都是查看兩個線段:追蹤線段與新線段。如果新線段的長度小於門 檻值,將會被捨棄,以消除雜訊並減少線段的數目。長度大於門檻值 的新線段則考慮其方向與追蹤方向的夾角,如果這個夾角小於門檻 值,則兩個線段可以合併為長度更長的追蹤線段,如果夾角大於門檻 值,則在記錄原來的追蹤線段的方向與長度後,把新的方向與長度當 作新的追蹤線段與方向,繼續整個流程,直到每個筆畫的每個線段都 被查看過一次。
19
針對一個未知的輸入,將所有筆畫拆解成的線段之後,依照量化 方向進行長度累計,得知在每個方向上的總長度。第二步驟從累計的 各個方向中,找一個長度最大的方向當作起始方向(major direction,
M),再以起始方向為索引,找看看有沒有與它垂直的長線段?如 圖 3-2-3 由 major direction M 找尋 second major direction S 所示,
黑色實線的射線表示目前所決定的起始方向,major direction M;
紅色虛線代表須要找尋的垂直線段,second major direction S。
問號表示目前未知是否真正存在,兩個紅色射線 S1 與 S2 表示這兩個 方向都可能是我們所要尋找的真正的 S,若都找的到,選取較長的那 一個做為返回的結果。
圖 3-2-3. 由 major direction M 找 尋 second major direction S
如果找得到這樣的垂直線段,而且是剩餘的所有線段中比較長 的,那麼這個就是第二起始方向(second major direction,S)。
如果找不到這樣的垂直線段,也就是算法無法自動偵測的情況,必須 使用經驗法則加以補充;若經驗法則還是無法適用,那麼就不進行之 後的校正。
接著是決定 M 與 S 的夾角,也就是找出滿足中文書寫特性的方向 組合測試,以下說明如何完成這個測試並且決定其結果是否正確:這 兩個方向是互相垂直的,或者近似於互相垂直,而且橫筆一定指的是 X 軸正向的射線(方向 0),豎筆則是 Y 軸的負向射線(方向 3*N/4),
因為我們利用的資訊就是手寫漢字中的橫豎筆劃的資訊。但是哪一個 才是 X 軸(水平方向),哪一個才是 Y 軸(垂直方向)呢? 我們先以 M 和 S 中較大者為大數,標記為 index_large,較小者為小數,標記為 index_small。首先我們試著把大數 index_large 假定為方向 0,從
20
上面的方向示意圖了解到,因為最後要組成一個圓的關係,方向 0 其實也就是方向 N,所以 factor = N – index_large 就是一個補償 數值,用來補償 index_small,確立它在 index_large 變為方向 0(N) 的之候的修正後結果為 index_small + factor。如果修正結果滿足 下列條件:它與方向 3*N/4 的誤差不大於 N/8 的話,就可以確定 index_large 與 index_small 分別是我們所要找的方向 0 與方向 3*N/4。
另外一種情況就是 index_small 才是我們所要找的方向 0,那麼 需要補償的數值就變成 index_large,但是此時就不需要先計算 factor , 因 為 這 是 一 個 負 向 的 補 償 , 也 就 是 說 index_large – index_small 就是補償後的數值;如果這個補償後的數值也滿足第一 種情況所提到的條件,就可以確定 index_small 與 index_large 分別 就是所要找的方向 0 與方向 3*N/4。圖 3-2-4. 中文書寫特性測試示 意圖 顯示本論文如何進行滿足中文書寫特性的方向組合測試。帶有 箭頭方向的虛線表示軌跡校正的前進方向,也就是說把虛線起點的射 線的方向當作是筆畫的水平方向的話,另外一個射線將會指向何方,
結果就是短而粗的箭頭方向右邊所形成的樣子。如果這樣的組合是正 確的,旁邊用圓圈表示;如果是不正確的組合,旁邊用 X 表示。
圖 3-2-4. 中 文 書 寫 特 性 測 試 示 意 圖
21
以下是偵測算法,本文稱之為「筆畫線段投票法」的 pseudo-code,
返回 0 表示無法偵測或者不需要校正,其他非 0 值表示這個方向的線 段必須要轉為 X 軸正向射線的線段,X 軸正向的的射線被標記為 L0:
Algorithm 1.:筆劃線段投票法。
NO_DIRECTIONS = N(segment clusters 數目的上限)。
remove small segments from ink.
find out ink segments and their length from removed ink.
clustering segments and accumulate length for each cluster.
Find out segment cluster with longest accumulated length and mark it as major direction M.
Find out another segment cluster with enough accumulated length and be perpendicular to M, then marked it as second major direction S.
If S cannot be found, Appling heuristic rules then return 0 as L0.
If M > S then index_large = M, index_small=S Else index_large=S, index_small_M.
factor = NO_DIRECTIONS - index_large.
If(|(factor + index_small)-3*N/4| <= N/8) return index_large.
If(|(index_large-index_small)-3*N/4| <= N/8) return index_small.
return 0.
Done.
22
第四章 實驗與結果討論
4.1 手寫識別核心的傾斜忍受能力
在進行真正的實驗之前,必須要先了解手寫識別核心本身對於傾 斜的容忍能力,以免將手寫核心的容錯能力當作是旋轉偵測算法的成 果。透過這個前置實驗,我們了解到這個手寫識別核心在傾斜的容錯 力是在+11.25∘~-11.25∘之間,表 4-1-1 顯示了部分實驗的數據,
橫軸列編號表示累計前一到十位的候選字識別率;縱軸欄編號表示在
1(2.8125°) 97.5% 97.5% 98.7% 98.7% 99.0% 99.0% 99.0% 99.0% 99.0% 99.0%
2(5.625°) 96.7% 96.7% 98.3% 98.3% 98.6% 98.6% 98.6% 98.6% 98.6% 98.6%
3(8.4375°) 94.7% 94.7% 96.8% 96.8% 97.3% 97.3% 97.4% 97.4% 97.4% 97.4%
4(11.25°) 90.8% 90.8% 93.7% 93.7% 94.3% 94.3% 94.5% 94.5% 94.6% 94.6%
5(14.0625°) 82.5% 82.5% 86.3% 86.3% 87.5% 87.5% 87.8% 87.8% 87.9% 87.9%
6(16.875°) 67.5% 67.5% 72.2% 72.2% 73.8% 73.8% 74.3% 74.3% 74.6% 74.6%
縱
從上表可知,在逆時針方向傾斜角度為 4(11.25∘)的時候,首 位識別率尚有九成以上,還在可以接受的範圍,之後就急遽的下降到 難以忍受的程度。從順時針方向進行的手寫識別核心傾斜容錯能力偵 測所得到的結果也是類似的情況。圖 4-1-1「璇」的傾斜角度示意圖 顯示了「璇」這個字在+16.875∘~-16.875∘的若干姿態。圖 4-1-1(a) 是沒有旋轉或者傾斜的樣本,圖 4-1-1(b)~(g)是分別向右旋轉 2.8125∘~16.875∘的樣本,圖 4-1-1(h) ~(m)是分別向左旋轉 2.8125∘~16.875∘的樣本。可以看出有些微的不同,但是其實手寫 辨識核心可接受的傾斜角度的範圍並不是很大,這也與我們上一章所 討論的結論相符合,手寫辨識核心雖然可以利用收集樣本的多樣性來 嘗試吸收解決傾斜的問題,但是為了維持辨識率的穩定性,過大的傾 斜角度是不可以放置在訓練數據庫之中的。
(g) (f) (e) (d) (c) (b)
(a)
(h) (i) (j) (k) (l) (m) 圖 4-1-1. 「 璇 」 的 傾 斜 角 度 變 化 示 意 圖
25
4.2 線段分群的實驗 – 筆畫線段投票法
本節中所要進行的實驗的是筆畫線段方向量化的精細度,也就是 不同的量化值對於筆畫線段投票法的影響。因為筆畫線段投票法是針 對量化後的方向進行長度的累計,具有較大的累計長度的量化值(方 向)就具備較大的影響,這種過程類似把原始資料按照某種觀察或者 計算的特徵進行分群(Clustering),所以本文稱之為「線段分群」。
印刷體的識別與書寫體的識別在線段分群的時候可以很直觀的
預期是正確的,橫軸表示旋轉角度的區分編號以及實際對應的角度;
20(56.25∘) 30(84.375∘) 50(140.625∘) 60(168.75∘) 角 度
20(56.25∘) 30(84.375∘) 50(140.625∘) 60(168.75∘)
候選字首選
識別率 62% / 10% 72% / 0% 65% / 0% 63% / 0%
角 度 辨 識 率
表 4-2-2. 64 等 分 的 旋 轉 角 度 偵 測 後 的 校 正 結 果 識 別 率
20(56.25∘) 30(84.375∘) 50(140.625∘) 60(168.75∘)
候選字首選
識別率 63% / 10% 64% / 0% 62% / 0% 65% / 0%
角 度 辨 識 率
表 4-2-3. 128 等 分 的 旋 轉 角 度 偵 測 後 的 校 正 結 果 識 別 率
對於直線的雜訊消除則是另一個需要考量的因素,基於種種的原 因,例如電子雜訊,人手的抖動,個人的書寫習慣等等,一個直線的 筆畫用手寫的時候通常沒有辦法如同我們想像中的那麼完美,會有一 個上下左右飄移的歪斜現象,雖然每個筆劃的量或許不是很多,但是 眾多筆畫累積起來之後,也會對方向的統計有不小的影響。所以,我 們需要把一個線段「抹平」的步驟,換句話說,是要把不規則跳動的 點略過,讓方向差異小的線段合併,使得筆畫書寫時候的走向可以更 更清楚的呈現出來,如圖 4-2-1 軌跡移除雜訊示意圖所示,圖的左 邊是原始的軌跡,圖的右邊是經過移除雜訊(抹平)處理後的軌跡,圖 中用藍色圓圈標示的部份是平整差異比明顯的地方,數字表示對照的 位置的編號。在這些標註出來的地方,消除雜訊後曲折的軌跡變得平 直,轉折的部分變的銳利,使得筆畫的方向更清楚地呈現出來。
28
圖 4-2-1.軌 跡 移 除 雜 訊 示 意 圖
表 4-2-4 比較未抹平與抹平後的軌跡對平均識別率的影響,顯示
Principal Components Analysis(PCA)[16] 是一個受到廣泛應 用的統計技術,例如人臉的識別、影像壓縮等等,這個方法也被運用 在多維度的樣板偵測。透過 PCA 可以找出包含最多輸入資訊的方向,
Principal Components Analysis(PCA)[16] 是一個受到廣泛應 用的統計技術,例如人臉的識別、影像壓縮等等,這個方法也被運用 在多維度的樣板偵測。透過 PCA 可以找出包含最多輸入資訊的方向,