董延華, 陳中華, 宋和燁, 黃 雨
(吉林師范大學 計算機學院, 數值模擬吉林省高校重點實驗室, 吉林 四平 136000)
隨著電子商務的迅速發展, 移動支付已逐漸成為人們生活的主要交易方式. 如手機充值、 購物付款、 轉賬提現等均可通過手機支付完成, 而這種支付的前提是將手機和銀行卡進行綁定, 目前已經實現通過手機攝像識別銀行卡號, 但存在識別速度慢、 識別率低等問題[1]. 因此, 如何在移動終端上更快速、 更準確地識別銀行卡號等相關信息, 從而完成銀行卡與移動支付方式的綁定已成為該領域的研究熱點. 本文在傳統識別技術的基礎上, 提出一種改進的特征匹配算法, 以提升銀行卡號識別的正確率, 并為其他相關數字識別技術提供參考.
銀行卡號識別技術流程為灰度化、 二值化、 邊緣檢測、 輪廓提取、 歸一化和卡號識別.
1.1 灰度化 通常拍攝或保存的銀行卡圖像都是彩色圖像, 處理圖像時, 要分別對RGB三種顏色分量進行處理, 計算量較大, 計算時間較長. 灰度圖像即可表示卡號的形態特征, 并且比彩色圖像所占存儲空間小. 為了優化系統, 需要將原銀行卡圖像轉換成8位的灰度值圖像[2].
1.2 二值化 獲取的灰度化圖像需進行二值化處理. 二值化就是將彩色圖像轉換為只包含兩種像素值的圖像, 分別用255和0表示白色和黑色[3]. 二值化處理需要通過函數計算出閾值T, 分割所有像素點, 大于該閾值的像素點變為255(白色), 小于該閾值的像素點變為0(黑色)[4].

其中:g(x,y)表示某一像素點的灰度值;T表示閾值.
1.3 邊緣檢測 邊緣檢測利用銀行卡號與背景像素點有跳躍性的差別, 確定卡號的具體位置, 通常卡號位于梯度值最大處. 將卡號的位置確定, 可有針對性地對數字進行識別[5].
1.4 輪廓提取 處理后得到的銀行卡二值化圖像需進行卡號區域與背景的分離. 本文采用輪廓提取確定卡號區域[6].
1.5 歸一化 輪廓提取后得到的圖像大小不一、 形狀各異, 不能直接進行數字識別[7], 需將圖像歸一化處理. 歸一化處理即將待識別圖像按一定標準變換, 使其大小形狀一致, 方便提取特征進行比對.
1.6 卡號識別 銀行卡號由16位或19位數字組成, 并且是標準化字體印制, 采用特征匹配法識別銀行卡號可較好地減少存儲空間, 節約計算時間.
1) 橫線特征. 按照數字0~9的特點, 有的數字存在橫線, 所以橫向上定義為HX=HD/HK, 其中:HD表示橫向上連續的像素點個數;HK表示數字圖像橫向上的像素點個數. 若0.6≤HX≤1.0, 則該數字存在橫線. 根據橫線在數字上的位置不同, 把橫線特征分為3種: 上橫線、 中橫線和下橫線. 以數字2和7為例, 如圖1(A)和(B)所示.
2) 豎線特征. 與橫線特征原理相同, 在豎向上定義為SX=SD/SG, 其中:SD表示豎直方向上連續的像素點個數;SG表示數字圖像豎直方向上的像素點個數. 若0.4≤SX≤1.0, 則確定該數字存在豎線. 根據豎線在數字上的位置不同, 把豎線特征分為2種: 左豎線和右豎線. 以數字0為例, 如圖1(C)所示.

圖1 特征提取示意圖Fig.1 Sketch map of feature extraction
3) 水平方向交點. 在數字圖像水平方向用3條線將圖像平均分成3部分, 當每條線穿越圖像時, 直線上的點由0變為1時即存在一個交點, 自上而下分別為水平1/3交點數, 水平1/2交點數, 水平2/3交點數, 如圖1(D)所示.
4) 豎直方向交點. 與水平方向原理相同, 豎直方向3條線從左到右分別定義為豎直1/3交點數, 豎直1/2交點數, 豎直2/3交點數, 如圖1(E)[8]所示.
根據特征提取方法, 生成如表1所示的特征統計表. 由表1可見, 任意兩個數字的特征向量均不同, 所以可通過對處理后的銀行卡號圖像進行特征提取, 再將提取數據與特征統計表進行比對, 得到對應的數字[9]. 對本文方法進行實驗測試, 測試使用單個數字的圖像, 結果列于表2. 由表2可見, 大部分數字的識別正確率均較低, 很多數字字符并未在特征統計表中識別出. 結合表1可見, 數字3和8的特征向量很接近, 數字2,4,9的特征向量也很接近, 光線或背景等因素變化會極大影響數字識別的準確性.

表 1 10個數字的特征統計表

表2 數字識別測試結果
針對傳統數字識別算法的不足, 本文對特征匹配算法進行改進. 從特征提取入手, 去掉橫線特征和豎線特征, 特征提取不再是簡單的交點, 而是通過N次學習, 最終計算得出結果[10].

