1. 程式人生 > 其它 >基於MATLAB的人民幣識別系統

基於MATLAB的人民幣識別系統

1、選圖背景

  • 隨著科技的發展,影象識別技術在計算機視覺領域起著越來越重要的作用,現已被應用到金融、軍事、公安刑偵、生物醫學、機器視覺等各個領域;
  • 隨著國民經濟的快速發展,人民幣大量流通市場,商業交易都離不開人民幣;
  • 開發出一種高效率、低成本、通用性強的人民幣識別系統,能夠減少大量的人力資源,提升資金的週轉速度,十分具有前景。

2、研究內容及方法

2.1 研究內容

  1. 結合影象處理方面的知識對人民幣進行研究分析。
  2. 對紙幣影象進行預處理工作,改善影象質量,提高識別準確率。
  3. 以第五版人民幣作為研究目標,分析特徵區域,完成對紙幣面值的識別。
  4. 使用MATLAB實現

2.2 研究方法

2.2.1預處理

對影象進行灰度化、邊緣檢測、旋轉變換(Radon變換)等操作

  1. 灰度處理:將彩色影象轉化為灰度級相等的影象,灰度變換是為了簡化資訊,在用灰度影象進行後續分析能夠減少大量計算量。

  2. 邊緣檢測:邊緣檢測是為了找到影象中畫素變化明顯的點的集合,定點陣圖像特徵區域,影象特徵區域定位指的是在初始影象中確定出紙幣影象所在的位置。

  3. 旋轉變換傾斜校正):由於紙幣擺放、拍攝角度問題會使紙幣影象一定程度的傾斜或幾何變形,需要進行傾斜校正。採用雷登變換。

  4. 腐蝕:主要是為了縮減影象中的白色區域,用imerode函式實現影象腐蝕。

  5. 閉運算:能消除小的空洞,填充凹角並填補輪廓線中的斷裂,使輪廓線更光滑。用imclose函式實現閉運算。

  6. 二值化:二值影象(黑白影象)指的是影象中每個畫素點只有黑、白兩個值或者說灰度等級只有兩種的影象,二值圖的灰度範圍是0或者255,二維矩陣由0、1組成,“0”表示黑色(灰度值等於0),“1” 表示白色(灰度值等於255),資料型別為1位二進位制位。二值影象具有佔用空間小、資訊掩藏性強的特點。

  7. 紙幣定位—邊緣切割:影象的定位分割是為了獲得完整、單獨的目標影象,它是影象處理中非常關鍵的一步,影象分割主要有基於區域和基於邊界分割兩種方法,本系統採用區域定位分割法。

    在紙幣識別系統中其目的是基於紙幣區域和背景區域的色調的不同,定位紙幣影象的四條邊緣線,確定紙幣在整幅影象中的具體位置,通過剪下把紙幣和背景分離。定位的準確性將直接影響到後面的特徵提取和識別。

2.2.2 紙幣面值識別

  1. 中央數字提取

    中央數字提取流程

  2. 模板匹配識別

    該方法是基於中央位置(即數字部分)來進行區分。通過上一步驟把紙幣單獨剪切出來後,根據不同幣值人民幣長寬比例不同,使用 imcrop 函式把中央帶有特徵數字的區域剪切出來。接下來,呼叫rgb2gray函式把提取的部分轉換成灰度影象,使用 medfilt2 函式進行中值濾波除去噪聲並進行明暗反轉。se=strel('rectangle',[a,b]),使用strel函式建立一個a*b的矩形結構元素,呼叫imdilate函式和imerode函式對結構元素se進行閉運算(先膨脹後腐蝕)。

  3. 長度對比識別

    對降噪後的圖片進行二值化處理,得到黑白影象並進行顯示。找出數字區域左右邊界的第一個黑點,計算出兩個黑點之間的水平距離,即為中央數字的寬度,計算出數字寬度與整張紙幣長度的比值。[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
  4. 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

演示視訊:https://www.bilibili.com/video/BV1RW4y1E7dL/