http://www.eeworld.com.cn/qrs/2015/1023/article_25403.html
2.1 項目背景及技術難點
-
項目名稱:智能交通:汽車車牌定位識別;
-
項目內容:本項目是在FPGA前端實時完成圖像采集、預處理、車牌定位和字符分割以及數據傳輸工作,在后端完成車牌字符識別工作。FPGA接收采集的實時圖像,在內部采用流水線方式依次完成圖像預處理、車牌定位和車牌字符分割工作,最后通過高速USB端口將已分割字符傳輸到后端進行字符識別。其中,圖像采集和數據傳輸是通過EDK內嵌的MicroBlaze內核控制實現的,這簡化了FPGA內部控制電路;而FPGA內部信號處理電路采用的流水線方式,大大提高了系統實時處理視頻幀的能力。
-
技術難點:(1)車牌自身特征的多樣性及外界環境的不確定性導致的定位識別不准確;(2)圖像處理算法的較高計算復雜度導致的實時性不滿足。
2.2 關鍵技術及創新點
-
算法:采用了一種基於邊緣檢測和區域搜索的車牌定位算法,該算法直觀且運算量小,利於硬件實現;
-
電路實現:FPGA內部采用流水線方式依次完成圖像處理、車牌定位和字符分割三部分工作,極大地提高了對視頻流的實時處理能力;
-
嵌入式控制:采用Xilinx EDK內嵌的MicroBlaze軟核控制完成圖像采集和數據傳輸工作,簡化了FPGA內部的控制電路。
2.3 性能指標及可行性分析
-
設定的性能指標:我國電視視頻標准采用PAL制,其幀頻為 25,因此設定本系統所需達到的處理速度為25幀/秒,並可以將字符分割信息通過USB端口上傳至PC機或其它設備。
-
可行性分析:本方案已經過MATLAB仿真,結果表明可以有效進行車牌的定位、分割和識別。在保證車牌識別效果的前提下,通過對算法結構進行改進,結合流水線方式的FPGA實現,可以達到實時性要求。另外,本小組成員均有豐富的FPGA設計功底和扎實的信號處理理論知識,有能力保證順利完成交付該項目。
二、軟件設計方案概述
汽車車牌識別系統一般分為三個部分,即車牌區域定位、車牌字符分割和車牌字符識別。為了突出圖像的有用特征,通常在車牌定位之前需要對所拍攝圖像進行預處理,以達到更好的定位效果。圖3—1為本項目所設計軟件方案流程圖,其中車牌區域定位部分設計采用了一種基於邊緣檢測和區域搜索的車牌定位分割算法,其仿真結果見附錄。
圖3—1 軟件設計方案流程圖
3.1 圖像預處理
在車牌定位之前對攝像機所拍攝圖像進行預處理,是指突出圖像中的有用信息,抑制可能對后續步驟產生不利影響的無效信息,以達到減小運算復雜度、提高識別效果的目的。圖像預處理主要包括圖像灰度化、去噪和灰度拉伸三部分。
3.1.1 RGB2Gray
攝像機所拍攝的圖像一般為RGB彩色圖像,每個像素包括R、G、B三種顏色分量,每個顏色分量用8 bit表示,即24 bit表示一個像素。而灰度圖像是指只包含亮度分量的圖像,每個像素用8 bit表示,亮度值量化為256級。對於車牌識別,灰度圖像足以滿足要求,且相對於RGB圖像具有計算復雜度低、所需存儲空間小的優點。因此,可以把RGB彩色圖像轉換為灰度圖像,計算公式為Gray = 0.299R + 0.587G + 0.114B。
3.1.2 圖像去噪
圖像的能量主要集中在低頻部分,高頻部分多為邊緣信息,而噪聲一般也集中在高頻部分,因此需要對圖像進行去噪,以使得車牌定位中進行邊緣檢測時得到更好的效果。中值濾波是一種非線性圖像處理方法,它將一個窗口內所有像素排序后的中間值代替窗口中心的像素值,能夠在去除噪聲的同時有效保護圖像邊緣,因此本方案中選用中值濾波方法進行去噪。
3.1.3 灰度拉伸
為了增強車輛圖像和牌照圖像的對比度,有利於牌照定位和識別,需對去噪后的圖像進行灰度拉伸。灰度拉伸是指將輸入圖像中某點 的灰度 ,通過分段映射關系T,映射成灰度 后輸出,即 。
3.2 車牌定位
車牌定位是指從圖像中正確的識別分割出車牌區域,其基本原理是根據目標與背景的先驗知識,對圖像中的車牌區域進行標記定位,並完成有效分割。圖像中車牌區域具有明顯的紋理特征,含有豐富的邊緣信息,如果對整幅圖象進行邊緣檢測處理,則車牌區域相對於其他非車牌區域含有更多的細節邊緣信息。因此,本方案中選用了一種基於邊緣檢測和區域搜索的車牌定位分割算法,該方法直觀且運算復雜度較低,利於硬件實現。
3.2.1 Sobel邊緣檢測
邊緣檢測的實質是采用某種算法來提取出圖像中對象與背景間的交界線,一般包括濾波、圖像增強、檢測和定位四部分。Sobel邊緣檢測是指將Sobel算子與給定圖象進行模板卷積,然后分析卷積結果圖象中各邊緣點的變化方向,並求取圖象的局部最大值點作為邊緣輸出,這樣即可獲得圖像的邊緣信息。相對於一般的簡單卷積並閾值化處理方法,Sobel邊緣檢測能夠減少雜亂信息,抑制噪聲,更好地突現車牌區域的紋理特征,而且其計算復雜度較低,硬件實現難度較小,因此我們選用Sobel邊緣檢測提取圖像邊緣信息。
3.2.2 車牌區域搜索
車牌區域存在相對連續的多次灰度跳變,且兩次跳變間距在一定范圍之內,而非車牌區域則一般不具有這個特征。根據這種特征,我們采用行掃描和列掃描的方式來分別搜索確定車牌區域的上下邊界和左右邊界。
行掃描確定上下邊界是指從左往右、從上而下對每行像素進行掃描檢索,若遇到跳變點則計數加1,若某行中跳變數大於閾值M,則認為是可能的拍照區域,並設其為下邊界;若跳變數大於M的行數超過閾值N,則認為時真實牌照區域,並把最后一行設為上邊界,否則,行計數歸0並重新尋找牌照下邊界。
列掃描確定左右邊界是指對已確定上下邊界的車牌區域從左往右搜尋左邊起始點、從右往左搜尋右邊起始點,遇到第一個跳變點即停止並記錄,然后跳轉到下一行。這樣既可獲得車牌區域的左右邊界。
3.2.3 候選車牌區域判定
通過上述方法搜索得到的候選區域可能不止一個,因此需要對它們進行判別來確定真正的車牌區域。車牌區域的判定標准包括車牌尺寸大小和長寬比例、像素分布關系、二值化投影是否為波峰-波谷分布等,由於車牌尺寸為已知條件,所以本方案中采用尺寸大小和長寬比例作為判定標准來確定真正的車牌區域。
3.3 車牌字符分割
由於牌照圖像很有可能出現向左或者向右的傾斜,且任何一種傾斜都會影響牌照字符的划分,所以需要對搜索出來的車牌區域進行預處理,以達到更好的字符分割識別效果。
3.3.1 車牌區域預處理
車牌區域預處理一般包括二值化、幾何變換等步驟,其效果的好壞將直接影響后續的字符分割識別工作。牌照區域由前景字符和背景色組成,二值化即相當於確定合適的閾值分離字符和背景,這樣可以大大減小后續工作的計算復雜度;幾何變換是指通過對車牌圖像進行縮放、旋轉、平移等,矯正車牌的形變及傾斜,達到增大字符分割、識別率的目的。
3.3.2 字符分割
字符分割是指把車牌區域圖象分割成單個字符圖像,它屬於圖象分割問題。字符分割是是特征提取和模式匹配的前提,並直接關系到后續的字符識別效果,因此字符分割是車牌識別中關鍵的一步。本方案選用一種新的字符分割方法,即輪廓特征與垂直投影聯合分割法,其基本原理如下:字符之間的分界處往往是投影比較少的地方,分割點處的投影接近零或者為零,因此可以利用這種特點進行粗略的分割得到第一組分割點,然后從左到右從上到下、從下到上依次對每列進行掃描獲得字符的上輪廓和下輪廓,分割點在上輪廓曲線上表現為波谷,在下輪廓曲線上表現為波峰,最后根據三組分割點的相對位置確定真正的分割點。相對於一般的垂直投影法,該方法能夠很好地解決車牌字符圖像的輕度污染導致的字符粘連問題。
3.4 車牌字符識別
本方案中采用模板匹配法進行字符識別,其基本原理是先對字符分割后的二值化圖像縮放到字符數據庫中模板的大小,然后與所有模板進行匹配,最后選取最佳匹配作為結果。
三、硬件設計方案概述
4.1 FPGA設計總體方案及模塊分析
圖4—1為本項目硬件原理框圖。CCD攝像頭采集的視頻圖像輸入視頻解碼芯片,經過視頻解碼轉換成數字信號存入FPGA的Block RAM中;FPGA芯片內部電路依次完成圖像預處理、車牌定位和車牌字符分割三個功能,三部分采用流水線方式實現,這將大大提高圖像的處理效率;最后將分割出來的車牌字符通過高速USB端口傳入后端,進行后續的字符識別。其中,視頻解碼芯片及USB數據傳輸的控制是通過FPGA內部Microblaze軟核來實現的。
圖4—1 系統硬件框圖
4.1.1 圖像采集模塊
本系統圖像采集模塊包括PAL制CCD攝像頭和飛利浦公司的SAA7113視頻解碼芯片,通過MicroBlaze軟核控制視頻解碼芯片,將拍攝的模擬視頻信號轉換成數字信號。SAA7113將解碼、采樣和量化集成於一體,支持隔行掃描和多種數據輸出格式,並內置了A/D轉換電路、預處理電路及I2C接口,通過I2C接口對內部寄存器進行配置,即可實現對芯片內部電路的控制。
4.1.2 RGB2Gray模塊
圖4—2 RGB2Gray硬件框圖
圖像采集模塊輸出的RGB彩色圖像轉換成灰度圖像的硬件框圖如圖4—2所示,該模塊由三個乘法器和一個加法器組成,其中權重小數在FPGA中采用XQN格式定點數表示。
4.1.3 圖像去噪模塊
本方案中圖像去噪模塊是通過對圖像進行中值濾波實現的,圖4—4為其硬件框圖。圖4—3為一個3×3的濾波模板,不同的模板即可得到不同的濾波效果。如圖4—4所示,采用移位寄存器對圖像數據緩存輸出,將圖像數據和模板進行並行一維卷積即可得到三個卷積結果,輸入加法器即可得到濾波結果,其中buffer的大小為圖像的列數。