圖2 提取數字模板特征Fig.2 Feature extraction of digital template
建立一個包含標準0~9這10個數字的模板庫, 對每個模板圖像分別從水平方向和豎直方向的不同位置穿越6條線. 假設水平方向的3條直線從上向下依次為x1,x2,x3, 豎直方向的3條直線從左向右依次為x4,x5,x6, 如圖2所示.x1~x6構成一個向量, 分別在6條直線上設計一個計數器, 當直線向一個方向穿過模板時, 每次像素變化計數器加1, 6條線用相同方法得到6個變化值. 再將得到的變化值賦值給相應的X變量, 組成一個6位的向量. 使用上述方法對模板庫的10個模板做N次相同處理, 再分別求出N次的平均值, 將最終得出的平均值作為0~9的每個數字模板的特征向量[11]. 計算得出0~9的特征向量列于表3.

表3 改進后10個數字的特征統計表
用6條線穿越計數處理歸一化后的每個待識別圖像, 得出相應的特征向量(用y1~y6表示), 再分別與統計出的每個模板的特征向量值計算歐氏距離, 歐氏距離值最小的模板所對應的數字即為待識別數字[12]. 歐氏距離算法如下:
對單個數字進行N次實驗, 實驗結果列于表4. 由表4可見, 相對于表2中結果, 識別準確率有明顯提高, 且都在97%以上. 表明本文改進的特征匹配算法能有效提高數字識別的準確率.

表4 改進后數字識別的測試結果
[1] 李成. 基于模板匹配算法的數字識別 [D]. 武漢: 中南民族大學, 2013. (LI Cheng. Template Matching Algorithm-Based Digital Identification [D]. Wuhan: South-Central University for Nationalities, 2013.)
[2] 樊可霞, 周一軍, 涂煊. 基于OpenCV的社保卡號碼識別算法的研究 [J]. 信息技術, 2014(3): 175-178. (FAN Kexia, ZHOU Yijun, TU Xuan. Recognition Algorithm Social Security Card Number Based on OpenCV [J]. Information Technology, 2014(3): 175-178.)
[3] 姜宇, 張子潮, 周富強. 基于OpenCV的車牌識別系統研究 [J]. 遼寧師范大學學報(自然科學版), 2011, 34(2): 170-174. (JIANG Yu, ZHANG Zichao, ZHOU Fuqiang. Research of Vehicle License Plate Recognition Based on OpenCV [J]. Journal of Liaoning Normal University (Natural Science Edition), 2011, 34(2): 170-174.)
[4] 顧晨勤, 葛萬成. 基于模板匹配算法的字符識別研究 [J]. 通信技術, 2009, 42(3): 220-222. (GU Chenqin, GE Wancheng. Chatacter Recognition Based on Template Matching Method [J]. Communications Technology, 2009, 42(3): 220-222.)
[5] 張進猛, 張進秋. 基于OpenCV的圖像采集和處理 [J]. 軟件導刊, 2010, 9(1): 164-165. (ZHANG Jinmeng, ZHANG Jinqiu. Image Collecting and Processing Based on OpemCV [J]. Software Guide, 2010, 9(1): 164-165.)
[6] 湯方義. 基于OpenCV和CUDA的車牌識別系統的軟件設計與實現 [D]. 長春: 吉林大學, 2014. (TANG Fangyi. Software Design and Implementation of License Plate Recognition System Based on OpenCV and CUDA [D]. Changchun: Jilin University, 2014.)
[7] 胡文, 馬玲玉. 基于OpenCV手機拍照快遞單文字識別的研究 [J]. 哈爾濱商業大學學報(自然科學版), 2015, 31(5): 564-568. (HU Wen, MA Lingyu. Study on Recognition Character in Express List by Mobile Phone Camera Based on OpenCV [J]. Journal of Harbin University of Commerce (Natural Sciences Edition), 2015, 31(5): 564-568.)
[8] 王亞坤, 曾德良, 李向菊. 一種新穎的數字識別算法 [J]. 電力科學與工程, 2009, 25(1): 76-78. (WANG Yakun, ZENG Deliang, LI Xiangju. New Algorithm for Digital Recognition [J]. Electric Power Science and Engineering, 2009, 25(1): 76-78.)
[9] Muthumani I, Uma K C R. Online Character Reconition of Handwritten Cursive Script [J]. International Journal of Computer Science Issuse, 2012, 9(3): 597-603.
[10] 陳展東, 白寶興, 韓成, 等. 數字識別算法研究 [J]. 長春理工大學學報(自然科學版), 2010, 33(1): 147-151. (CHEN Zhandong, BAI Baoxing, HAN Cheng, et al. Algorithm for Numeral Recognition [J]. Journal of Changchun University of Science and Technology (Natural Science Edition), 2010, 33(1): 147-151.)
[11] 劉洋洋, 嵇啟春. 一種改進的模板匹配法的數字識別算法 [J]. 工業控制計算機, 2010, 23(5): 76-77. (LIU Yangyang, JI Qichun. Digit Recognition Based on Improved Template Matching Method [J]. Industrial Control Computer, 2010, 23(5): 76-77.)
[12] 張闖, 王婷婷, 孫冬嬌, 等. 基于歐氏距離圖的圖像邊緣檢測 [J]. 中國圖象圖形學報, 2013, 18(2): 176-183. (ZHANG Chuang, WANG Tingting, SUN Dongjiao, et al. Image Edge Detection Based on the Euclidean Distance Graph [J]. Journal of Image and Graphics, 2013, 18(2): 176-183.)