劉馨茹 易博文 李玲香 江 華
基于Python的車牌識別系統實現
劉馨茹1易博文1李玲香1江 華2
(1.湖南科技學院,湖南 永州 425199;2.惠州學院,廣東 惠州 516000)
車牌識別技術主要是以圖像分割理論和圖形識別理論為基礎,通過對采集到的車牌圖像進行預處理、車牌定位,并將車牌部分的圖像截取后,進行矩形校正,然后進行字符分割歸一化處理,最后可以通過神經網絡或者模式識別技術識別出車牌上的字符。文章在分析并參考現有車牌識別技術的基礎上,運用Python+Open CV技術,選取合適的圖像處理方法實現了的車牌識別功能。系統除了具有車牌識別的信息處理功能,且有較高的識別正確率和較快的識別速度,還能進行批量車牌的識別處理,并生成識別記錄Excel文件上傳至云服務的數據庫中,為進一步實現車牌識別系統智能化提供支持。
Python;車牌識別;字符分割;SMV
汽車牌照號碼是車輛的“身份”標識,牌照自動識別技術可以在汽車不做任何改動的情況下實現汽車“身份”的自動登記及驗證,該技術已經應用于公路收費、停車管理、稱重系統、交通誘導、交通執法、公路稽查、車輛調度、車輛監測等各種場合。
車牌識別系統是計算機視頻圖像識別技術在車輛牌照識別中的一種應用,通常一個車牌識別系統主要包括以下這四個部分:車輛圖像獲取、車牌定位、車牌字符分割、車牌字符識別[1]。截至今日,國內外對于車牌自動識別系統技術的研究已經取得了較為巨大的進步,并且其中較為成熟的產品已經投入使用,而且目前最新的技術水平為字母和數字的識別率可達到99.7%,漢字的識別率可達到99%[2]。本文系統旨在保證較高的識別準確率的基礎上,實現簡單的車牌管理功能。系統可適用于大規模港口、倉庫、大型商場、居民小區、高校和政府部門的停車場管理。
車牌識別系統一般的處理步驟:車牌采集→車牌預處理→車牌定位→車牌校正→字符分割→字符識別→結果輸出。
車牌定位是車牌識別的首要環節,精確的車牌定位能夠直接對后續的車牌校正、分割和字符識別功能產生重要影響。常用的定位方式有基于紋理和基于顏色兩種方式。
基于紋理定位方式的原理是利用車牌的規格固定、字符位置統一的特征。由于車牌的規格是固定的,二值化后的圖像可以通過投影的辦法來篩選車牌的位置。
基于圖像顏色定位方式的原理是根據車牌的顏色特征來定位車牌區域。該方法首先是將RGB圖像轉換為HSV(Hue Saturation Value,HSV)空間中,然后根據所有的像素點限定來確定像素點是否保留。該方式從原始圖像中過濾掉與標準車牌底色顏色不同的像素,盡量只保留與車牌的背景顏色相近的像素,因而過濾掉背景中的干擾成分。
基于紋理定位方式相比于基于顏色定位方式有以下不足:(1)基于紋理定位車牌方式操作方法比較復雜,計算速度緩慢;(2)當圖像中的車牌是傾斜的時候,基于紋理定位車牌方式對車牌進行掃描確定車牌范圍的時候會存在比較大的偏差;(3)基于紋理定位車牌方式的抗噪能力比較弱,當車牌出現較多污點或者采集到的車牌圖像顏色偏差較大的時候,采用投影的方法進行車牌定位會產生比較大的影響。所以基于顏色定位車牌,準確率會相對較高[3],要求的條件也比較少。
車牌矯正能使車牌模糊的圖像、傾斜圖像的識別效果得到改善。車牌傾斜校正算法主要有Hough變換法和Radon變換法以及仿射變換法[4]。
基于Hough變換的車牌圖像傾斜校正的原理主要是利用Hough變換檢測車牌的邊框,確定邊框直線的傾斜角度,根據傾斜角度旋轉,獲得校正后的圖像。
基于Radon變換的車牌傾斜校正的原理是將采集到的車牌圖像進行多方向投影,進而通過分析各方向的投影特性確定車牌的傾斜角度,具體步驟和Hough變換類似。
仿射變換是從二維坐標到二維坐標之間的線性變換,它保持了二維圖像的“平直性”(直線經過變換之后依然是直線)和“平行性”(二維圖像之間的相對位置保持不變,平行線依然是平行線,且直線上點的位置順序保持不變),任意的仿射變換都能表示為乘以一個矩形(線性變換)再加上一個向量(平移)的形式,效率較高。
Hough變換和Radon變換對于直線的檢測速度比較慢,不能做到實時控制,同時精確度也不高,甚至因為得不到期望的信息而做出錯誤的判斷,這將導致產生較多的冗余數據。而仿射變換可以通過一系列原子變換的復合來實現,包括平移、縮放、翻轉、旋轉和剪切。空間變換對應矩陣的仿射變換,一個坐標通過函數變換的新的坐標位置。仿射變換操作簡單,效率高,優于其他校正算法。
字符分割是車牌識別中的關鍵一環,不僅需要精確的車牌定位和準確的車牌校正對其進行條件準備,同時自身也要為后續的字符識別做好準備工作。目前常用的字符分割算法有基于聚類連通分割法、基于模板匹配的分割法和投影法[5]。
基于聚類連通分割法的原理是利用車牌字符的連通性,將車牌各個連通的字符形成一個個整體的區域。
基于模板匹配的分割法原理是利用車牌本身固有特性,比如說車牌字符的幾何特性、位置特性設計出具有一定字符寬度和字符間隙的模板,之后再將模板在要分割的車牌區域內循環滑動,計算出模板中車牌字符區域內的像素和字符間隔區域內像素的差值或者比值。當差值和比值在一定的范圍內最大時為字符的分割點,但是當模板設計得不合理或者存在誤差時就會出現字符分割的位置不準確的情況。
基于投影法分割法的原理是利用車牌字符之間存在的固定的間隙從而對字符進行分割。由于其操作簡單、計算量小的特點,投影法是目前車牌識別中字符分割算法最常用的方式之一。
車牌中存在漢字,會有左右結構和上下結構的字符出現,導致使用聚類連通的方式分割字符會出現將一個字符分割為兩個字符的情況。采用模板匹配的方式對字符進行分割需要精確的模板設計,操作過于復雜。所以采用基于投影法的車牌字符分割,由于其操作簡單、計算量小,用投影法對車牌進行字符分割,只需要對車牌區域進行兩次不同方向的投影,通過水平投影可以大致判斷車牌中字符的上下邊界,通過垂直投影可以大致判斷車牌中一個字符的左右邊界。
字符識別是車牌識別系統的核心環節,車牌字符識別的準確率是衡量車牌識別系統的一個很重要的指標。常用的字符識別算法有模板匹配字符識別算法、神經網絡字符識別算法、支持向量機。
模板匹配字符識別算法是圖像識別中的經典算法之一,模板識別通過提取大量模板的字符特征,在獲取到目標樣本的字符特征后和模板的特征進行比對,從而選出該字符。但是這種方法對不規則字符的魯棒性差,且抗干擾能力也較差。
神經網絡字符識別算法的主要思想和模板匹配類似。其主要通過神經網絡的學習和記憶功能來實現。但是過于依賴初始樣本,并且容易陷入局部最優,收斂速度慢,因此采用神經網絡識別字符的算法仍需要改進。
支持向量機的主要思想和前兩者相似,都是先得到樣本特征,進行訓練,然后再分類。SVM[6](Support Vector Machine,SVM)是用得最多的分類方法,一般大多適合于二分類問題。
在車牌字符識別過程中,當出現字符變形、扭曲的情況時,采用模板匹配字符識別法容易出現結果偏差,而采用神經網絡算法會過于依賴初始樣本的選擇,條件過于復雜,學習成本較高。相比神經網絡算法,SVM的運算效率更高,更能處理小樣本的識別中的困難,因此SVM被廣泛地運用于字符識別中。
本文在國內外成功的車牌識別系統案例基礎上,采用Python以及OpenCV實現一款自動車牌識別系統。該系統能識別并記錄車輛的牌照號碼、出入的具體時間,還可與自動門、欄桿機等控制設備相結合,從而實現車輛的自動管理。系統也能將指定的牌照信息上傳至系統,利用系統自動識別進出口車輛的車牌信息并對數據庫進行查詢,被認證的車輛可以自動放行。本文系統主要由車牌識別模塊、車牌搜索模塊、車牌比對模塊和車牌數據庫搜索模塊構成,其系統總體框圖如圖1所示。

