一種利用Hough變換和先驗(yàn)知識(shí)的車牌識(shí)別新方法
掃描二維碼
隨時(shí)隨地手機(jī)看文章
隨著交通管理系統(tǒng)的日趨現(xiàn)代化,車牌自動(dòng)識(shí)別系統(tǒng)成為智能交通系統(tǒng)的重要組成部分。通過對(duì)當(dāng)前車牌識(shí)別的基本原理和主要方法的研究,分析比較各種識(shí)別方法的優(yōu)缺點(diǎn),針對(duì)車牌定位、字符分割和字符識(shí)別,本文提出一套實(shí)用可靠的算法。
車牌定位作為整個(gè)算法步驟的第一步,定位錯(cuò)誤將直接導(dǎo)致最終識(shí)別錯(cuò)誤,定位不精確將提升分割難度。實(shí)際中不同車牌圖像在拍攝距離和角度、拍攝手法、光照強(qiáng)弱等方面不盡相同,有時(shí)甚至差異很大,使得一些傳統(tǒng)方法在圖像群品質(zhì)的差異存在較大跨度下其定位準(zhǔn)確率低下,缺失普遍性。其中,利用水平灰度跳變特征的分步驟法即先粗略定位再精確定位是相對(duì)比較穩(wěn)定的一種方法,但其缺點(diǎn)也很明顯,就是精確定位不夠精。為了改善這種情況,本文嘗試性地提出了一種利用Hough變換多線檢測(cè)實(shí)現(xiàn)精確定位的方法,同時(shí)結(jié)合先驗(yàn)知識(shí),改進(jìn)了水平搜索方式,有效地提升了車牌定位精準(zhǔn)率,使得這一算法具有較強(qiáng)的適應(yīng)性,并且速度快、魯棒性好。
在字符分割中,得益于定位的良好效果,通過合理地二值化與濾波處理,提出了一種改進(jìn)的投影法。該算法克服了車牌群光照變化跨度大以及邊框、鉚釘?shù)瘸R娨蛩馗蓴_,使投影法字符分割的準(zhǔn)確率得到了一定的提升。
車牌字符識(shí)別是車牌識(shí)別系統(tǒng)的核心部分,本文構(gòu)造了BP神經(jīng)網(wǎng)絡(luò)進(jìn)行車牌識(shí)別。通過反復(fù)修正各個(gè)參數(shù)使該識(shí)別算法快速準(zhǔn)確,并且具有良好的穩(wěn)定性,能滿足車牌實(shí)時(shí)識(shí)別的要求。
1 車牌定位
1.1 圖像預(yù)處理
(1)尺寸歸一化:車牌圖像的尺寸對(duì)算法中相關(guān)閾值的選取有較大影響。本系統(tǒng)中車牌圖像尺寸均已歸一化到400×300像素。
(2)圖像平滑:為了更好地提取水平灰度跳變特征(與算法有關(guān)),有必要先對(duì)圖像進(jìn)行水平平滑處理。實(shí)驗(yàn)表明,使用[1/2 1/2]這樣一種掩膜的效果最好。
1.2 算法
(1)特征提取[1]:提取水平灰度跳變特征。對(duì)經(jīng)過了水平平滑的灰度圖像,選取適當(dāng)閾值T,將每一行各像素與其前一像素比較,若灰度差絕對(duì)值超過T,則記為1,否則記為0,從而完成對(duì)灰度圖像進(jìn)行水平方向灰度跳變特征的提取。實(shí)驗(yàn)證明,此方法與傳統(tǒng)邊緣檢測(cè)相比,特征提取效果更顯著、噪音更小。以水平方向?yàn)閷?duì)象是因?yàn)檐嚺圃谒椒较蜉^垂直方向灰度跳變特征更為明顯。
(2)水平方向粗定位:對(duì)由(1)生成的二值圖像,結(jié)合先驗(yàn)知識(shí),即圖像中車牌位置以下的部分與車牌以上的部分相比干擾要小很多,采取由下至上的行搜索方法。當(dāng)某1行的1個(gè)值個(gè)數(shù)與整行像素之比值大于一定閾值時(shí),便記下行位置x1,繼續(xù)逐行上移搜索,當(dāng)比值小于閾值時(shí)記下行位置x2,x1與x2形成坐標(biāo)對(duì),若x1與x2距離超過較小的高度(以400×300為例,車牌高度應(yīng)大于10,所以選擇10)時(shí),即確定其為車牌水平方向切割位置(為了防止少切,分別對(duì)x1和x2進(jìn)行向下和向上的適當(dāng)延伸);否則,排除此x1和x2,并繼續(xù)向上搜索尋找x1、x2坐標(biāo)對(duì),直到確定x1、x2為止,并對(duì)二值圖像切割。為了增強(qiáng)穩(wěn)定性,可以用雙行比值代替單行比值,此時(shí)應(yīng)縮小判定閾值。
(3)垂直方向粗定位[2]:設(shè)由(2)切割出來的圖像為A,對(duì)A進(jìn)行除噪處理后,先用1個(gè)與A等高度、寬度與高度相同的矩形框體B對(duì)A從左至右遍歷搜索[3],若B中1值像素之和與B中全部像素之比大于一定閾值時(shí),記錄此時(shí)列位置為y1,然后用同樣方式從右之左搜索,獲得列位置y2。用y1與y2對(duì)A切割,完成垂直方向的粗定位。
(4)精確定位:在以往的車牌識(shí)別方法中,Hough變換線檢測(cè)一般只用于車牌矯正,實(shí)際上Hough變換線檢測(cè)更可用來做車牌定位。本文中將利用此對(duì)車牌做最后的精確定位。
Hough變換提取直線的原理[4]:
對(duì)于圖像空間中的任意一點(diǎn)(x0,y0),將其變換為參數(shù)空間(θ,r)中的1條曲線r=x0 cos θ+y0 sinθ,對(duì)位于同一直線l上的n個(gè)點(diǎn)逐一進(jìn)行上述變換,則在參數(shù)空間(θ,r)中對(duì)應(yīng)得到n條曲線,由變換公式可知,這n條曲線必定經(jīng)過同一點(diǎn)(θ0,r0)。找到參數(shù)空間中的這個(gè)點(diǎn)就知道了圖像空間中的對(duì)應(yīng)直線l,因此,Hough變換可以用來在二值圖像中檢測(cè)直線。
設(shè)由算法(3)粗切割得到的圖像為C,利用Hough變換對(duì)C進(jìn)行多條直線檢測(cè)(至少10條以上)。取直線中端點(diǎn)行坐標(biāo)最小值和最大值分別為車牌上下邊界精定位值,取直線左端點(diǎn)列坐標(biāo)平均值或中值為車牌左邊界精定位值,取直線右端點(diǎn)列坐標(biāo)平均值或中值為車牌右邊界精定位值(經(jīng)過反復(fù)實(shí)驗(yàn)論證,使用平均值時(shí)穩(wěn)定性優(yōu)于使用中值)。由此確定的車牌定位結(jié)果為最終定位結(jié)果。
圖1~圖7是選取了3幅不同方位角度車牌圖像的詳細(xì)定位過程。從圖2可以看出,圖像中車牌位置以下的信息干擾明顯比以上部分的干擾弱小,這是因?yàn)檐嚺频南路街饕锹访姹尘?,而車牌的上方卻包含了車燈、中網(wǎng)等敏感信息。由下至上的搜索法充分地利用了這一特征。同時(shí)由于車牌多處在圖像下半部,從而也減少了搜索時(shí)間。用多直線檢測(cè),精確度高,魯棒性好。
2 字符分割
字符分割之前,有必要對(duì)傾斜的車牌進(jìn)行校正。用Hough變換進(jìn)行傾斜角檢測(cè)是一種常用的有效途徑。
由于實(shí)現(xiàn)了車牌定位,可以用全局閾值法對(duì)定位結(jié)果圖像重新二值化,以得到更理想的二值圖像。圖8是用Otsu法[5]得到的二值圖。
字符切割最常用的方法是投影法。如果二值化后車牌圖像的字符中粘連和斷裂情況不那么嚴(yán)重,只需要垂直投影就可以很好地完成字符切割的任務(wù)。但是水平邊框、鉚釘有時(shí)會(huì)把一些“谷”填平,使得難以精確確定分割點(diǎn)。盡管如此,垂直投影仍然是字符分割中的一個(gè)非常重要的方法。本文對(duì)垂直投影法加以改進(jìn),基本上克服了邊框和鉚釘帶來的影響。
對(duì)于二值化后可能存在的水平邊框干擾如圖8(a)所示(垂直邊框?qū)Υ怪蓖队胺]有影響),根據(jù)先驗(yàn)知識(shí):不管車牌整體的大小如何,單個(gè)字符的寬度不會(huì)超過整個(gè)圖像寬度的1/8。因而可將寬度超過1/8或更多一點(diǎn)的白線像素置0。這樣既去除了大部分干擾又無字符信息的丟失。
下面將進(jìn)行校正。選取圖9每1列如圖10所示的最下方的1值像素,經(jīng)過Hough變換后如圖11所示的可檢測(cè)到邊緣直線,此直線傾角(即車牌傾角θ)根據(jù)公式:
對(duì)圖9進(jìn)行坐標(biāo)轉(zhuǎn)換便實(shí)現(xiàn)了車牌傾斜校正,如圖12所示。其中x0、y0為原坐標(biāo),x、y為轉(zhuǎn)換后坐標(biāo)。
對(duì)矯正后的車牌采用垂直投影法進(jìn)行字符分割,結(jié)果如圖13所示。
圖13(a)中有2個(gè)連續(xù)的“0”字符粘連在一起,未能被分離,原因是鉚釘剛好處在它們中間的位置。用圖像處理的手段消除鉚釘而又不影響字符信息其難度很大。對(duì)于這種情況,針對(duì)性的解決辦法是直接將包含2個(gè)字符的分割板塊對(duì)等中切。1個(gè)字符的寬度不會(huì)超過整塊車牌寬度的1/5,連續(xù)2個(gè)字符的寬度肯定超過整塊車牌寬度的1/5,根據(jù)此先驗(yàn)知識(shí),以寬度大于車牌1/5且小于車牌2/5為條件,可以方便地確定是否存在粘連塊。圖13(b)與圖13(c)沒有受到鉚釘干擾,因而能1次性分割成功。圖14是將粘連板塊對(duì)等中切后的結(jié)果。
3 字符識(shí)別
在分類器的選取上,既要求其要有良好的容錯(cuò),又要求其具有良好的自適應(yīng)的能力。神經(jīng)網(wǎng)絡(luò)具有與人腦相似的高度并行性、良好的容錯(cuò)性和聯(lián)想記憶功能、自適應(yīng)、自學(xué)習(xí)能力和容錯(cuò)等特點(diǎn),特別是以改進(jìn)型BP網(wǎng)絡(luò)為代表的神經(jīng)網(wǎng)絡(luò)具有良好的自學(xué)習(xí)能力、強(qiáng)大的分類能力、容錯(cuò)能力或魯棒性,可以實(shí)現(xiàn)輸入到輸出的非線性映射。因此本文選擇BP神經(jīng)網(wǎng)絡(luò)作為字符進(jìn)行分類、識(shí)別的主要方法。
3.1 字符預(yù)處理
對(duì)切割出來的車牌字符很有必要進(jìn)行預(yù)處理,預(yù)處理包括:
(1)大小歸一化
為了便于訓(xùn)練和識(shí)別,需要對(duì)字符圖像進(jìn)行規(guī)范化處理,使它們變成統(tǒng)一尺寸的圖像,本文中將字符片段歸一化為24×14大小。
(2)特征提取
即由歸一化得到的字符確定網(wǎng)絡(luò)輸入向量。本文是將24×14網(wǎng)格轉(zhuǎn)換為單一向量輸入。
3.2 BP神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)
大多數(shù)實(shí)際的神經(jīng)網(wǎng)絡(luò)只需要2~3層神經(jīng)元[6],本文設(shè)計(jì)的BP神經(jīng)網(wǎng)絡(luò)包含2個(gè)隱含層。對(duì)于神經(jīng)網(wǎng)絡(luò)中隱含層節(jié)點(diǎn)數(shù)目的確定,沒有一個(gè)固定的規(guī)律可遵循。本文中對(duì)隱含層內(nèi)節(jié)點(diǎn)數(shù)的確定,是以找到1個(gè)經(jīng)過樣本訓(xùn)練后,其網(wǎng)絡(luò)輸出與實(shí)際結(jié)果最近似的網(wǎng)絡(luò),這是一個(gè)搜索的過程。參考相關(guān)隱含層確定的準(zhǔn)則[7],通過逐個(gè)比試最終確定,第1個(gè)隱含層節(jié)點(diǎn)數(shù)為15個(gè),第2個(gè)隱含層節(jié)點(diǎn)數(shù)為10個(gè),學(xué)習(xí)速度為0.01。
實(shí)驗(yàn)中選取了300幅實(shí)際的車牌。這些車牌圖像的大小和拍攝的角度有所不同,有些車牌圖像比較清楚,有些則有缺陷。然后在Matlab7.0環(huán)境下對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,訓(xùn)練樣本由200個(gè)車牌的1 400個(gè)字符組成。剩下的100幅車牌圖像用于識(shí)別試驗(yàn)。試驗(yàn)結(jié)果:正確識(shí)別91幅,誤識(shí)6幅,不能識(shí)別3幅,平均識(shí)別速率0.94 s/幅。在實(shí)驗(yàn)過程中數(shù)字識(shí)別率最高,字母次之,漢字識(shí)別率最低。
本文系統(tǒng)地研究了一套車牌識(shí)別算法,包含了車牌定位、字符分割、字符識(shí)別3個(gè)環(huán)節(jié)。其前后銜接緊密,互補(bǔ)性好,整體準(zhǔn)確性高,穩(wěn)定性好,具有較強(qiáng)的實(shí)用性。但仍存在一些問題需要進(jìn)一步改進(jìn),如車牌定位時(shí),距離伸縮性不夠,字符傾斜校正存在一些失真,字符特征提取還需要更有效的方法。