周 毅
(廣西交通科學(xué)研究院有限公司,廣西 南寧 530007)
隨著經(jīng)濟(jì)發(fā)展,車(chē)牌識(shí)別系統(tǒng)已逐漸成為智能道路系統(tǒng)中重要的組成部分,在交通管理中應(yīng)用廣泛。相關(guān)車(chē)輛管理部門(mén)通過(guò)建立智能交通系統(tǒng),實(shí)時(shí)、全面、準(zhǔn)確、高效地獲取道路車(chē)輛數(shù)量、車(chē)輛類(lèi)型的交通狀況,進(jìn)行超速、違章停車(chē)等信息的收集,對(duì)數(shù)據(jù)處理和分析,便于車(chē)輛實(shí)時(shí)檢測(cè)。隨著交通監(jiān)控的普及,道路交通工作人員需要根據(jù)需求查看和處理越來(lái)越多的交通視頻,工作人員在某些情況下,為了提高工作效率,只需要快速查看視頻中的車(chē)輛信息,但是現(xiàn)在道路交通狀況多為攝像機(jī)監(jiān)控,獲取的原始視頻包含眾多復(fù)雜信息,其中與車(chē)輛無(wú)關(guān)的行人信息為工作人員的工作增添了麻煩。而在眾多視頻中快速檢測(cè)到車(chē)輛目標(biāo)并提取車(chē)輛車(chē)牌,既可以節(jié)約相關(guān)道路部門(mén)的人力成本,又提高了工作的效率。車(chē)牌識(shí)別技術(shù)主要是從復(fù)雜背景中提取和識(shí)別車(chē)輛牌照,最終達(dá)到識(shí)別車(chē)輛號(hào)碼、顏色等信息的目的。車(chē)牌識(shí)別是機(jī)器視覺(jué)的重要組成部分。車(chē)牌的成功定位與車(chē)牌的有效識(shí)別密切相關(guān),因此為了盡可能地定位車(chē)牌,有必要保證車(chē)牌圖像在車(chē)輛圖像中的分割。
同時(shí),車(chē)牌定位系統(tǒng)已發(fā)展成為現(xiàn)代智能交通系統(tǒng)中重要的、不可替代的一部分。它廣泛應(yīng)用于道路交通收費(fèi)站、城市道路違章監(jiān)測(cè)和重大停車(chē)監(jiān)控等道路交通管理,實(shí)現(xiàn)智能化的道路交通。
OpenCV是“Open Source Computer VisiON Library”的簡(jiǎn)寫(xiě),是Intel開(kāi)源計(jì)算機(jī)視覺(jué)庫(kù)。在程序算法的具體設(shè)計(jì)實(shí)現(xiàn)過(guò)程中,OpenCV的運(yùn)用提高了程序的運(yùn)行速度、可靠性與準(zhǔn)確性。在保證程序的運(yùn)行速度的基礎(chǔ)上,需要進(jìn)一步提高程序性能。因此研究人員需要投入更多對(duì)算法的研究,然后利用OpenCV函數(shù)加以實(shí)現(xiàn),不需要重新用c語(yǔ)言或者c++設(shè)計(jì)實(shí)現(xiàn)函數(shù),從而可以大大縮減研發(fā)時(shí)間。
完整的車(chē)牌識(shí)別系統(tǒng)主要包括硬件和軟件系統(tǒng)兩部分,硬件部分包括觸發(fā)裝置、CCD圖像采集裝置;軟件算法部分包括圖像預(yù)處理、圖像單通道化、二值化、車(chē)牌位置提取、字符分割識(shí)別等部分組成。如圖1所示,當(dāng)有車(chē)輛通過(guò)出發(fā)裝置時(shí),利用CCD攝像頭對(duì)車(chē)輛進(jìn)行拍照,進(jìn)而采集圖像,將采集的圖片傳送至計(jì)算機(jī)進(jìn)行處理,處理過(guò)程是:(1)需要預(yù)處理,預(yù)處理的過(guò)程可進(jìn)行圖像大小適應(yīng)性調(diào)整、圖像質(zhì)量增強(qiáng)、濾波等操作;(2)對(duì)車(chē)牌區(qū)域進(jìn)行粗定位,定位的準(zhǔn)確對(duì)后續(xù)的字符分割有重要影響,所以還要進(jìn)行精定位,定位準(zhǔn)確完成后,對(duì)字符進(jìn)行分割、識(shí)別;(3)完成車(chē)牌識(shí)別的目標(biāo)。
圖1 車(chē)輛識(shí)別過(guò)程示意圖
預(yù)處理能有效地改善圖像的質(zhì)量,突出有效區(qū)域,減少后期的數(shù)據(jù)量,在雙目攝像頭實(shí)時(shí)獲取圖像過(guò)程中,會(huì)出現(xiàn)光照強(qiáng)度驟變、背景有微小物體波動(dòng)、攝像頭晃動(dòng)等突發(fā)情況,使背景建模困難重重,會(huì)對(duì)后期分離車(chē)輛目標(biāo)的精度和穩(wěn)定性產(chǎn)生很大的影響。通過(guò)預(yù)處理消除運(yùn)動(dòng)車(chē)輛檢測(cè)過(guò)程中的瞬時(shí)環(huán)境噪聲。
車(chē)牌圖片在成像過(guò)程中往往會(huì)受很多因素影響,比如天氣環(huán)境、光照強(qiáng)度變化、設(shè)備出現(xiàn)干擾等都會(huì)影響圖片的成像質(zhì)量。因此,預(yù)處理是此系統(tǒng)中很重要的第一步。預(yù)處理的目的是消除圖像中的噪聲,提高圖像的識(shí)別率,便于下一步進(jìn)行后續(xù)的圖像處理工作,提高車(chē)牌定位及識(shí)別的效率。經(jīng)預(yù)處理后的實(shí)驗(yàn)效果如圖2所示。
圖2 圖像預(yù)處理結(jié)果示例圖
將由RGB描述的三通道圖像變換為由灰度描述的單通道圖像的過(guò)程叫做圖像的灰度處理。對(duì)任意一個(gè)彩色RGB圖像均可解析為由紅Red、綠Green、藍(lán)Blue三種顏色描述的三維矩陣,即每一個(gè)像素點(diǎn)的顏色由這三個(gè)分量來(lái)描述,每個(gè)分量的取值范圍為0到255。由此可見(jiàn),每一個(gè)像素具有大約16 000 000(256×256×256)顏色?;叶葓D像僅由一個(gè)通道表示顏色數(shù)據(jù),在使用計(jì)算機(jī)處理時(shí),相較于RGB圖像,減少了67%的數(shù)據(jù)處理量,提高處理效率。最重要的是灰度圖像仍能反映整個(gè)圖像的局部色度和亮度等級(jí)的分布和特征。
本文采用經(jīng)典的彩色RGB圖像到單通道灰度圖像的轉(zhuǎn)換方法,即建立灰度Gray與紅色R、綠色G、藍(lán)色B三個(gè)顏色分量的對(duì)應(yīng)關(guān)系:Gray=(R*30+G*59+B*11+50)/100,完成圖像灰度化過(guò)程。并采用OpenCV中的顏色空間轉(zhuǎn)換函數(shù)cvtColor()來(lái)實(shí)現(xiàn)。
灰度拉伸主要是通過(guò)選擇性地拉伸灰度級(jí)來(lái)改善圖像的質(zhì)量。如圖3所示,變換函數(shù)的結(jié)果是將原始圖像從A到B拉伸到C到D。如果圖像的灰度集中在較暗區(qū)域并使圖像變暗,則可以使用灰度拉伸函數(shù)來(lái)拉伸(斜率>1)對(duì)象。灰度范圍改善圖像。類(lèi)似地,如果圖像集中在較亮的區(qū)域,則圖像更明亮,并且灰度擴(kuò)展函數(shù)也可以用于壓縮對(duì)象的灰度范圍(斜率<1)來(lái)提高圖像質(zhì)量。本文所實(shí)現(xiàn)的車(chē)牌識(shí)別系統(tǒng)中的預(yù)處理部分的灰度拉伸采用線(xiàn)性灰度拉伸。
圖3 圖片灰度拉伸變換函數(shù)示意圖
二值圖像是指圖像中僅有黑白二種顏色的圖像(黑、白的灰度值分別為0與255)。二值圖像處理簡(jiǎn)單,特征明顯,是研究的熱點(diǎn)。圖像的二值化后圖像變得簡(jiǎn)單,數(shù)據(jù)量減小,再利用經(jīng)典的形態(tài)學(xué)方法處理膨脹腐蝕,能輕松檢測(cè)到目標(biāo)的輪廓,進(jìn)而能夠?qū)δ繕?biāo)檢測(cè)、定位。一般而言,二值圖像是由灰度圖像轉(zhuǎn)換而來(lái)。
最簡(jiǎn)單的二值化方法是固定閾值分離方法,對(duì)單通道灰度圖像中像素點(diǎn)的值大于或等于閾值的像素,改變其灰度值為255,對(duì)于灰度值小于閾值的像素點(diǎn),將其灰度值改為0。固定閾值二值化法,實(shí)現(xiàn)簡(jiǎn)單,但是分離效果有限,遷移性不強(qiáng),對(duì)于不同的圖像都需要手動(dòng)選擇閾值,只能應(yīng)用于極少特定場(chǎng)景。一般經(jīng)常采用的是自適應(yīng)閾值二值化法。該方法無(wú)需設(shè)置閾值,而是根據(jù)像素鄰域的灰度來(lái)將他們轉(zhuǎn)化為黑或白。該方法目前被普遍設(shè)置。
以上兩種方法對(duì)應(yīng)OpenCV中cvThreshold()和cvAdaptiveThreshold()兩個(gè)函數(shù)。本文選用自適應(yīng)二值化方法處理車(chē)牌后的效果如圖4所示。
圖4 黑底白字效果圖
由圖4可以看出,首先將車(chē)牌進(jìn)行初步定位,定位后的車(chē)牌區(qū)域還是原始圖像的信息,并沒(méi)有經(jīng)過(guò)任何處理,車(chē)牌進(jìn)行灰度化之后,車(chē)牌號(hào)變?yōu)榛叶葓D像,數(shù)據(jù)處理的速度明顯增快,算法的計(jì)算量變少,經(jīng)過(guò)灰度化后的車(chē)牌下一步需要進(jìn)行二值化處理,車(chē)牌號(hào)經(jīng)過(guò)二值化處理后,圖片質(zhì)量增強(qiáng),車(chē)牌號(hào)明顯變得清晰,車(chē)牌號(hào)變得更易識(shí)別。比起灰度化的效果,車(chē)牌二值化后的效果圖更加清晰可見(jiàn)。經(jīng)過(guò)灰度化與二值化的處理,車(chē)牌區(qū)域更容易識(shí)別與定位,因此這兩個(gè)步驟在本系統(tǒng)中具有重要作用,是車(chē)牌識(shí)別的重要依據(jù)。
車(chē)牌定位主要的任務(wù)是從獲取的圖像中分離出車(chē)牌號(hào)所在的區(qū)域。因?yàn)樵谲?chē)牌區(qū)域中最主要的就是紋理特征,其中包含大量邊緣信息,利用邊緣檢測(cè)算子提取出輪廓特征后,便可以利用邊緣特點(diǎn)對(duì)整個(gè)車(chē)牌圖像進(jìn)行處理,標(biāo)記出有效的車(chē)牌信息,并進(jìn)行分割定位。這可以大大地促進(jìn)車(chē)牌的定位準(zhǔn)確,便于下一步精確快速地識(shí)別車(chē)牌號(hào)。因此,本方案中選用了一種基于邊緣檢測(cè)和區(qū)域搜索的車(chē)牌定位分割算法,該方法運(yùn)算復(fù)雜度較低,有利于實(shí)現(xiàn)系統(tǒng)的快速性。
邊緣檢測(cè)是根據(jù)算法提取圖像中的邊界,將圖像從背景中分離出來(lái)。Sobel邊緣檢測(cè),其主要作用是識(shí)別有用信息,首先算子與圖像相卷積,其具有方向性,方向?yàn)槊總€(gè)邊緣點(diǎn)變化方向,其中灰度跳變劇烈的點(diǎn)就是邊緣點(diǎn),圖像梯度較亮的那一部分就是檢測(cè)中需要輸出的邊緣,從而可以得到圖像的邊緣信息。Sobel邊緣檢測(cè)在應(yīng)用過(guò)程中實(shí)用性比較強(qiáng),效率相對(duì)于其他算法較高,減少冗余信息的混亂,消除了噪聲的影響,相比于其他算法,實(shí)時(shí)性較強(qiáng),且運(yùn)算簡(jiǎn)單,但是檢測(cè)細(xì)紋理方面不如其他算子效果好。因此,本文采用Sobel邊緣檢測(cè)選擇邊緣信息。Sobel算子模板表示如圖5所示:
(a)水平模板
(b)垂直模板
邊緣檢測(cè)的第一步是確定圖像中的邊緣像素,把所有的邊緣像素連接到一起就是邊緣。這樣會(huì)排除很多干擾,也能獲得連續(xù)的邊緣,但是可能會(huì)損失一定的精度。如圖6所示,經(jīng)過(guò)Sobel算子邊緣檢測(cè)后,車(chē)牌的圖片信息并沒(méi)有丟失,反而呈現(xiàn)了清晰的輪廓,此算法完整地提取了車(chē)牌號(hào)輪廓。為下一步的定位與識(shí)別打下了重要的基礎(chǔ)。
圖6 sobel算子邊緣檢測(cè)車(chē)牌示例圖
車(chē)牌區(qū)域的搜索對(duì)于后續(xù)工作影響很大,首先應(yīng)確立車(chē)牌區(qū)域,才能進(jìn)行下一步的車(chē)牌判定,因此可以先進(jìn)行區(qū)域搜索,保證進(jìn)一步縮小檢測(cè)的范圍,大大降低工作量,使整個(gè)系統(tǒng)運(yùn)行更快速,運(yùn)算更簡(jiǎn)單。所以如何快速搜索車(chē)牌區(qū)域并縮小范圍直接關(guān)系到最后的實(shí)驗(yàn)結(jié)果。在實(shí)際應(yīng)用中,首先需要確定上下邊界和左右邊界,行掃描和列掃描可以滿(mǎn)足對(duì)它們的搜索和確立。行掃描確定上下邊界來(lái)掃描和檢索從左到右和從上到下的每一行像素。如果跳轉(zhuǎn)點(diǎn)為1,而且跳轉(zhuǎn)變量大于閾值M,則將其視為可能的照片區(qū)域,并將其設(shè)置為下邊界。如果大于M的跳轉(zhuǎn)變量的數(shù)量超過(guò)閾值N,則被認(rèn)為是正確的車(chē)牌區(qū)域。最后一行設(shè)置為上界,否則行數(shù)為0,然后重新搜索牌照較低的邊界。
上述方法不止一個(gè)候選區(qū)域,因此需要對(duì)它們加以區(qū)分,才能準(zhǔn)確定位車(chē)牌區(qū)域。由于車(chē)牌的大小是已知的,所以使用尺寸、長(zhǎng)度、寬度比作為標(biāo)準(zhǔn),進(jìn)行真實(shí)車(chē)牌區(qū)域的判斷。最終定位結(jié)果如圖7所示。
圖7 車(chē)牌定位示意圖
由圖7可以看出:原始圖像中主要是利用攝像機(jī)對(duì)車(chē)輛進(jìn)行抓拍,整幅圖像中車(chē)牌部位并不是很清晰,接著從原始圖像中提取車(chē)牌信息。初步提取后的車(chē)牌圖片、數(shù)字并不是十分清晰,經(jīng)過(guò)二值化后,車(chē)牌變?yōu)楹诎追植?,?chē)牌號(hào)清晰可見(jiàn),便于識(shí)別,最后程序運(yùn)行識(shí)別出的車(chē)牌號(hào)結(jié)果為新N86808,與車(chē)牌號(hào)完全一致,說(shuō)明本文的算法可以準(zhǔn)確完整無(wú)誤地識(shí)別出車(chē)牌號(hào)碼,具有較高的準(zhǔn)確性,可以應(yīng)用到實(shí)際檢測(cè)過(guò)程中。但是實(shí)驗(yàn)中還存在著一個(gè)重要問(wèn)題:當(dāng)實(shí)驗(yàn)采集的汽車(chē)圖像中的車(chē)牌區(qū)域的顏色與整幅圖像的顏色趨近于相似,本文所采用的算法對(duì)于這種情況會(huì)出現(xiàn)誤差,對(duì)車(chē)牌定位達(dá)不到要求的精度,因此本算法還需改進(jìn)。
本文提出的嵌入式視頻監(jiān)控系統(tǒng)基于VS2015平臺(tái),采用OpenCV的高效算法實(shí)時(shí)對(duì)獲取的視頻流進(jìn)行車(chē)牌號(hào)提取。實(shí)驗(yàn)結(jié)果表明,本文提出的車(chē)牌定位算法在實(shí)際應(yīng)用中能夠很好地進(jìn)行車(chē)牌定位與識(shí)別,大大降低了勞動(dòng)強(qiáng)度,提高了工作效率,且檢測(cè)成本低,對(duì)視頻實(shí)時(shí)處理效果顯著,因此具有較高的實(shí)用性與準(zhǔn)確性。本實(shí)驗(yàn)良好的實(shí)時(shí)性能為有效的車(chē)牌識(shí)別提供參考。