卿東升 李建軍 鄧巧玲
摘要:為了保證印刷體數字識別的準確性和良好的擴展性,提出了一種基于二進制的印刷體數字識別算法,旨在為每一個被識別的印刷體數字分配一組特定的二進制,從而保證其識別的準確性和可擴展性。通過Matlab編程仿真可知,識別的準確率非常高,證明了其識別的可行性。
關鍵詞:數字識別;二進制;特征值;數字分割
中圖分類號:TP391.4文獻標志碼:A文章編號:1008-1739(2018)05-62-3
Printed Digital Recognition Algorithm Based on Binary
QING Dongsheng1, LI Jianjun1,DENG Qiaoling2(1.College of Computer Science and Information Technology, Central South University of Forestry and Technology, Changsha Hunan 410004, China;2. Hunan Applied Technology University, Changde Hunan 415000, China)
0引言
隨著互聯網的發展和科學技術的不斷進步和成熟,大數據、物聯網及互聯網+等智能科學技術時代已經到來,數字圖像識別技術的應用也越來越廣泛[1-3]。在此之前,印刷體數字的識別有很多算法,但這些算法各有優缺點[4-6]。本文提出一種基于二進制特征的印刷體數字識別方法,利用數字本身的獨特結構,把其獨特的結構轉化為二進制數字0和1,并用一組二進制數字來表示一個數字,作為該數字的識別編碼。該算法容易理解、識別率高、擴展性好及易于后期的維護和升級。
1數字分割技術
1.1提取掃描圖像
在印刷體數字識別過程中,掃描到的數字必然會是一連串的數字,因此,在識別單個數字之前,必須先對這一連串數字進行分割,以便把單個數字圖像分割出來進行識別。
1.2分割方法
文中的數字分割方法是根據數字圖像的特征,尋找數字圖像中每個數字的左右邊界來分割每個數字的圖像,具體步驟如下:
①讀取掃描圖像并轉化成二值圖像,獲取該二值圖像的尺寸。由數字圖像的特征可知,數字圖像中的每一個數字都有邊界,因此只要把數字圖像中的每一個數字的左右邊界找到,就可以把每一個數字分離出來。
②從左至右掃描二值圖像,并且用一個游標p1來記錄數字圖像中掃描的變化情況,如果該游標遇到數值為0(p1=0),即該處有黑點,表示在該處找到第一個數字的左邊界并標記col11;繼續向右掃描來尋找數字的右邊界,如果在掃描過程中游標p1=1,即該處為白點。此時,以該點作為數字圖像的基點,從上到下掃描該數字對應的所有行,用p2記錄該列數字圖像變化的情況,如果從上到下掃描該列對應的行都沒有找到黑點及p2=1,則表示在該處找到第一個數字的右邊界并標記col12,記錄該數字圖像為number1。否則,表示該白點只是數字中間的某個白點,并不是該數字的右邊界點。此時繼續向右掃描,直到找到某一列對應的行全部為白點及p2=1為止,這樣就分割出了數字圖像中的第一個數字。
③以前一個數字的右邊界為掃描起點,重復步驟②,以此類推,直到把所有的數字圖像都分割出來為止,分割示意圖如圖1所示。
2數字二進制特征值提取
通過分割數字圖像技術得到單個數字圖像后,提取單個數字圖像二進制特征值。根據數字特征識別需要,文中提取的數字特征值的個數為7。
(1)數字的高度與寬度之比。根據數字特征可以發現,在0~9這幾個數字中,每一個數字的高度和寬度之比都是不同的,仔細觀察可以發現,數字1的寬度最窄,因此,通過數字的高度和寬度之比會得出數字1的比值最大,如圖2所示。
此時,印刷體數字1234567890提取到的二進制特征值為0111111111。
(2)選取數字坐標(1/3,1/2)處,向右掃描該組數字,看是否會碰到黑點,如果碰到,則輸出1;否則,輸出0,如圖3所示。
此時,1234567890提取到的二進制特征值為1111001111。
(3)選取數字坐標(1/3,1/2)處,向左掃描該組數字圖像,看是否會碰到黑點,如果碰到,則輸出1;否則,輸出0,如圖4所示。
此時,1234567890提取到的二進制特征值為1101010111。
(4)選取數字坐標(1/2,1/2)處,掃描該組數字圖像,看其是否為黑點,如果是黑點,則輸出1;否則,輸出0,如圖5所示。
此時,1234567890提取到的二進制特征值為1010000100。
(5)選取數字坐標(2/3,1/2)處,掃描該組數字圖像,看其是否為黑點,如果是黑點,則輸出0;否則,輸出1,如圖6所示。

此時,1234567890提取到的二進制特征值為0011110111。
(6)判斷該組數字圖像左邊界的橫坐標和右邊界的橫坐標是否相等。如果相等,則輸出1;否則輸出0。選擇其作為特征值是因為數字0的特殊性,如圖7所示。
此時,1234567890提取到的二進制特征值為0000000001。
(7)掃描該組數字坐標(3/7, 1/5)處,看其是否為黑點。如果是黑點,則輸出0;否則,輸出1。該組特征值主要是為了區別數字4和9,如圖8所示。
此時,1234567890提取到的二進制特征值為1111101100。
4數字識別
4.1數字二進制特征值
根據上文中提取到的數字二進制特征值,就可以對0~9中的每一個數字進行識別,每一個數字特有的一組二進制特征值如表1所示。
4.2識別過程
根據每個數字提取到的二進制特征值,識別步驟如下:①先把所有數字的二進制特征值存入一個數組中;②從數組中取出一組二進制進行比較,如果該二進制數字為0111001,則輸出識別數字1;否則,比對二進制數字1110001,如果匹配,則輸出識別數字2;否則,比對二進制數字11001101。以此類推,直到所有數字都識別完成為止。
5結束語
通過Matlab編程實驗可知,該算法的準確率非常高,基本上每一個數字圖像中的數字都可以很清楚地識別出來,因為每一個數字都有特定的二進制數字與其對應。理論上來說,該算法的識別率可以達到100%,且容易理解,可擴展性強。但是該算法的執行效率不高,所耗費的運算量比較大,理想的情況,識別10個數字只需要4位二進制數字足夠,文中算法用了7位二進制,造成的原因主要是因為選取的識別點和算法優化度不夠,可以通過多做實驗,選取最優識別算法,把識別數字的二進制數減少到4位。
參考文獻
[1] Rivera A R,Chae O.Spatiotemporal Directional Number Transitional Graph for Dynamic Texture Recognition[J].IEEE Transactions on Pattern Analysis & Machine Intelligence, 2015,37(10):2146-2152.
[2] Aghayan R,Ellis T,Dehmeshki J.Planar Numerical Signature Theory Applied to Object Recognition[J].Journal of Mathematical Imaging and Vision,2014,48(3):583-605.
[3] Dinh D L,Lee S Y,Kim T S.Hand Number Gesture Recognition Using Recognized Hand Parts in Depth Images[J].Multimedia Tools and Applications,2016,75(2):1333-1348.
[4]嚴國莉,黃山,等.印刷體數字快速識別算法在身份證編號數字識別中的應用[J].計算機工程,2003,29(1):179.
[5]倪桂博,梁曉尊.基于結構形狀的印刷體數字識別方法[J].軟件導刊,2010,9(5):67-68.
[6]張董,游福成,王惠華,等.受限制Boltzmann機深度置信網絡與手寫數字識別[J].北京印刷學院學報,2016,24(4):56-58.