陳存弟, 劉金清, 劉 引, 蔡淑寬, 何世強, 周曉童, 鄧淑敏, 吳慶祥
(福建師范大學(xué) 光電與信息工程學(xué)院 醫(yī)學(xué)光電科學(xué)與技術(shù)教育部重點實驗室, 福州 350007)通訊作者: 劉金清, E-mail: jqliu8208@fjnu.edu.cn
基于DM642的紋理檢測與Adaboost分類器相結(jié)合的車牌定位①
陳存弟, 劉金清, 劉 引, 蔡淑寬, 何世強, 周曉童, 鄧淑敏, 吳慶祥
(福建師范大學(xué) 光電與信息工程學(xué)院 醫(yī)學(xué)光電科學(xué)與技術(shù)教育部重點實驗室, 福州 350007)通訊作者: 劉金清, E-mail: jqliu8208@fjnu.edu.cn
智能交通系統(tǒng)(Intelligent Transportation System, 簡稱ITS)是一種實時、準(zhǔn)確、高效的綜合交通運輸管理系統(tǒng), 而車牌識別(License Plate Recognition LPR)技術(shù)是智能交通系統(tǒng)的關(guān)鍵技術(shù)之一. 為了在嵌入式系統(tǒng)中實現(xiàn)車牌的實時檢測, 研究了基于TMS320DM642的車牌檢測、定位與識別技術(shù). 本文提出一種基于紋理檢測和Adaboost分類器相結(jié)合的車牌定位算法, 針對該算法與DM642的結(jié)合進行了系統(tǒng)設(shè)計, 并且基于EMCV與Opencv圖像處理庫進行了代碼移植. 該系統(tǒng)很好的避免了單獨紋理檢測的定位無方向性和單獨Adaboost分類的定位不完整性的缺點, 較好的提高了定位準(zhǔn)確率, 且定位后的車牌圖像能夠基于TCP協(xié)議發(fā)送到PC服務(wù)器, 實現(xiàn)遠程的車輛車牌的定位和監(jiān)控.
TMS320DM642; 紋理檢測; Adaboost分類; EMCV; Opencv
車牌識別系統(tǒng)分為車牌定位、字符分割和字符識別三個部分, 其中車牌定位的準(zhǔn)確率直接影響后續(xù)的識別. 為了提高車牌定位的速度和準(zhǔn)確性, 國內(nèi)提出了相關(guān)的車牌定位算法, 如基于車牌紋理特征[1-7], 車牌顏色[2,4,8], 車牌固有特征分類[8,9], 數(shù)學(xué)形態(tài)學(xué)[10]等方法.
根據(jù)車牌固有的紋理特性, 本文提出一種基于紋理檢測和Adaboost[11]分類器相結(jié)合的方法實現(xiàn)車牌定位, 其中紋理檢測過程中結(jié)合圖像形態(tài)學(xué)處理實現(xiàn)車牌的粗定位, 而Adaboost分類器是繼紋理檢測后的多個粗定位區(qū)域篩選出真正存在的車牌. 最后借助EMCV和Opencv庫實現(xiàn)車牌定位算法在DM642的移植, 并以DM642平臺為客戶端, PC為服務(wù)器, 將車牌定位后的車牌圖像以幀方式傳向服務(wù)器.
盡管車牌背景復(fù)雜多變, 但是標(biāo)準(zhǔn)車牌中的7個字符排布具有不變性, 絕大部分車牌的圖像經(jīng)邊緣提取后都能清晰的看到車牌字符的紋理特性, 而且邊緣提取后的紋理相對比較密集, 字符與字符之間的間隙有規(guī)律可尋, 依據(jù)該特性能夠濾除邊緣提取后絕大多數(shù)的偽車牌區(qū)域的白像素, 結(jié)合形態(tài)學(xué)處理獲取各個粗定位車牌區(qū)域的連通域, 根據(jù)車牌的長寬比等固定特性進一步濾除大部分的偽車牌區(qū)域. 本文使用的邊緣提取算法是基于Canny算子.
如圖1所示, 紋理檢測的具體步驟:
(1) 對灰度化后的車牌圖像進行Canny邊緣檢測.
(2) 去除圖像中由白像素連接的橫長直線. 因為邊緣提取后的車牌區(qū)域中的字符極少會含有連續(xù)的橫長直線. 本文算法中規(guī)定的橫長直線定義為連續(xù)的15個像素, 如果找到則將圖像中的整行白像素置0.
(3) 針對行像素, 連接有可能的車牌區(qū)域的橫直線.步驟(2)結(jié)束后, 圖像中剩下的點都是散布的白像素, 其中車牌區(qū)域的密度最大. 這一步, 設(shè)置整幅圖像每兩點不相連白像素允許的最大跳變距離Tmax, 還設(shè)置不相連的多個兩點允許的跳變個數(shù)為Hmin. 目的是將在同一行中兩點小于Tmax并且跳變數(shù)大于Hmin的初始位置連接起來. 關(guān)于Tmax的設(shè)置, 由于在一張具有背景的圖片中,車牌區(qū)域只是鑲嵌在圖像中的極小部分, 而且標(biāo)準(zhǔn)車牌都有7個字符, 每個字符都有相應(yīng)的筆畫, 這使得跳變間隔允許設(shè)置的非常小, 在定位過程中, 只需根據(jù)特定的車牌識別場所, 通過先驗數(shù)據(jù)進行統(tǒng)計來調(diào)整Tmax即可得到更好的設(shè)置值. 關(guān)于Hmin的設(shè)置, 車牌經(jīng)Canny邊緣提取后, 車牌區(qū)域每兩個相鄰行跳躍點間距小于Tmax的點數(shù)至少有12個(考慮到某個字符筆畫會有斷裂現(xiàn)象), 將Hmin設(shè)置為8, 是為了找出滿足跳變點數(shù)大于8的區(qū)域, 即是可能的車牌區(qū)域, 直到找到大于Tmax的點即記下該終止點. 程序?qū)崿F(xiàn)過程中, 設(shè)置一個記錄數(shù)組不斷記錄每行的跳躍點, 記錄前都要初始化數(shù)組為0. 設(shè)檢測到的兩個跳躍間隔為T, 檢測到跳躍的點數(shù)為H, 若滿足則將始末兩點之間像素置為白像素, 如圖1(d). 本文采集樣本大小為2560*1920, 樣本攝像頭與車牌相距為1.5m-2m, 為了與DSP板配套的攝像頭分辨率相吻合, PC上模擬定位前將圖像縮小成720*540, 經(jīng)實驗統(tǒng)計, 取值比較合理. 本文設(shè)置的Tmax=30,Hmin=8.
圖1 紋理檢測圖
(4) 針對列像素, 連接有可能的車牌區(qū)域的豎直線.同樣設(shè)置每列中兩點不相連白像素允許的最大跳變距離Tmax, 還設(shè)置不相連的多個兩點允許的跳變個數(shù)為Hmin. 目的是將在同一列中兩點小于Tmax并且跳變數(shù)大于Hmin的初始位置連接起來, 還消除掉單獨的長橫直線. 繼步驟(3)后, 車牌區(qū)域的白色線條已經(jīng)非常密集,上下線條間距基本為1個像素, 設(shè)置Tmax=10, Hmin=2已經(jīng)完全滿足上下連線要求, 如圖1(e).
(5) 對預(yù)留下的區(qū)域進行形態(tài)學(xué)處理. 對區(qū)域進行適度的膨脹處理, 并消除長寬比小于3的區(qū)域(一般車牌長寬比大于3)和極小與極大的連通區(qū)域.
(6) 將最終連通域?qū)?yīng)的灰度圖像保留下來, 供Adaboost“過濾”, 因為紋理檢測的無方向性, 保留下來的區(qū)域還不能完全確定為車牌區(qū)域.
Adaboost算法基本思想是針對同一個訓(xùn)練集訓(xùn)練不同的分類器, 然后把這些弱分類器(類似于決策樹)集合起來構(gòu)成強分類器. 車牌定位過程中使用Adaboost算法挑選出一些能代表車牌的矩形特征, 按照加權(quán)投票的方式將弱分類器構(gòu)造為一個強分類器, 再將訓(xùn)練得到的若干強分類器串聯(lián)組成一個級聯(lián)結(jié)構(gòu)的分類器,能有效地提高分類器分類的速度.
2.1 Haar-like特征提取[12,13]
如圖2所示, 車牌提取的特征是用Haar-like特征,分為三類: 邊緣特征、線性特征、中心特征和對角特征, 組合成特征模板. 特征模板內(nèi)有白色和黑色兩種矩形, 設(shè)置模板的特征值為白色矩形像素和與黑色矩形像素和之差. Haar-like特征反映車牌圖像灰度變化情況. 如車牌字符與車牌背景, 車牌背景與車牌邊框等.由于車牌中存在大量的水平、垂直和對角結(jié)構(gòu), 而矩形特征對邊緣和線段較為敏感, 故能使用于車牌的特征提取.
2.2 Haar-like特征的計算-積分圖[12,13]
圖2 Haar-like特征
矩形特征的計算量非常大, 特別在圖像較大時, 實時性要求較高的情況下, 直接提取像素點灰度值再計算特征值無法滿足實時要求, 故引入積分圖. 積分圖就是只遍歷一次圖像就可以求出圖像中所有區(qū)域像素和的快速算法.
積分圖的構(gòu)造方式是位置(i, j)處的值是原圖像(i,j)左上角方向所有像素的和. 以表示源圖像,I(i,j)表示積分圖.
積分圖構(gòu)造算法:
(3) 逐行掃描圖像, 遞歸計算每個像素坐標(biāo)(i, j)中第i行和S(i, j)和積分圖I(i, j).
(4) 如果i還不等于圖像寬度, 則返回(3)繼續(xù)計算積分圖; 否則圖像積分圖就構(gòu)造好保存在I(i, j)中.
如圖3所示, 積分圖構(gòu)造好后, 圖像中任何矩陣區(qū)域的像素累加和都可以通過簡單運算得到.
圖3 積分圖
設(shè)A, B, C, D區(qū)域中右下角的坐標(biāo)分別為a, b, c, d.計算D區(qū)域的像素和
2.3 訓(xùn)練過程
Adaboost分類器算法按規(guī)模和功能來劃分, 從小到大分為三類: 弱分類器, 強分類器和級聯(lián)分類器.
2.3.1 弱分類器[13]
最初的弱分類器可能只是一個最基本的Haar-like特征, 計算輸入圖像的Haar-like特征值和最初的弱分類器的特征值比較, 以此來判斷輸入圖像是不是車牌. 其準(zhǔn)確率只要大于50%就可以, 這樣對于每一輪訓(xùn)練過后, 根據(jù)本輪分類器對所有樣本的分類結(jié)果修改每個樣本的權(quán)重, 使分類錯誤的權(quán)重增加, 并投入下一輪的訓(xùn)練過程.
一個弱分類器由下式表示:
其中x表示圖片, fi表示當(dāng)前特征, hj(x)表示弱分類器,θj表示閾值, pj=±1指明不等式的方向. 式中fi和θj決定一個分類器, 訓(xùn)練一個分類器, 就是根據(jù)當(dāng)前的權(quán)重分布, 找到一個最優(yōu)的閾值, 使得這個弱分類器對所有訓(xùn)練樣本的分類誤差和最低. 一個弱分類器僅僅對應(yīng)一個特征, 那么每一輪弱分類器的訓(xùn)練過程其實就是選擇一個最好的將車牌樣本和非車牌分離出來的矩形特征. 訓(xùn)練時對于每一個特征都要確定一個最優(yōu)閾值, 使得該閾值對所有樣本的分類效果最好. 每一輪訓(xùn)練過程都可以得到一個在當(dāng)前權(quán)重分布下分類效果最好的特征, 而該特征所對應(yīng)的弱分類器就是該輪所選出的最優(yōu)弱分類器.
訓(xùn)練詳細過程[12,13]:
(1) 給定一組車牌的正負樣本圖片(f1, g1), (f2,g2)……(fn, gn), 其中fi是待訓(xùn)練的圖片, gi指出該圖片的真?zhèn)涡? 1為車牌圖像, 0為非車牌圖像.
(3) 對于給定的分類器數(shù)目Num, for t=1, 2...Num
① 歸一化權(quán)重:
② 對每一個特征j訓(xùn)練一個分類器hj(x), 根據(jù)權(quán)重計算誤差:
③ 選擇誤差最小的弱分類器ht.
④ 更新權(quán)重:
當(dāng)樣本fi被正確分類時, ei=0, 否則ei=1且
2.3.2 訓(xùn)練強分類器[12,13]
Adaboost分類器包含許多弱分類器, 按照一定的方式將這些弱分類器串聯(lián)起來就形成一個強分類器.經(jīng)過Num此訓(xùn)練后, 得到Num個最優(yōu)弱分類器. 將這Num個分類器按下列公式組成一個強分類器.
當(dāng)使用這個強分類器進行檢測時, 相當(dāng)于讓該分類器中的多個弱分類器篩選, 再對篩選結(jié)果好的弱分類器設(shè)置大的權(quán)重, 篩選結(jié)果差的弱分類器設(shè)置較小的權(quán)重, 以此來達到好的分類效果.
2.3.3 訓(xùn)練級聯(lián)分類器
多個強分類器級聯(lián)起來形成一個級聯(lián)分類器[14],以達到更高的檢測速度和更高的誤檢率. 每一級分類器都是一個強分類器, 每一個強分類器都能檢測出大多數(shù)的車牌區(qū)域而排除大部分的非車牌區(qū)域. 這樣在后面的強分類器計算量變少, 因而提高檢測速率. 具體訓(xùn)練方法[12,14].
2.3.4 訓(xùn)練樣本的制作
訓(xùn)練過程中, 需要收集正樣本和負樣本, 正樣本是從含有車牌的圖像中剪切出來的子圖, 負樣本是不包含車牌的任意背景圖, 最好選擇車輛背景作為樣本, 無須歸一化和灰度化. 截取2363張正樣本, 然后歸一化大小為50*14的樣本并灰度化即可. 訓(xùn)練過程使用opencv庫中自帶的opencv_haartraining.exe opencv_createsample.exe和convert_cascade.exe文件. 正負樣本如圖4所示.
圖4 正負樣本
結(jié)果如圖5所示, 本文定位方法綜合紋理檢測和Adboost分類器方法, 首先紋理檢測能完整包含車牌區(qū)域, Adaboost分類器能正確區(qū)分出紋理檢測后子圖的真?zhèn)诬嚺? 起到過濾作用.
圖5 本文算法車牌定位圖
3.1 系統(tǒng)構(gòu)成
車牌定位系統(tǒng)的設(shè)計與實現(xiàn), 本文硬件平臺選用的是北京瑞泰公司的ICETEK-DM642開發(fā)板, 主要用到開發(fā)板外圍器件有4路視頻端口, 4M*64_Bit SDRAM, 存儲多達32幀圖像, 8-32位Flash, 10-100 M以太網(wǎng)口, 板上JTAG仿真接口. 開發(fā)環(huán)境是CCS2.2, 編程語言是C/C++語言.
DM642是TI公司C6000系列高性能數(shù)字媒體處理器, 時鐘頻率高達720 MHz, 本文設(shè)置時鐘頻率為600 MHz, 處理能力為4800MIPS. 64個32_Bit通用寄存器,8個獨立功能單元, 6個算數(shù)邏輯單元(ALU 32/40bit), 每個單元支持每時鐘周期32bit算術(shù)操作, 雙16位bit或4個8bit算數(shù)操作. 兩個乘法器支持每時鐘周期4個16x16的乘法[15].
3.2 車牌定位硬件系統(tǒng)的設(shè)計
3.2.1 硬件系統(tǒng)框架設(shè)計
如圖6所示, 本系統(tǒng)硬件以TMS320DM642為核心,輔以視頻解碼和視頻編碼等外設(shè)芯片. 圖像采集由CCD攝像頭采集大小為720*576的視頻信號, 經(jīng)視頻解碼器A/D轉(zhuǎn)換為YUV信號, 由EDMA搬運視頻數(shù)據(jù)交予DM642進行相應(yīng)的車牌定位處理, 處理后得到的定位數(shù)據(jù)和定位車牌區(qū)域圖像存在SDRAM中, 最后將定位結(jié)果用TCP/IP協(xié)議發(fā)送到PC服務(wù)器, 還傳向LCD實現(xiàn)回顯功能.
圖6 系統(tǒng)硬件框圖
3.2.2 基于DSP/BIOS的軟件系統(tǒng)框架設(shè)計
軟件系統(tǒng)框架, 如圖7所示.
圖7 系統(tǒng)軟件框圖
(1) DSP/BIO: 軟件框架的搭建是基于TI公司提供的DSP/BIOS簡易實時嵌入式操作系統(tǒng). 系統(tǒng)基本運行機制類似于UCOS-II嵌入式實時操作系統(tǒng).
DSP/BIOS可剪裁, 提供諸如任務(wù)調(diào)度和優(yōu)先級管理、進程間通信和存儲器管理等功能. 具有小型化和模塊化的特點使得可以編譯連接到應(yīng)用程序中, 而不是采用獨立運行的方式工作, 可以看做是代碼庫.
(2) Cache分配: DM642片內(nèi)內(nèi)存采用兩級高速緩存(Cache)結(jié)構(gòu), 程序和數(shù)據(jù)擁有各自獨立的高速緩存.
片內(nèi)的第一級程序緩存L1P和數(shù)據(jù)緩存L1D大小都為16K bytes. CPU與L1P和L1D直接相連[12], 因此這兩塊Cache都工作在CPU全速訪問狀態(tài). 程序和數(shù)據(jù)共享的第二級存儲器為L2, 大小為256Kbytes, L2的分段和大小分配可以由用戶決定. 本文設(shè)置的二級緩存128Kbytes作為緩存, 其余的128Kbytes作為程序和數(shù)據(jù)的緩存區(qū).
(3) RF5結(jié)構(gòu)
RF5是一種DSP軟件開發(fā)的起步代碼參考框架, 它以DSP/BIOS為基礎(chǔ), 主要實現(xiàn)三個功能, 存儲管理, 線程模型和通道封裝, 共有4個基本數(shù)據(jù)處理部分: 任務(wù)(task)、通道(channel)、單元(cell)和XDAIS算法. 通常一個任務(wù)中可以包括一個或多個通道, 每個通道中可以包括一個或多個單元, 而每個單元則封裝有一個XDAIS算法. 單元封裝XDAIS算法算法的作用在于: 提供算法與外部世界的一個標(biāo)準(zhǔn)接口, 每個單元執(zhí)行一個簡單的ICELL接口, 通過該接口執(zhí)行算法. 通道可以執(zhí)行多個單元, 每個任務(wù)可以同時處理多個通道.
RF5的線程通信依靠SCOM消息和郵箱(MBX), 算法之間的通信基于cell單元. SCOM消息和MBX分別類似于UCOS-II的消息隊列和郵箱. SCOM用于任務(wù)之間交換信息, 有對應(yīng)的存儲空間實現(xiàn)信息在任務(wù)間的讀取操作. Cell單元同樣基于數(shù)據(jù)緩存區(qū), 且存在一個內(nèi)部cell通信對象, 每個cell的輸入和輸出隊列均指向該ICC對象.
如圖8所示, 車牌定位系統(tǒng)有4個主要任務(wù), 每個任務(wù)都有靜態(tài)緩存區(qū), TSK_process有一個通道, 通道內(nèi)有一個cell單元, 存放的是JPEG算法.
圖8 車牌定位系統(tǒng)的RF5視頻傳輸框架
(4) 視頻采集和顯示驅(qū)動能確保攝像頭采集過來的圖像數(shù)據(jù)運行良好. 通過對輸入視頻數(shù)據(jù)的存儲管理, 輸入的視頻數(shù)據(jù)能夠由DM642的Vport口解碼后通過EDMA存儲到SDRAM中, 這個過程通過輸入視頻接口的設(shè)備驅(qū)動程序完成. 在配置輸入視頻接口的設(shè)備驅(qū)動程序時, 開設(shè)3個視頻緩存區(qū), 設(shè)備驅(qū)動程序管理這些緩沖區(qū)用于實時視頻數(shù)據(jù)的采集. 輸出視頻數(shù)據(jù)的存儲管理也需要3個緩沖區(qū). 初始化是將視頻口驅(qū)動程序準(zhǔn)備好, 并從視頻口驅(qū)動程序申請一個輸入緩沖區(qū)和一個輸出緩沖區(qū); 進入主循環(huán)后, 首先通過DMA調(diào)用將輸入緩沖區(qū)的數(shù)據(jù)讀出、處理, 再將數(shù)據(jù)存儲到輸出緩沖區(qū)中, 然后向視頻口驅(qū)動程序切換輸入和輸出緩沖區(qū). 輸入和輸出視頻數(shù)據(jù)的存儲管理是實際上采用“乒乓”模式.
(5) 一旦BIOS、CSL、DMA、RF5框架結(jié)構(gòu)和視頻驅(qū)動初始化完成后, BIOS便調(diào)度程序啟動系統(tǒng), 按程序中線程的優(yōu)先級運行各個任務(wù). 輸入任務(wù)從SDRAM中讀取一幀視頻數(shù)據(jù), 然后通過SCOM傳給處理任務(wù), 處理任務(wù)接受到視頻數(shù)據(jù)后, 便開始運行車牌定位算法. 由于視頻數(shù)據(jù)傳送過來的是YUV圖像數(shù)據(jù),Y分量表示的是圖像的亮度圖, 即是灰度圖, 而車牌定位算法中正好是采用灰度圖進行信息提取處理. 經(jīng)過車牌定位的紋理檢測和Adaboost算法處理后, 將定位出來車牌區(qū)域圖像編碼經(jīng)JPEG編碼發(fā)送到網(wǎng)絡(luò)任務(wù),同時將未經(jīng)過編碼的圖像發(fā)送到輸出任務(wù). 網(wǎng)絡(luò)任務(wù)主要完成TCP/IP協(xié)議的搭建, 通過socket套接字實現(xiàn)TCP/IP協(xié)議的接口調(diào)用. TI推出NDK(Network Develop’s Kit)開發(fā)套件, 目的是提供一個完整的TCP/IP功能環(huán)境. 基于NDK模塊, 視頻數(shù)據(jù)得以發(fā)送到基于VS平臺搭建的PC網(wǎng)絡(luò)服務(wù)器中經(jīng)JPEG解碼后顯示. 輸出任務(wù)接收到視頻數(shù)據(jù)后回顯車牌區(qū)域的幀圖像.
3.3 系統(tǒng)軟件工具
TI公司的DSP集成開發(fā)環(huán)境CCS2.2提供了基于C語言系統(tǒng)的編譯、鏈接和調(diào)試工具, 并能進行系統(tǒng)仿真和實時跟蹤, 為DSP程序的設(shè)計和開發(fā)提供了極大的方便.
3.4 系統(tǒng)代碼移植
由于CCS平臺調(diào)試程序需要通過JTAG將代碼下載到DM642后才能查看算法運行的有效性, 這無非給調(diào)試帶來很大的困難, 而且會花費很多時間在程序下載上, 會大大降低開發(fā)速度. 本文先在PC環(huán)境下, 調(diào)用計算機視覺Opencv函數(shù)庫, 在Visual Studio 2010下仿真實驗. 算法的實驗效果達到預(yù)期的要求后, 便開始著手移植到DSP. CCS2.2支持C/C++編程, 而Opencv函數(shù)庫的源代碼正是開源的C/C++代碼, 這無非給開發(fā)帶來方便. 但是Opencv還不能完全適用于特定的DSP開發(fā)環(huán)境, 故有必要對其進行裁剪和優(yōu)化. EMCV是Opencv分離出來的一個適合TI DM64x系列DSP上運行的計算機視覺庫, 提供了跟Opencv完全一致的函數(shù)接口, 移植EMCV能夠把Opencv中少量的算法移植到DSP, 但是在車牌定位過程中使用到Canny邊沿檢測算法, 圖像的縮小放大(Resize)算法和Adaboost算法等, 這些算法在EMCV庫中并不帶有, 因此在移植EMCV后還要在Opencv中裁剪出EMCV中沒有的算法. 本文使用的是Opencv1.0版本結(jié)合EMCV移植到DSP, 最后裁剪出來車牌定位真正需要的算法, 這樣就能大大降低程序的代碼量.
在程序移植過程中, 由于車牌定位采用的Adaboost分類器文件是.xml格式文件, 在CCS中無法讀取該文件, 因此本文讀取分類器的方式改為讀取.txt文件. 移植后, 讀取Adaboost分類器使用cvLoadHaar ClassifierCascade()函數(shù), 檢測車牌區(qū)域使用cvHaarDetect Objects()函數(shù).
由于系統(tǒng)實時性要求特別高, 因此需要針對DM642的硬件特性對算法和配置進行相應(yīng)的優(yōu)化. 本文首先將EMCV庫和Opencv庫文件的C++文件改為C文件, 然后主要針對C語言和CCS提供的編譯器優(yōu)化選項進行優(yōu)化, 方法如下:
(1) 浮點轉(zhuǎn)定點運算[12,16]: 由于DM642是定點型DSP, 將程序中的浮點運算轉(zhuǎn)為定點運算后, 程序運行速度大大提高.
(2) EDMA搬移視頻數(shù)據(jù)[12]: EMCV可以在CPU不參與的情況下完成數(shù)據(jù)的復(fù)制.
(3) 使用內(nèi)聯(lián)函數(shù)[12]: 頻繁的函數(shù)調(diào)用將導(dǎo)致系統(tǒng)額外開銷的增多, 將一些功能簡單的函數(shù)寫成內(nèi)聯(lián)函數(shù)能大大增加系統(tǒng)運行速度.
(4) 使用編譯器選項進行優(yōu)化[12,17]: 在編譯器中提供了若干等級和種類的自動優(yōu)化選項.
●-O3: 表示可得到的最好程度的優(yōu)化, 編譯器將執(zhí)行各種優(yōu)化循環(huán)的方法, 包括軟件流水、循環(huán)展開
●-pm: 聯(lián)合所有源程序文件在程序級優(yōu)化代碼
本文采用了-O3和-pm優(yōu)化選項, 使車牌定位速度大大提升.
(1) 結(jié)果如圖9所示, 單獨紋理檢測定位, 由于車牌背景復(fù)雜多變, 且易受環(huán)境和光照等影響, 難免會檢測出多個誤判的車牌區(qū)域, 本文將紋理檢測方法所帶造成的誤判稱為無方向性, 但是優(yōu)點是檢測出的車牌區(qū)域中, 能夠包含整體的車牌, 如圖9(a), 而不會只檢測到一部分的車牌區(qū)域. 帶有偽區(qū)域張數(shù)定義為在車牌定位過程中的誤檢區(qū)域, 如圖9(b)單獨紋理檢測剪切出的偽區(qū)域.
圖9 單獨紋理檢測
(2) 結(jié)果如圖10所示, 如果只單獨使用Adaboost分類器方法, 就有以下缺點:
① 雖然Adaboost將強分類器級聯(lián)起來提高運行速度, 但這是相對于不將強分類級聯(lián)起來比較的. 一幀720x576的圖像數(shù)據(jù), Adaboost分類器檢測時大部分的時間都花在積分圖上, 這勢必增加檢測時間.
② Adaboost分類器雖然能夠準(zhǔn)確的識別某個區(qū)域有車牌, 但是有時候無法完全把車牌區(qū)域標(biāo)識出來, 所以把這樣的定位視為失敗, 也就是說會導(dǎo)致車牌區(qū)域定位不完整, 這讓接下來的車牌分割與識別順利完成增加難度.
圖10 單獨Adaboost檢測
(3) 紋理檢測和Adaboost算法相結(jié)合
將紋理檢測得到的包含有車牌的小部分區(qū)域圖像輸入到Adaboost算法中進行過濾處理, 既能夠克服單獨Adaboost分類的定位區(qū)域不完整性, 而且能夠避免單獨檢測的無方向性, 大大提高了車牌定位的準(zhǔn)確性.
定位過程, 紋理檢測與Adaboost相結(jié)合的方法相對于單獨Adaboost方法稍微快, 因為單獨Adaboost檢測需要計算整幅圖像的卷積圖, 而本文算法只是對紋理檢測后的子圖計算卷積圖, 并且紋理檢測后的子圖遠遠小于原圖. 紋理檢測與Adaboost相結(jié)合的方法檢測一幀圖像需要300 ms左右, 而單獨使用Adaboost算法定位需要400 ms左右. 整個系統(tǒng)運行后, 紋理檢測與Adaboost相結(jié)合的方法1秒能夠運行3-4幀, 而單獨使用Adaboost算法定位1秒能夠運行2-3幀.
車牌在DM642上檢測結(jié)果在PC服務(wù)器上和LCD顯示器上顯示, 如圖11所示.
圖11 定位顯示結(jié)果
本文的定位準(zhǔn)確率評判標(biāo)準(zhǔn): 不僅能夠定位出車牌位置, 而且定位出來的矩形區(qū)域必須具有完整性. 定位的準(zhǔn)確率與帶有偽區(qū)域張數(shù)是兩個獨立的量, 因為有些圖像能準(zhǔn)確定位到車牌卻帶有一些誤檢的子圖,誤檢的子圖可以在車牌字符分割后得到的字符個數(shù)來確定是否是車牌, 故本文將帶有偽區(qū)域但能正確定位到車牌的圖像設(shè)為正確定位圖像. 本文在PC機上模擬定位, 樣本采自福建師范大學(xué)校內(nèi)201張不同場景下的車牌圖像, 比較本文的定位算法與單獨使用紋理檢測方法和單獨使用Adaboost算法的準(zhǔn)確率, 結(jié)果如表1所示.
表1 實驗結(jié)果比較
本文算法定位方法中錯誤定位7張, 其中2張是攝像頭與車牌間距比較近, 導(dǎo)致紋理檢測錯誤, 進而Adaboost分類算法無法過濾, 5張是車牌定位有斷裂現(xiàn)象, 如圖12(a). 剩下的194張中有2張定位正確, 但是帶有偽區(qū)域, 是因為Adaboost分類算法誤檢所致, 如圖12(b).
圖12 本文定位斷裂圖(a)和帶偽區(qū)域圖(b)
實驗表明, 紋理檢測和Adaboost相結(jié)合的方法很好的避免了紋理檢測的無方向性和單獨Adaboost分類定位的不完整性, 能大大剔除偽區(qū)域. 單獨紋理檢測過程, 為了能保證車牌區(qū)域不被濾除, 將檢測條件設(shè)置稍微寬松, 主要能保證在檢測到的所有子圖中存在車牌即可, 但這會造就帶有的偽區(qū)域張數(shù)特別多(58張), 又由于本文算法是基于紋理檢測后用A d a b o o s t進行過濾, 故準(zhǔn)確率與單獨紋理檢測的準(zhǔn)確率相同, 但非常大的優(yōu)點能把偽區(qū)域張數(shù)剔除. 單獨Adaboost定位, 雖然能絕大部分定位到車牌區(qū)域, 但出現(xiàn)車牌不完整現(xiàn)象很嚴重, 導(dǎo)致準(zhǔn)確率降到87.5%, 而且?guī)в?4張偽區(qū)域. 若將帶有偽區(qū)域的圖片視為定位錯誤, 完全定位到有192張, 正確率也能達到95.5%, 而單獨紋理檢測和Adaboost定位正確率大大下降.
本文介紹了基于DM642的車牌實時檢測系統(tǒng), 雖然本文只實現(xiàn)了車牌定位部分, 但是, 整個系統(tǒng)框架完全適用于車牌的整個識別系統(tǒng). 定位部分提出一種基于車牌紋理特性檢測和Adaboost分類器相結(jié)合的車牌定位方法, 該方法相對于單獨紋理檢測和單獨Adaboost分類檢測, 定位準(zhǔn)確率大大提高, 并且保證了車牌定位的完整性, 并且采用EMCV與Opencv圖像處理庫方法將代碼移植在DM642上, 使得本定位算法能夠?qū)崿F(xiàn)實時定位的效果. 在確保車牌定位準(zhǔn)確率的情況下, 能為接下來的車牌分割和車牌識別的順利進行提供了保障.
1丁亞男. 基于圖像分解的車牌定位算法. 電子科技, 2014,27(1): 42–44.
2萬燕, 徐勤燕, 黃蒙蒙. 復(fù)雜背景中基于紋理和顏色的車牌定位研究. 計算機應(yīng)用與軟件, 2013, 30(10): 259–262, 316.[doi: 10.3969/j.issn.1000-386x.2013.10.089]
3郭延祥, 陳耀武. 基于邊緣檢測和顏色紋理直方圖的車牌定位方法. 計算機科學(xué)與探索, 2014, 8(6): 719–726.
4孫紅, 郭凱. 融合字符紋理特征與RGB顏色特征的車牌定位. 光電工程, 2015, 42(6): 14–19.
5柴曉榮, 劉錦高. 基于紋理分析的精確車牌定位算法. 計算機系統(tǒng)應(yīng)用, 2010, 19(2): 160–163.
6穆長江, 苑瑋琦. 基于紋理特征的車牌定位方法. 控制工程, 2004, 11(6): 574–576.
7潘勇, 趙佳樂, 徐志剛, 等. 基于紋理特征的低照度環(huán)境下車牌定位與識別算法. 公路交通科技, 2015, 32(7): 140–148.
8張曉娜, 何仁, 陳士安, 等. 基于主動學(xué)習(xí)Adaboost算法與顏色特征的車牌定位. 交通運輸工程學(xué)報, 2013, 13(1): 121–126.
9曾毅. 遺傳算法在車牌定位中的應(yīng)用. 福建電腦, 2015, (7):88–90.
10陳佳. 基于形態(tài)學(xué)的車牌定位方法的研究與應(yīng)用[碩士學(xué)位論文]. 衡陽: 南華大學(xué), 2015.
11Freund Y, Schapire RE. A decision-theoretic generalization of on-line learning and an application to boosting. Journal of Computer and System Sciences, 1997, 55(1): 119–139.
12聶江浩. 基于DM642的人臉檢測系統(tǒng)的設(shè)計與實現(xiàn)[碩士學(xué)位論文]. 重慶: 重慶大學(xué), 2009.
13Viola P, Jones M. Rapid object detection using a boosted cascade of simple features. Proc. of the 2001 IEEE Computer Society Conference on Computer Vision and Pattern Recognition. Kauai, HI, USA. 2001. I-511–I-518.
14Lienhart R, Kuranov A, Pisarevsky V. Empirical analysis of detection cascades of boosted classifiers for rapid object detection. Lecture Notes in Computer Science. Berlin,Heidelberg. Springer. 2003. 297–304.
15TMS320DM642 Video/Imaging Fixed-Point Digital Signal Processor (SPRS200J). Texas Instruments, 2005.
16C Fast RTS Library User Guide (Rev 1.0). Texas Instruments,2008.
17TMS320C6000 Optimizing Compiler User’s Guide(SPRU187L). Texas Instruments, 2004.
Vehicle Plate Location by the Texture Recognition and Adaboost Classifier Based on DM642
CHEN Cun-Di, LIU Jin-Qing, LIU Yin, CAI Shu-Kuan, HE Shi-Qiang, ZHOU Xiao-Tong, DENG Shu-Min,
WU Qing-Xiang
(Key Laboratory of OptoElectronic Science and Technology for Medicine of Ministry of Education, College of Photonic and Electronic Engineering, Fujian Normal University, Fuzhou 350007, China)
The Intelligent transportation system is a real-time, accurate and efficient integrated transportation management system, with the LPR(License Plate Recognition) as one of its key technologies. In order to realize the real-time detection of license plate in the embedded systems, the license plate detection, location and recognition technology based on TMS320DM642 are studied. This paper proposes a kind of license plate location algorithm by combining texture detection with the Adaboost classifier. The system design combining with DM642 is based on EMCV and Opencv image processing library to come true coding porting. The system avoids the non-directional under the condition of only texture detection and the non-integrity under the condition of only Adaboost Classification, it also improves the accuracy of the positioning. In addition, the license plate image which has been located can be sent to the PC server by the TCP protocol.Then the license plate location and monitoring of remote vehicles can be realized.
TMS320DM642; texture detection; Adaboost classifier; EMCV; Opencv
陳存弟,劉金清,劉引,蔡淑寬,何世強,周曉童,鄧淑敏,吳慶祥.基于DM642的紋理檢測與Adaboost分類器相結(jié)合的車牌定位.計算機系統(tǒng)應(yīng)用,2017,26(7):56–64. http://www.c-s-a.org.cn/1003-3254/5853.html
國家自然科學(xué)基金(61179011); 福建教育廳項目(JAS151254); 福建師大項目(I201502019)
2016-10-30; 收到修改稿時間: 2016-12-05