圖1 車牌識別系統總體框架
車牌識別模塊是車牌識別系統核心部分,其主要功能是能夠讀取系統中的車牌圖像或能調用攝像頭設備進行車牌識別,輸出識別的結果,并將識別記錄存入后臺數據庫系統。
車牌搜索模塊是用戶將采集到的車牌圖像在本地存儲的車牌庫中進行車牌搜索,判讀該車輛是否被本車牌系統記錄過,以便于統計車輛數據。
車牌比對模塊是將需要比對的車牌圖像分別輸入系統,判斷是否為同一輛車。
車牌數據庫搜索模塊主要功能是用戶通過登錄后臺數據庫,對上傳的數據進行批量輸出,能對后臺數據進行簡單的管理,實現關鍵字查詢等操作。
車牌識別系統可以從整體上分為前端和后端部分,前端部分主要是用戶界面部分,界面部分主要采用Tkinter ,Tkinter是Python的GUI框架,Tkinter內置于Python庫中,無需安裝相關依賴,其基本空間能夠滿足本系統所有需求。Python采用Tkinter可以快速地創建GUI應用程序,前后端同時采用Python開發能夠節省開發成本。Tkinter實例代碼如下:

運行結果如圖2所示。
圖2 Tkinter實例
車牌識別模塊能對不同方式采集到的車牌圖像進行圖像信息處理,最后輸出處理結果,其信息處理過程如下:將不同方式采集到的車牌圖像在本地讀取后,先對圖像進行預處理,包括對圖像進行尺度變換、高斯去噪、圖像變平滑;接著將預處理好的圖像以顏色定位算法為主,紋理定位算法為輔結合的方式進行定位車牌,在獲取到車牌位置后,將截取出來的圖像進行傾斜識別,若存在角度傾斜時,需采用仿射變換對其進行矩形校正;然后對無傾斜的圖像采用投影法進行車牌字符分割;最后將分割好的字符圖像采用雙線性插值法進行歸一化處理[7],使之變為尺寸一致的圖像,便于后續的字符識別,將SMV字符識別的結果通過界面進行輸出,同時將識別記錄存入后臺數據庫。其流程圖如圖3所示。

