一種基于掃描線的音符識別方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及手寫識別技術(shù),特別涉及手寫音符識別技術(shù)。
【背景技術(shù)】
[0002]現(xiàn)有技術(shù)下,手寫識別系統(tǒng)大都基于特征抽取的模版匹配算法。特征提取是計(jì)算機(jī)視覺和圖像處理中的一個(gè)概念。它指的是使用計(jì)算機(jī)提取圖像信息,決定每個(gè)圖像的點(diǎn)是否屬于一個(gè)圖像特征。特征提取的結(jié)果是把圖像上的點(diǎn)分為不同的子集,這些子集往往屬于孤立的點(diǎn)、連續(xù)的曲線或者連續(xù)的區(qū)域。幾何形狀特征主要有兩種表示方法,一類是輪廓特征,一類是區(qū)域特征。圖像的輪廓主要針對物體的外邊界,而圖像的區(qū)域則關(guān)系到整個(gè)形狀區(qū)域。輪廓特征抽取主要檢測圖像邊緣,這類算法的要求是,盡可能多地標(biāo)識出圖像中的實(shí)際邊緣,標(biāo)識出的圖像邊緣要與實(shí)際圖像中的邊緣盡可能接近,圖像中的邊緣標(biāo)識且只標(biāo)識一次,可能存在的噪點(diǎn)不應(yīng)標(biāo)識為邊緣。流行的基于邊緣的特征提取算法有Canny算子、Sobel算子、方向鏈碼、傅里葉算子及小波描述方法。基于區(qū)域的形狀特征有幾何不變距、廣義傅里葉描述子、Zemike距等,這些方案通過區(qū)域平移旋轉(zhuǎn)的不變性進(jìn)行匹配,降低信息冗余、提高抗噪性,一個(gè)典型的顯著區(qū)域算法可參考FT算法(frequency-tunedsalient reg1n detect1n)。特征抽取中的距離度量往往基于點(diǎn)-點(diǎn)之間的編輯距離,利用邊緣或區(qū)域點(diǎn)的位置和梯度方向作為匹配信息,與根據(jù)圖像學(xué)習(xí)訓(xùn)練提取的模版進(jìn)行相似度計(jì)算,實(shí)現(xiàn)圖像識別。
[0003]特征提取過程中采用二值的判別標(biāo)準(zhǔn),即對于一個(gè)給定的樣本,它要么屬于一個(gè)類,要么不屬于一個(gè)類。但識別對象的數(shù)據(jù)采集經(jīng)常受多種客觀條件的影響,邊緣抖動(dòng)、復(fù)雜噪點(diǎn)、光影造成的邊界模糊等會嚴(yán)重影響識別的準(zhǔn)確度。尤其在手寫音符識別中,書寫隨意性更大,其形狀特征也不同于傳統(tǒng)幾何圖形的認(rèn)知方式。因此,現(xiàn)有技術(shù)下的這類特征提取的方法在手寫音符識別中適應(yīng)效果不佳。
【發(fā)明內(nèi)容】
[0004]本發(fā)明所要解決的問題是現(xiàn)有技術(shù)下對手寫音符識別效果不佳為解決上述問題,本發(fā)明采用的方案如下:
一種基于掃描線的音符識別方法,包括如下步驟:
S1:獲取用戶輸入的音符草圖;
52:對音符草圖的左右兩邊輪廓用輪廓分析器掃描分析輪廓的形狀,將輪廓的形狀用輪廓狀態(tài)簡化表示成輪廓狀態(tài)序列;所述輪廓狀態(tài)分為“上跳”、“下跳”、“高平”和“低平”;
53:將輪廓狀態(tài)序列與預(yù)先構(gòu)建的音符模型輪廓匹配得到對應(yīng)的音符。
[0005]進(jìn)一步,根據(jù)本發(fā)明的基于掃描線的音符識別方法,所述步驟S2中所述“輪廓分析器掃描分析輪廓的形狀”包括以下步驟:
521:根據(jù)音符草圖的大小設(shè)定抖動(dòng)閾值和步進(jìn)距離;
522:初始化輪廓狀態(tài)序列,并將中間狀態(tài)S初始化為“未知”; 523:根據(jù)步進(jìn)距離對音符草圖輪廓進(jìn)行步進(jìn)掃描,根據(jù)抖動(dòng)閾值判斷步進(jìn)范圍內(nèi)輪廓走向?yàn)椤吧闲小薄ⅰ八健边€是“下行”;假如步進(jìn)范圍內(nèi)輪廓走向向上超過抖動(dòng)閾值,則標(biāo)記中間狀態(tài)S為“上行”;假如步進(jìn)范圍內(nèi)輪廓走向向下超過抖動(dòng)閾值,則標(biāo)記中間狀態(tài)S為“下行”;假如步進(jìn)范圍內(nèi)輪廓走向向上和向下均不超過抖動(dòng)閾值,則標(biāo)記中間狀態(tài)S為“水平”;
524:根據(jù)當(dāng)前輪廓狀態(tài)序列和初始點(diǎn)坐標(biāo)以及中間狀態(tài)的輪廓關(guān)聯(lián)分析,將中間狀態(tài)S轉(zhuǎn)換成輪廓狀態(tài)合并至輪廓狀態(tài)序列;
525:重復(fù)步驟S23至S24直到分析完成。
[0006]進(jìn)一步,根據(jù)本發(fā)明的基于掃描線的音符識別方法,該方法還包括對音符草圖的上下兩邊輪廓用輪廓分析器掃描分析輪廓的形狀的步驟。
[0007]本發(fā)明的技術(shù)效果如下:本發(fā)明采用基于特征抽取的掃描線算法,在原有的理論基礎(chǔ)上創(chuàng)新地結(jié)合碰撞掃描與貫穿掃描,計(jì)算編輯距離,采用閾值判斷,跳出原有的特征抽取可能存在的幾何形狀類似,拐點(diǎn)重復(fù)等現(xiàn)狀,提高識別效率。
【附圖說明】
[0008]圖1是本發(fā)明的基于掃描線的音符識別方法的整體流程圖。
[0009]圖2是本發(fā)明的音符模型輪廓抽象示例圖。
[0010]圖3是對手寫音符掃描分析的示例圖。
[0011]圖4是圖3中圓A內(nèi)一次步進(jìn)的放大圖。
[0012]圖5是圖3中圓B內(nèi)一次步進(jìn)的放大圖。
[0013]圖6是手寫音符異常斷點(diǎn)的示例圖。
【具體實(shí)施方式】
[0014]下面結(jié)合說明書附圖對本發(fā)明做進(jìn)一步詳細(xì)說明。
[0015]一、音符模型輪廓
本發(fā)明通過音符模型輪廓與分析得到手寫音符輪廓進(jìn)行匹配得到最終的結(jié)果,因此首先需要構(gòu)建音符模型輪廓數(shù)據(jù)。每個(gè)音符對應(yīng)一個(gè)模型輪廓。最終得到的音符模型輪廓數(shù)據(jù)可以以靜態(tài)數(shù)據(jù)存于程序指令中,也可以以文件或數(shù)據(jù)庫的方式保存。每個(gè)音符的模型輪廓用輪廓狀態(tài)序列表示。輪廓狀態(tài)有四種,分別為“上跳”、“下跳”、“高平”和“低平”,分別用字母表示為“U”、“D”、“H”和“L”。對于簡單的音符,其模型輪廓用左右兩邊的輪廓狀態(tài)序列表示;對于復(fù)雜的音符,其模型輪廓用上下左右四邊的輪廓狀態(tài)序列表示。構(gòu)建音符模型輪廓時(shí),首先對標(biāo)準(zhǔn)音符進(jìn)行抽象得到抽象圖,然后提取抽象圖相應(yīng)的輪廓狀態(tài)序列。圖2是構(gòu)建音符模型輪廓的示例。如圖2所示,a是標(biāo)準(zhǔn)音符的形狀,6是抽象后的音符形狀,c是將6順時(shí)針旋轉(zhuǎn)90度后左邊輪廓的形狀,ο是將6逆時(shí)針旋轉(zhuǎn)90度后右邊輪廓的形狀,由此可以得到該音符的左右兩邊的輪廓狀態(tài)序列均為:“UHDL”。上述“提取抽象圖相應(yīng)的輪廓狀態(tài)序列”的過程與上述步驟S2中相同。因此實(shí)際操作中,可以借助步驟S2實(shí)現(xiàn)自動(dòng)化構(gòu)建音符模型輪廓數(shù)據(jù),也即向步驟S2輸入標(biāo)準(zhǔn)的音符圖案得到相應(yīng)的輪廓狀態(tài)序列。
[0016]二、音符草圖音符草圖通過用戶筆跡采樣,經(jīng)預(yù)處理后獲得。采樣用戶筆跡得到的可以是向量數(shù)據(jù),也可以是位圖。假如得到的是向量數(shù)據(jù)最終同樣可以轉(zhuǎn)換成位圖。得到的位圖為一級采樣圖。由于用戶筆跡采樣得到的一級采樣圖中可能包含多個(gè)音符,因此,本實(shí)施例中對一級采樣圖進(jìn)行預(yù)處理,在預(yù)處理中,將包含有多個(gè)音符的一級采樣圖進(jìn)行切割拆分得到多個(gè)音符草圖。由此可以確保每個(gè)音符草圖只包含一個(gè)音符。
[0017]上述過程也即前述步驟SI所完成的功能。事實(shí)上,本領(lǐng)域技術(shù)人員理解,步驟SI中的“獲取用戶輸入的音符草圖”可以表示音符草圖為本發(fā)明的輸入,至于如何獲取音符草圖的過程并非本發(fā)明所討論的范疇,因此不再贅述。為了簡單起見,本實(shí)施例中,輸入的音符草圖以帶有寬和高的點(diǎn)陣位圖的形式表示,當(dāng)然本領(lǐng)域技術(shù)人員可以理解,也可以采用其他的方式表示。
[0018]三、輪廓分析器
如圖1所示,本發(fā)明的過程在步驟Si獲得音符草圖后,首先分析左右兩邊的輪廓形狀,匹配左右兩邊的輪廓狀態(tài)序列;再分析上下兩邊的輪廓形狀,匹配上下左右四邊的輪廓狀態(tài)序列。這與前述的“對于簡單的音符,其模型輪廓用左右兩邊的輪廓狀態(tài)序列表示;對于復(fù)雜的音符,其模型輪廓用上下左右四邊的輪廓狀態(tài)序列表示”相對應(yīng)。無論“分析左右兩邊的輪廓形狀”還是“分析上下四邊的輪廓形狀”均由輪廓分析器實(shí)現(xiàn)。輪廓分析器分析音符草圖的輪廓只能分析一邊。輪廓分析器的輸入是音符草圖。輪廓分析器分析所輸入的音符草圖時(shí)總是從左到右,自上而下地掃描。因此,輪廓分析器分析的是所輸入音符草圖上邊輪廓形狀,輸出為所輸入音符草圖上邊的輪廓狀態(tài)序列。也因此,當(dāng)輪廓分析器分析音符草圖的左邊時(shí),首先需要對音符草圖順時(shí)針旋轉(zhuǎn)90度后輸入輪廓分析器;當(dāng)輪廓分析器分析音符草圖的右邊時(shí),首先需要對音符草圖逆時(shí)針旋轉(zhuǎn)90度后輸入輪廓分析器;當(dāng)輪廓分析器分析音符草圖的下邊時(shí),首先需要對音符草圖進(jìn)行上下翻轉(zhuǎn)后輸入輪廓分析器;當(dāng)輪廓分析器分析音符草圖的上邊時(shí),音符草圖保持不變地輸入輪廓分析器。也因此“分析左右兩邊的輪廓形狀”的過程和“分析上下兩邊的輪廓形狀”的過程實(shí)質(zhì)相同,均為輪廓分析器的分析過程,也即可以歸為步驟S2。相應(yīng)地,“匹配左右兩邊的輪廓狀態(tài)序列”的過程和“匹配上下左右四邊的輪廓狀態(tài)序列”的過程也實(shí)質(zhì)相同,均可歸為匹配器匹配的過程,也即可以歸為步驟S3。輪廓分析器掃描分析輪廓的形狀的過程如下:
首先,根據(jù)音符草圖的大小設(shè)定抖動(dòng)閾值、高低閾值和步進(jìn)距離,即前述步驟S21。輪廓分析器所分析處理的音符草圖是經(jīng)過轉(zhuǎn)置的,分析過程總是從左到右,自上而下地掃描所輸入音符草圖上邊輪廓形狀。抖動(dòng)閾值用于判斷輪廓上行還是下行的門限值。中上閾值和中下閾值用于當(dāng)中間狀態(tài)為“水平”時(shí)屬于“高水平”還是“低水平”。步進(jìn)距離用于自左向右掃描時(shí),每一次步進(jìn)的距離。因此,抖動(dòng)閾值、高低閾值總是與所輸入音符草圖的高度相關(guān),而步進(jìn)距離則與所輸入音符草圖的寬度相關(guān)。本實(shí)施例中,抖動(dòng)閾值、高低閾值和步進(jìn)距離采用如下公式進(jìn)行計(jì)算:
抖動(dòng)閾值 ^Threshold H Draft/丄6,
高低閾值 HLsplit= 2XHDMft/3;
步進(jìn)距離Dstep= W滅/48,
上述公式中,Hlteaft為音符草圖的高度,Wllraft為音符草圖的寬度。
[0019]然后,對兩個(gè)狀態(tài)數(shù)據(jù)進(jìn)行初始化并初始化初始點(diǎn)和終止點(diǎn),也即前述步驟S22。兩個(gè)狀態(tài)數(shù)據(jù)為初始化輪廓狀態(tài)序列和中間狀態(tài)S。如前所述,本實(shí)施例中,輪廓狀態(tài)用字母表示為“U”、“D”、“H”和“L”。輪廓狀態(tài)序列實(shí)際上是一個(gè)只能包含有字母“U”、“D”、“H”和“L”的字符串。該用以表示輪廓狀態(tài)序列的字符串簡稱為輪廓字符串。初始化輪廓狀態(tài)序列,也即將輪廓字符串設(shè)為空。中間狀態(tài)S用于表示當(dāng)前步進(jìn)距離的區(qū)間內(nèi)的輪廓走向,分“上行”、“水平”和“下行”,初始為“未知”。初始點(diǎn)初始化為Ptl= (O,HDraft/2)=(O,120),終止點(diǎn)初始化為 P1= (ff Draft,HDraft/2) = (480,120)。
[0020]步驟S21和S22實(shí)際上均為初始化的步驟,接下來就是步驟S23的掃描和步驟24的合并的步驟。步驟S23的掃描和步驟24的合并是一個(gè)循環(huán)過程。步驟S23的每一次掃描和步驟24的每一次合并處理的是一次步進(jìn)。直到整個(gè)音符草圖步進(jìn)完成。
[0021]以圖3、4、5為例。圖3是一個(gè)順時(shí)針轉(zhuǎn)置90度后的用于分析左邊輪廓的音符草圖,轉(zhuǎn)置后的音符草圖的高度Hllraft= 240,寬度Wllraft= 480?相應(yīng)地,抖動(dòng)閾值S Threshold =15,高低閾值H