基於MATLAB的人民幣識別系統
1、選圖背景
- 隨著科技的發展,影象識別技術在計算機視覺領域起著越來越重要的作用,現已被應用到金融、軍事、公安刑偵、生物醫學、機器視覺等各個領域;
- 隨著國民經濟的快速發展,人民幣大量流通市場,商業交易都離不開人民幣;
- 開發出一種高效率、低成本、通用性強的人民幣識別系統,能夠減少大量的人力資源,提升資金的週轉速度,十分具有前景。
2、研究內容及方法
2.1 研究內容
- 結合影象處理方面的知識對人民幣進行研究分析。
- 對紙幣影象進行預處理工作,改善影象質量,提高識別準確率。
- 以第五版人民幣作為研究目標,分析特徵區域,完成對紙幣面值的識別。
- 使用MATLAB實現
2.2 研究方法
2.2.1預處理
對影象進行灰度化、邊緣檢測、旋轉變換(Radon變換)等操作
-
灰度處理:將彩色影象轉化為灰度級相等的影象,灰度變換是為了簡化資訊,在用灰度影象進行後續分析能夠減少大量計算量。
-
邊緣檢測:邊緣檢測是為了找到影象中畫素變化明顯的點的集合,定點陣圖像特徵區域,影象特徵區域定位指的是在初始影象中確定出紙幣影象所在的位置。
-
旋轉變換(傾斜校正):由於紙幣擺放、拍攝角度問題會使紙幣影象一定程度的傾斜或幾何變形,需要進行傾斜校正。採用雷登變換。
-
腐蝕:主要是為了縮減影象中的白色區域,用imerode函式實現影象腐蝕。
-
閉運算:能消除小的空洞,填充凹角並填補輪廓線中的斷裂,使輪廓線更光滑。用imclose函式實現閉運算。
-
二值化:二值影象(黑白影象)指的是影象中每個畫素點只有黑、白兩個值或者說灰度等級只有兩種的影象,二值圖的灰度範圍是0或者255,二維矩陣由0、1組成,“0”表示黑色(灰度值等於0),“1” 表示白色(灰度值等於255),資料型別為1位二進位制位。二值影象具有佔用空間小、資訊掩藏性強的特點。
-
紙幣定位—邊緣切割:影象的定位分割是為了獲得完整、單獨的目標影象,它是影象處理中非常關鍵的一步,影象分割主要有基於區域和基於邊界分割兩種方法,本系統採用區域定位分割法。
在紙幣識別系統中其目的是基於紙幣區域和背景區域的色調的不同,定位紙幣影象的四條邊緣線,確定紙幣在整幅影象中的具體位置,通過剪下把紙幣和背景分離。定位的準確性將直接影響到後面的特徵提取和識別。
2.2.2 紙幣面值識別
-
中央數字提取
中央數字提取流程
-
模板匹配識別
該方法是基於中央位置(即數字部分)來進行區分。通過上一步驟把紙幣單獨剪切出來後,根據不同幣值人民幣長寬比例不同,使用 imcrop 函式把中央帶有特徵數字的區域剪切出來。接下來,呼叫rgb2gray函式把提取的部分轉換成灰度影象,使用 medfilt2 函式進行中值濾波除去噪聲並進行明暗反轉。se=strel('rectangle',[a,b]),使用strel函式建立一個a*b的矩形結構元素,呼叫imdilate函式和imerode函式對結構元素se進行閉運算(先膨脹後腐蝕)。
-
長度對比識別
對降噪後的圖片進行二值化處理,得到黑白影象並進行顯示。找出數字區域左右邊界的第一個黑點,計算出兩個黑點之間的水平距離,即為中央數字的寬度,計算出數字寬度與整張紙幣長度的比值。[8]
參考表1所示第五版紙幣基本特徵,根據數字寬度:中央數字寬度最大的圖片即為100元,依次類推寬度最小的為1元;根據數字長度和整張紙幣長度的幣值:幣值最大的為100元,依次類推比值最小的為1元。
幣值種類 100元 50元 20元 10元 5元 1元 主色調 紅 綠 棕 藍綠 紫 橄欖綠 規格 長156mm 寬76mm 長150mm 寬70mm 長145mm 寬70mm 長140mm 寬70mm 長135mm 寬63mm 長135mm 寬62mm 中央數字長度 38mm 25mm 24mm 22mm 12mm 7mm 中央數字長度/紙幣長度 0.243 0.167 0.166 0.157 0.089 0.052 -
R、G、B對比識別
RGB色彩就是物理學裡光的三原色,人類視覺可以感知的所有顏色都可以通過R、G、B(不同亮度度)互相混合得到。同樣,任何一種顏色都可以被分解成R、G、B(不同亮度)三種顏色。[9]
提取出數字區域RGB分量,呼叫mean函式,使用公式返回每個R、G、B分量的平均值,結合不同紙幣特徵區域R、G、B的不同,通過分量之間作差,判斷紙幣面紙大小
2.2.3 GUI 介面製作
GUI(圖形使用者介面)是有各種圖形物件(如視窗、按鈕、文字和選單)組成顯示的計算機操作使用者介面。使用者通過運算或控制程式碼啟用圖形物件,引起一系列程式程式碼的執行,結果通過使用者介面進行反饋。MATLAB GUI是MATLAB中的一個極具實用性、互動性、美觀性的功能,將流程化的MATLAB程式包裝進一個簡單易懂的圖形中去,把繁瑣的過程簡潔化,從而方便了使用者的使用過程,讓程式的執行變得更加直觀。同時,GUI中資訊、資料的傳輸效率非常高,結果執行與反饋便捷、準確,開發人員不需要在介面程式碼的設計上花費太多精力,為使用MATLAB的程式設計者提供了一個簡單的開發環境,為使用者帶來了良好的體驗,提高了開發者的工作效率。
本系統設計的平臺如下圖所示,主介面上顯示了待識別影象、旋轉校正後的影象、擷取面額影象、處理後圖像,設定“讀取鈔票”功能按鈕,點選按鈕讀入待識別紙幣影象即可實現對應的功能。
3、結果展示
4、原始碼獲取方式
程式設計環境:Matlab 2021b(適用2016以上任何版本)
下載連結:https://mbd.pub/o/bread/mbd-Y5yYmJtx 或https://www.jdmm.cc/file/2708227