圖3 車牌識別處理流程圖
批量識別的文件夾中的圖像是循環讀取文件中的文件名稱,將文件名稱傳入車牌識別系統。系統自動讀取文件路徑開始循環進行車牌識別,每識別一條數據就將數據同時在本地生成Excel以及在后臺數據庫生成對應記錄,便于后續數據庫搜索系統對數據進行查詢操作。
車牌搜索模塊的主要實現方式是先將獲取到目標車牌圖像進行識別,得出結果,再批量識別本地車牌庫中的車牌圖像,將結果進行循環比對,當兩者結果相同時,停止識別,進行結果輸出。車牌搜索流程圖如圖4所示。

圖4 車牌搜索流程圖
車牌比對模塊主要用于當車的位置被跟蹤,當同一輛車經過不同的攝像頭時,采集到的車牌圖像因此不同,可以根據車牌比對系統對不同攝像頭采集到的數據進行車牌比對,當出現相同的車牌時對結果進行輸出。這便于在智能城市系統中對某一車輛進行追蹤定位,其實現流程和車牌搜索流程類似。
車牌數據庫搜索系統主要是將先前識別過的車輛的識別時間、識別結果、識別方式存儲的結果進行查詢,支持批量查詢和關鍵字查詢,這便于準確地搜索某一車輛進入營地的時間和位置,同時便于對歷史數據進行管理。用戶在界面內進行數據庫登錄后,便可直接輸出所有車輛的出入記錄,同時支持關鍵字查詢。車牌數據庫搜索流程圖如圖5所示。

