摘 要: 字符分割是車(chē)牌自動(dòng)識(shí)別系統(tǒng)中的關(guān)鍵步驟。提出了一種利用投影和卷積相結(jié)合的方法來(lái)實(shí)現(xiàn)字符分割,先對(duì)車(chē)牌圖像進(jìn)行中值濾波,再進(jìn)行豎直差分,減小左右邊框的影響;根據(jù)車(chē)牌的先驗(yàn)知識(shí)形成一個(gè)可變長(zhǎng)的字符模板匹配的脈沖波形,用這個(gè)脈沖波形和投影圖對(duì)應(yīng)的數(shù)組做卷積,定位出第一個(gè)字符位置,隨著模板長(zhǎng)度的不斷變大,得出每個(gè)字符的坐標(biāo)。實(shí)驗(yàn)表明,該方法能夠使得字符分割的結(jié)果定位更精準(zhǔn),為字符識(shí)別創(chuàng)造了良好的條件。
關(guān)鍵詞: 字符分割; 垂直投影; 卷積; 模板匹配
中圖分類(lèi)號(hào):TP391.4 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2013)11-49-03
0 引言
汽車(chē)牌照識(shí)別技術(shù)是智能交通系統(tǒng)的重要研究課題,汽車(chē)牌照識(shí)別是實(shí)現(xiàn)交通管理智能化的重要環(huán)節(jié)。完整的車(chē)牌識(shí)別系統(tǒng)分為三個(gè)部分:車(chē)牌定位、字符分割和字符識(shí)別。其中字符分割技術(shù)是車(chē)牌自動(dòng)識(shí)別系統(tǒng)中的關(guān)鍵步驟。車(chē)牌字符分割就是把所提取出的車(chē)牌區(qū)域圖像分割成單個(gè)字符圖像,字符能否正確地被分割直接決定了字符識(shí)別率的高低。
目前主要的車(chē)牌字符分割算法有以下三種。
⑴ 投影法[1]是采用最多的一種方法。其優(yōu)點(diǎn)是速度快,對(duì)于質(zhì)量好的牌照?qǐng)D像,定位非常準(zhǔn)確。但牌照中如果出現(xiàn)字符粘連或斷裂,就很易出錯(cuò)。
⑵ 模板匹配法[2]。該方法的優(yōu)點(diǎn)是程序執(zhí)行時(shí)間與水平投影法相近,較好地解決了漢字不連通問(wèn)題,較好地解決了車(chē)牌字符分割中存在的如復(fù)雜背景的干擾、車(chē)牌尺寸的變化、車(chē)牌磨損造成字符粘連等難題。但是該方法邏輯設(shè)計(jì)復(fù)雜,循環(huán)掃描執(zhí)行功能較多,對(duì)車(chē)牌中的左右邊框的分割有待改進(jìn)。
⑶ 聚類(lèi)分析的方法[3]。該方法將去除邊框后的車(chē)牌圖像中每個(gè)像素按距離進(jìn)行聚類(lèi),首先去掉不符合字符高度特征的噪聲類(lèi)。它的主要缺點(diǎn)是計(jì)算量大,對(duì)分裂字符容易產(chǎn)生聚類(lèi)錯(cuò)誤。
本文在基于模板匹配思想的基礎(chǔ)上,綜合利用已有算法的優(yōu)、缺點(diǎn),采用一種改進(jìn)的投影方法來(lái)實(shí)現(xiàn)字符分割,即提出用根據(jù)模板生成的脈沖函數(shù)與投影圖做卷積取最大值來(lái)定位車(chē)牌字符,得出每個(gè)字符的坐標(biāo),分割出每個(gè)字符,該方法使分割結(jié)果定位更精準(zhǔn)。
1 車(chē)牌圖像預(yù)處理
為了能夠更好地分割出字符,首先對(duì)定位好的車(chē)牌候選區(qū)域進(jìn)行圖像預(yù)處理,包括二值化,中值濾波,豎直差分。因?yàn)槎祱D像左、右邊框和噪聲的影響比較大,所以先對(duì)其使用中值濾波[4],再使用差分的方法來(lái)進(jìn)一步去除豎直噪聲的影響。實(shí)驗(yàn)效果如圖1所示。
從圖1可以看出車(chē)牌區(qū)域經(jīng)過(guò)豎直差分處理后,左、右兩邊的噪聲干擾已經(jīng)去除得差不多了,字符雖然看不清楚,但是輪廓還在,豎直投影后字符的像素比例已經(jīng)占到了絕對(duì)優(yōu)勢(shì)。由于投影的像素?cái)?shù)組已經(jīng)做了歸一化處理,圖形顯示的是像素的比例關(guān)系而不是像素的數(shù)值。
2 基于垂直投影和卷積相結(jié)合的字符分割算法
車(chē)牌字符分割就是把所提取出的車(chē)牌區(qū)域圖像分割成單個(gè)字符圖像,字符能否正確地分割直接決定字符識(shí)別率的高低。
標(biāo)準(zhǔn)車(chē)牌格式[5]是:X1X2·X3X4X5X6X7,其中X1是各省、直轄市和自治區(qū)的簡(jiǎn)稱(chēng),X2是英文字母,X3X4X5、X6、X7是英文字母或阿拉伯?dāng)?shù)字,且X2和X3之間有1個(gè)小圓點(diǎn)。車(chē)牌字符總長(zhǎng)度為409mm,其中單個(gè)字符寬度為45mm,高度為90mm,第2和第3字符間距為34mm,其中中間小圓點(diǎn)寬度為10mm,與第2和3字符間距為12mm,其余字符間距為12mm。根據(jù)實(shí)際車(chē)牌情況(普通車(chē)、警車(chē)、軍車(chē)等),可確定不同類(lèi)的模板。以普通車(chē)為例,其字符寬度和字符串的結(jié)構(gòu)比例關(guān)系如圖2所示。
2.1 定位字符的位置
根據(jù)車(chē)牌先驗(yàn)知識(shí),把低于平均水平的像素部分削去,為了與模板脈沖做卷積[6],取最大值可提供更高的可靠性??紤]到要形成的與字符模板匹配的脈沖波形是與另一個(gè)數(shù)組做卷積,所以形成的脈沖波形應(yīng)先翻轉(zhuǎn)過(guò)來(lái),做卷積時(shí)才能按照先驗(yàn)知識(shí)進(jìn)行模板匹配。由于前面已經(jīng)讀出了車(chē)牌圖像的寬度,所以字符的寬度上限可以定為車(chē)牌寬度的七分之一,這樣會(huì)減小計(jì)算量而又不會(huì)漏掉字符每一個(gè)可能的寬度。每個(gè)字符的寬度從初始位置開(kāi)始到字符的寬度上限,步長(zhǎng)為1,可以生成一系列模板脈沖來(lái)分別對(duì)投影圖像做卷積,取每個(gè)卷積的峰值和位置,然后在這些卷積的峰值中再取最大值,這樣就可以求出匹配性最好的情況所對(duì)應(yīng)的字符寬度w。再根據(jù)卷積的性質(zhì),用最大值的位置減去409*w/45(根據(jù)先驗(yàn)知識(shí)得到),就可以得到第一個(gè)字符的起始位置t0。有了w和t0,可以根據(jù)先驗(yàn)知識(shí)定出這七個(gè)字符的水平坐標(biāo),如圖3所示。
2.2 字符分割
為了分割出每個(gè)字符,首先將原車(chē)牌圖像向水平方向投影,并進(jìn)行歸一化。設(shè)定一個(gè)平均水平的閾值,從兩邊向中間逐個(gè)比較,當(dāng)像素統(tǒng)計(jì)值大于這個(gè)閾值的時(shí)候,記下這兩個(gè)位置,這便是字符豎直方向的坐標(biāo)。這兩個(gè)位置的差值就是字符的高度。有了豎直方向的初始位置t0和字符高度height,每個(gè)字符的豎直位置也確定了。
得到字符的坐標(biāo)后還應(yīng)注意一點(diǎn),在Matlab二維圖片[7]中坐標(biāo)原點(diǎn)在左上角,向下為x軸,向右為y軸,在輸入坐標(biāo)的時(shí)候要避免混淆。有了豎直方向的初始位置r0和字符高度height,水平方向的初始位置t0和字符寬度w,可以定位出每個(gè)字符的坐標(biāo)范圍,將它們分別分割出來(lái)。車(chē)牌字符分割效果如圖4和圖5所示。
3 車(chē)牌字符分割的實(shí)驗(yàn)結(jié)果及其分析
對(duì)于二值圖像進(jìn)行分割的核心算法雖然已經(jīng)實(shí)現(xiàn),但是在對(duì)大量二值圖像運(yùn)算的時(shí)候,經(jīng)常出現(xiàn)諸如下標(biāo)越界、水平方向的初始位置為負(fù)等情況,這些都對(duì)字符分割的正確率產(chǎn)生了嚴(yán)重的影響。圖片太小也會(huì)影響字符的分割和識(shí)別。
針對(duì)圖片太小的問(wèn)題,根據(jù)車(chē)牌外輪廓尺寸:440mm×140mm對(duì)二值圖像進(jìn)行放大尺度變換,使其近似于車(chē)牌的大小。在字符定位用到的下標(biāo)進(jìn)行四舍五入(下標(biāo)必須為整數(shù)),使其更接近于字符的真正邊界,降低“切歪”的概率。采取這個(gè)措施針對(duì)原圖像進(jìn)行尺度放大提高了字符的識(shí)別率。
當(dāng)原來(lái)的代碼[8]不能處理的時(shí)候需要在下標(biāo)越界、起始位置t0為負(fù)的兩種情況下進(jìn)行下面兩種方法的嘗試。
⑴ 在主代碼之后用if語(yǔ)句,在下標(biāo)越界或者t0為負(fù)的情況下,將字符寬度w取為字符高度的一半(根據(jù)先驗(yàn)知識(shí)),然后用此字符寬度w的脈沖和投影圖做卷積,得出的t0t0即為字符水平方向的開(kāi)始坐標(biāo)。有了t0和w,便可以框出字符。這種方法在不對(duì)原圖進(jìn)行尺度放大的情況下較為適宜,在一定程度上可以提高分割的正確率,而且在主代碼沒(méi)有出現(xiàn)下標(biāo)越界或者t0為負(fù)的時(shí)候并不運(yùn)行。這是其可取之處。
但是這種方案還是有較大的局限性,尤其用在對(duì)灰度圖進(jìn)行尺寸放大的時(shí)候幾乎不起作用。這是因?yàn)楸疚倪M(jìn)行的放大并不是進(jìn)行寬高等比例放大,破壞了原有的寬高比例關(guān)系,故不適用。由此引出了方案2。
⑵ 在進(jìn)行調(diào)試以后發(fā)現(xiàn),w很容易取值偏大,而且w取值偏大了以后會(huì)直接影響t0的值,從而出現(xiàn)下標(biāo)越界和t0為負(fù)的情況。我們放棄if選擇結(jié)構(gòu)轉(zhuǎn)而采用while循環(huán)結(jié)構(gòu),每當(dāng)出現(xiàn)下標(biāo)越界或者t0為負(fù)的情況,對(duì)w進(jìn)行減1操作,然后做卷積運(yùn)算,再進(jìn)行判斷,若還出現(xiàn)上述情況,則將w繼續(xù)減1,直到不出現(xiàn)下標(biāo)越界和t0為負(fù)的情況為止。經(jīng)過(guò)驗(yàn)證,這是比較可取的方案。
但是此時(shí)發(fā)現(xiàn),前面提到的把低于平均水平的像素部分給削去這部分操作會(huì)降低分割的準(zhǔn)確率,而且這部分操作并非必要條件,權(quán)衡利弊,在采用方案2的同時(shí),我們把“削底”這部分去掉。
綜上所述,在對(duì)車(chē)牌字符進(jìn)行分割的時(shí)候遇到的下標(biāo)越界、t0為負(fù)、圖片太小分割出現(xiàn)誤差等問(wèn)題,都得到了較好的解決。運(yùn)行MATLAB出現(xiàn)錯(cuò)誤提示的幾率大大降低。
另外,把原圖像進(jìn)行尺度縮放以后效果非常好,如圖6所示,圖6(a)為未進(jìn)行尺度變換的分割結(jié)果,圖6(b)為進(jìn)行了尺度變換的分割結(jié)果。對(duì)圖像進(jìn)行比較發(fā)現(xiàn),經(jīng)過(guò)尺度變換的分割結(jié)果定位更精準(zhǔn),給字符的識(shí)別創(chuàng)造了良好的條件。
4 結(jié)束語(yǔ)
字符分割是車(chē)牌識(shí)別系統(tǒng)的重要組成部分,字符分割的好壞直接影響到整個(gè)系統(tǒng)對(duì)車(chē)牌字符識(shí)別的準(zhǔn)確率和識(shí)別速度。本文根據(jù)車(chē)牌識(shí)別技術(shù)的特點(diǎn),著重對(duì)字符分割這個(gè)關(guān)鍵模塊進(jìn)行了研究,把車(chē)牌區(qū)域的投影和脈沖做卷積以確定各個(gè)字符的位置,提取出一個(gè)個(gè)單獨(dú)的字符,該方法能夠使字符分割的結(jié)果定位更加精準(zhǔn),給字符識(shí)別創(chuàng)造了良好的條件。
參考文獻(xiàn):
[1] 朱俊梅,陳少平.基于改進(jìn)的投影方法的車(chē)牌圖像字符分割[J].中南民族大學(xué)學(xué)報(bào),2007.26(4):58-61
[2]劉明軍,謝宏霖,孫雪松等.車(chē)牌字符分割算法的比較研究[J].濟(jì)南大學(xué)學(xué)報(bào),2006.30(3):246-248
[3] 王興玲.最大類(lèi)間方差車(chē)牌字符分割的模版匹配算法[J].計(jì)算機(jī)工程,2006.32(19):193-195
[4] 夏良正,李久賢.數(shù)字圖像處理[M].東南大學(xué)出版社,2006.
[5] 高勇.車(chē)牌識(shí)別系統(tǒng)中的字符分割與識(shí)別[D].安徽大學(xué),2007.
[6] 鄭君里等.信號(hào)與系統(tǒng)[M].高等教育出版社,2000.
[7] 張宏林.Visual C++數(shù)字圖像模式識(shí)別技術(shù)及工程實(shí)踐[M].人民郵電出版社,2003.
[8] 董長(zhǎng)虹,賴志國(guó),余嘯海.Matlab圖像處理與應(yīng)用[M].國(guó)防工業(yè)出版社,2004.