天天看點

【人民币識别】基于matlab GUI人民币序列号識别【含Matlab源碼 908期】

本文描述的人民币序列号識别系統實作了從圖像預處理到識别結果的過程, 而序列号識别是本文的重要内容.以序列号區域為研究對象, 主要包括圖像預處理、圖像分割以及序列号識别等過程。

1 圖像預處理

人民币圖像總體上來說灰階偏高, 灰階值基本上都大于150 (對8位256灰階級而言) , 是以為了突出特征子產品 (人民币序列号部分) , 處理時常常采用規定化處理, 首先判斷整幅圖像的灰階分布情況 (偏白或偏暗) , 然後将所需圖像的灰階直方圖進行變換.

本系統以較複雜的人民币紙币序列号識别功能實作過程為研究模型, 以人民币正面正向左下角雙色異形橫号碼區作為特征子產品來介紹後續的圖像處理與識别處理過程.首先識别出紙币的正面正向 (由磁性傳感器檢測信号識别) , 然後将左下角包含序列号的一個大體區域P0提取出來, 以後的圖像處理工作就以P0為對象, 進而減少了所需處理的資料量.

圖1 擷取的灰階圖像

圖2 序列号特征區域

然後利用圖像增強技術處理序列号區域P0, 由于其較小, 像素數量不多, 可采用空間域圖像增強的方法, 主要在以下兩方面對P0進行增強處理:一是采用灰階修正的方法突出圖像中的序列号部分, 二是去除圖像中邊緣部分的噪聲和内部的孤立點噪聲, 以達到增強的目的.

步驟1序列号子產品的灰階修正

針對流通人民币新舊程度的差異, 首先對P0進行灰階統計, 然後根據總體灰階的不同來設定不同的灰階變換域值, 進而通過灰階修正達到對P0部分進行增強的目的.

步驟2序列号子產品的噪聲去除

因為噪聲一般頻率都比較高, 在頻率域内用低通濾波器進行圖像平滑, 空域濾波是通過模闆運算進行的.線性平滑濾波器對去除高斯噪聲有很好的效果, 且在大多數情況下, 對其它類型的噪聲也有很好的效果, 但由于均值濾波中要求取各像素灰階的平均值, 是以濾波後會使圖像中的尖銳處、邊緣處、不連續的點和細節部分變得模糊, 造成了圖像資訊的丢失.

在圖像不連續的邊緣部分, 圖像存在灰階值的跳躍與突變, 本文采用改進的均值濾波的思想是:通過微分算子求出圖像的不連續點, 在濾波後, 把這些點的灰階值恢複到平滑濾波前, 其它部分平滑濾波處理後的值不改變, 也就是隻平滑圖像非邊緣部分, 邊緣部分像素灰階值保持不變.改進後的均值濾波算法如下:

(1) 先對原圖進行局部均值濾波, 得到原圖均值濾波圖像.

(2) 對原圖進行銳化處理.木文選用拉普拉斯模闆對圖像進行銳化, 求取原圖較細的邊緣.

(3) 對銳化圖像進行簡單的二值化, 得到邊緣二值圖像.采用比較類别方差法選取門檻值.

(4) 去除邊緣二值化圖像的孤立點.

孤立點:在M×N的模闆内 (M、N分别為模闆的長和寬) , 如果其内含的位置居中的 (M-1) × (N-1) 子模闆記憶體在像素點, 且此子模闆外、M×N模闆内沒有像素點, 即認為此子模闆内的點為孤立點.

(5) 利用去除孤立點後的邊緣二值化圖像資訊, 把在第 (1) 步中均值濾波後圖像的邊緣點的灰階值恢複到濾波前.

在對灰階修正後的噪聲圖像去除噪聲之前, 應對其進行二值化變換, 其中二值化的域值應根據步驟 (1) 中統計的P0灰階作相應改變.

經過灰階修正與去噪後的效果圖如圖3、圖4所示.

圖3 灰階修正效果圖

圖4 去噪後的二值化圖像

【人民币識别】基于matlab GUI人民币序列号識别【含Matlab源碼 908期】

2 圖像分割

圖像分割的目的是把圖像空間分成一些有意義的區域, 最常用的分割方法是把圖像灰階分成不同的等級, 然後用設定灰階門限的方法确定有意義的區域或欲分割的物體之邊界.其中, 一種最簡單實用的方法是對灰階修正後的圖像進行二值化變換, 突出所關心的區域, 即進行如下變換:

其中, f (x, y) 為變換前圖像, f1 (x, y) 為變換後圖像, T為所選取的域值.在此, 圖像分割的目的是獲得一個個的字元子產品, 作為後續的識别對象.其分割步驟如下:

将包含序列号的區域 (即上述提取的特征子產品) 進行二值化處理, 突出字元序列;

對二值化後的圖像進行去噪處理, 包括邊緣噪聲和内部非字元點噪聲;

字元分割:搜尋字元序列右上角起點, 然後根據所規定的數字子產品和字母子產品的大小, 得到字元相對起點的偏移量, 進而提取出最右邊的一個字元;

針對上一步所提取的最右邊第一個字元後的圖像, 循環執行3) , 直到所有字元分割完畢, 處理過程如圖5所示.

【人民币識别】基于matlab GUI人民币序列号識别【含Matlab源碼 908期】

圖5 序列号字元分割過程

3 序列号的SVM識别過程

将次序最小優化算法建構的支援向量機用于序列号識别的步驟如下:

給定滿足超立方體限制和超線性限制的拉格朗日乘子初始值, 一般取αi=0.

從第一個訓練樣本開始.

計算訓練樣本的KKT條件, 找到違反KKT條件的樣本點對應的拉格朗日乘子, 将其作為兩個拟優化的拉格朗日乘子之一.

第二個拉格朗日乘子的挑選根據最大優化步數來定, 即在原樣本集中滿足max f (x1) -f (x2) +y1-y2的樣本點對應的拉格朗日乘子.至此, 拉格朗日乘子α1、α2挑選完畢, 在保持其餘拉格朗日乘子不變的情況下, 形成一個最小規模的二次規劃問題 (隻含兩個拉格朗日乘子) , 求解上述二次優化問題, 得到一對新的α1new、α2new.

最後一個樣本計算結束, 進行下一步;否則, 傳回3) , 計算下一個樣本.

将0<α<C所對應的樣本構成一個新的樣本集, 周遊這個新的訓練樣本集, 不存在違反KKT條件的樣本, 則得到整個問題的最優解, 進行下一步;否則, 針對新的樣本集進行優化計算, 轉2) .

得最優分類規則函數.

次序最小優化算法實作簡單、收斂速度快、記憶體需求小, 是目前最好的支援向量機訓練算法之一.

【人民币識别】基于matlab GUI人民币序列号識别【含Matlab源碼 908期】

1 matlab版本

2014a

2 參考文獻

[1] 蔡利梅.MATLAB圖像處理——理論、算法與執行個體分析[M].清華大學出版社,2020.

[2]楊丹,趙海濱,龍哲.MATLAB圖像處理執行個體詳解[M].清華大學出版社,2013.

[3]周品.MATLAB圖像處理與圖形使用者界面設計[M].清華大學出版社,2013.

[4]劉成龍.精通MATLAB圖像處理[M].清華大學出版社,2015.

[5]李文宏,田文娟,王霞,駱科學.基于支援向量機的人民币紙币序列号識别方法[J].資訊與控制. 2010,39(04)

繼續閱讀