圖5 車牌數據庫搜索流程圖
本系統使用黑盒測試方法進行功能測試。通過攝像頭采集的車牌圖像時,由于在Window下調用攝像頭時會出現采集到的視頻出現屏閃現象,但不影響識別結果。測試結果如圖6所示,圖6的結果輸出能夠準確地識別出車牌的位置的圖像。

圖6 車牌識別測試效果圖
車牌搜索、比對、數據庫系統進行測試時,基本無問題出現,能夠準確地得到預期結果,其測試結果如圖7、圖8、圖9所示。

圖7 車牌搜索效果圖

圖8 車牌比對效果圖

圖9 車牌數據庫搜索效果圖
本文在分析并參考現有的車牌識別技術基礎上,選取顏色定位法、仿射變換法、直射投影法、SMV等合適的圖像處理方法實現車牌的定位、字符分割和字符識別,并通過實例驗證了所用方法的有效性。車牌批量識別是本系統的創新點,該功能便于系統的功能擴展,為進一步實現車牌識別系統智能化提供支持。
[1] 代武杰. 基于數字圖像技術的車位識別方法的研究與應用[D]. 桂林: 廣西師范大學,2018.
[2] 陳晨. 智能停車場管理系統的研究與設計[D]. 青島: 青島科技大學,2017.
[3] 么立寶. 基于Zynq的車牌識別系統的研究[D]. 大連:大連海事大學,2014.
[4] 張玉祖,羅素云. 傾斜車牌識別方法的研究[J]. 計算機與數字工程,2021,49(12): 2643-2657,2653.
[5] 焦慧華. 基于垂直投影分割法的車牌圖像的字符分割研究[J]. 安徽電子信息職業技術學院,2021,20(117): 17-20.
[6] WANG D, TIAN Y, GENG W, et al. LPR-Net: Recognizing Chinese license plate in complex environments[J]. Pattern Recognition Letters, 2018, 11(1): 21-25.
[7] 畢波,邵永謙,孫冬軍,等. 基于OpenCV的車牌識別[J]. 電子設計工程,2019,27(1): 37-41.
Implementation of License Plate Recognition System Base on Python
License plate recognition technology is mainly based on image segmentation theory and pattern identification theory. Through preprocessing the collected license plate image, locating the license plate, intercepting the image of the license plate, correcting the rectangle, and then normalizing the character segmentation. Finally, the characters on the license plate can be recognized through neural network or pattern recognition technology. On the basis of analyzing and referring to the existing license plate recognition technology, this paper uses Python + Open CV technology to select the appropriate image processing method to realize the license plate recognition function. In addition to the information processing function of license plate recognition, the system has high recognition accuracy and fast recognition speed. It can also recognize and process batch license plates, generate recognition record Excel files and upload them to the cloud service database, providing support for further intellectualization of license plate recognition system.
Pyhton; license plate recognition; character segmentation; SMV
TP27
A
1008-1151(2022)11-0016-05
2022-08-09
教育部社科規劃項目(20YJAZH040);湖南省自然科學基金項目(2020JJ4327);湖南省社會科學成果評審委員會課題(XSP22YBZ054);福建省自然科學基金項目(2019J01751);湖南科技學院2022 年校級教學改革研究重點項目(XKYJ2022010)。
劉馨茹(2001-),女,湖南科技學院學生,研究方向為通信工程。