本發(fā)明涉及計算機視覺領域,特指一種基于灰度投影的車牌字符分割方法。
背景技術:
隨著現(xiàn)代化交通的發(fā)展,車輛牌照自動識別技術越來越受到人們的重視,是近年來計算機視覺與模式識別技術在智能交通領域的重要研究課題之一。車輛牌照自動識別系統(tǒng)可用于公路收費站、停車場、十字路口等場所的車輛管理,對于道路交通和停車場車輛管理具有重要的促進作用。
車牌識別技術包括車牌定位、字符分割和字符識別3個基本環(huán)節(jié),其中車牌定位是字符分割和字符識別的前提,而車牌字符分割是車牌識別的基礎。
在實際的車牌圖像字符分割中,通常會存在很多困難。具體體現(xiàn)在以下幾點。首先,在具體應用中采集到的圖片背景比較復雜,這對于圖像的處理明顯增加了難度。其次,采集得到的圖片受天氣、光照等的影響,故在圖像處理過程中需要利用有效的算法排除光照、天氣對圖像的影響,這無疑對我們車牌識別分割的算法提出了更高的要求。這就需要研究性能更好的算法來提高算法的魯棒性。第三,在實際采集的圖片中,很多采集到的車牌是舊車車牌,或者是贓車車牌,這造成圖片中的車牌區(qū)域很模糊、車牌區(qū)域的顏色信息丟失、車牌字符粘連等情況。這對車牌的定位、分割、識別都增加了難度。第四,由于在路上行駛的車輛所掛的車牌多是在標準GA36-1992下生產(chǎn)的,由于該標準的不嚴密性,在該標準下生產(chǎn)的號牌其色度值分布范圍廣,再加上一條原因,從而使得采集所得到的號牌其色度值分布范圍廣泛,從而加大了我們對該信息利用的難度。在同一副待分割的車牌圖像中,上面提到的困難可能幾項都存在而不僅僅是單一困難的存在,當其中幾項困難一起存在時,其帶來的難度并不是簡單相加的過程,所以難度更大。這些就是存在于車牌識別系統(tǒng)中的一些問題,從這些問題中,我們也能隱約看到車牌識別系統(tǒng)中車牌分割的難度。
針對上述現(xiàn)實問題,本發(fā)明提出了一種基于灰度投影的車牌字符分割的方法。本方法車牌字符讀取可靠性高,識別度好,魯棒性好,同時步驟計算簡單,能保持高效率,實時性也能滿足需求。
技術實現(xiàn)要素:
針對現(xiàn)行車牌識別中存在的這些特定難點問題,為了提高監(jiān)控系統(tǒng)的車牌識別的準確程度,并使其滿足實時性需求,本發(fā)明提出一種基于灰度投影的車牌字符分割方法,其具體技術方案如下:
一種基于灰度投影的車牌字符分割方法,包括以下步驟:
S1)去除輸入車牌區(qū)域圖像的車牌邊框;
S2)采用投影法對車牌字符進行分割。
作為本發(fā)明的優(yōu)選技術方案,
所述步驟S1)具體包括:
S1.1)車牌上下邊框的去除;
S1.2)車牌左右邊框的去除;
所述步驟S2)具體包括:
S2.1)對車牌圖像進行字符的對比度增強;
S2.2)對前面增強的車牌圖像,按列累加圖像的像素值,得到車牌的投影曲線,并采用濾波平滑所述投影曲線;
S2.3)采用投影法進行字符分割。
作為本發(fā)明的優(yōu)選技術方案,所述步驟S1.1)包括:
S1.1.1)獲取車牌候選區(qū)域的二值化閾值,從而得到候選區(qū)域的二值圖像,為了排除車牌傾斜角度的影響我們求取該二值圖像中間部分的行和,然后將行和處理如下:
S1.1.2)從中間向兩端開始尋找rowsum的上下方向上有一段距離為零的邊界,該距離為0.75×height,此時我們得到的邊界就是最后所需要的車牌上下邊界;根據(jù)所得車牌上下邊界去除車牌上下邊框;
所述步驟S1.2)包括:
S1.2.1)用與去除上下邊框相同的方法來找到一個車牌左右邊框的邊界:left1,right1;
S1.2.2)重新構(gòu)建一個二值圖像再用和S1.2.1)相同的投影法來尋找邊界left2,right2;此時構(gòu)建的二值圖像根據(jù)車牌區(qū)域HSI模型的h值來二值化圖像;首先對車牌區(qū)域的中間區(qū)域來統(tǒng)計其h值的范圍,然后根據(jù)該范圍對全部車牌區(qū)域進行二值化,就得到了我們需要的二值化圖像;
S1.2.3)根據(jù)S1.2.1)和S1.2.2)得到的兩個邊界信息來確定最后的邊界;最后確定的邊界可以用下面式子表示:
left=max(left1,left2)
right=min(right1,right2)
根據(jù)所得車牌左右邊界去除車牌左右邊框。
作為本發(fā)明的優(yōu)選技術方案,所述步驟S2.1)中,采用車牌增強算法如下:
S2.1.1):統(tǒng)計整個車牌區(qū)域內(nèi)像素點的最大像素值和最小像素值maxvalue,minvalue;
S2.1.2):設置需要增強的像素點數(shù)占全部像素點數(shù)的比例系數(shù)coef;
S2.1.3):統(tǒng)計0-255像素值上對應出現(xiàn)的像素點的個數(shù),并存儲在1×255的數(shù)組count(1,i)里面;
S2.1.4):從count(1,i),i=255開始往下統(tǒng)計像素點的個數(shù),如果統(tǒng)計的像素點pixelnum<width*height*coef則將i-1繼續(xù)統(tǒng)計,否則停止統(tǒng)計并記下當前的像素值index;
S2.1.5):車牌區(qū)域每一點按下面的方法進行增強:
經(jīng)過上面的變換后,完成圖像字符的對比度的增強。
作為本發(fā)明的優(yōu)選技術方案,所述步驟S2.3)具體包括如下步驟:
S2.3.1):根據(jù)車牌的灰度投影曲線圖可得,車牌后面最多出現(xiàn)五個雙峰結(jié)構(gòu),故搜索出前五個最大波谷點,然后判斷該前五個最大波谷點是否為雙峰結(jié)構(gòu)中的波谷點,如果是,則將該雙峰結(jié)構(gòu)的起止位置記下;
S2.3.2):確定車牌字符寬度characterwidth;如果步驟S2.3.1)檢測到了雙峰結(jié)構(gòu),則字符寬度就取為檢測到的所有雙峰結(jié)構(gòu)的平均值,否則字符寬度就取前3個單峰寬度中的最大值;
S2.3.3):設置字符起始點為第二字符和第三字符的分割點,設置結(jié)束點為車牌最后一個波谷點;如果在步驟S2.3.1)中檢測到了雙峰結(jié)構(gòu)則進行步驟S2.3.4),否則進行步驟S2.3.5);
S2.3.4):設置字符臨時分割段起始點為字符起始點,字符臨時分割段終點為一個雙峰結(jié)構(gòu)起始位置,然后在字符臨時分割段里進行檢測,如果該字符臨時分割段里有一個峰結(jié)構(gòu),則該峰結(jié)構(gòu)就單獨為一個字符,如果該字符臨時分割段里有兩個峰結(jié)構(gòu),則先判斷這兩個峰結(jié)構(gòu)是一個雙峰字符還是兩個單峰字符,具體判斷規(guī)則就利用這兩個峰結(jié)構(gòu)的寬度,以及該寬度和字符寬度進行比較;如果這兩個峰結(jié)構(gòu)寬度之和小于字符寬度的1.2倍且這兩個峰結(jié)構(gòu)寬度相差很小,則這兩個峰結(jié)構(gòu)為一個雙峰字符的投影,反之為兩個單峰字符,且可以肯定兩個單峰字符的前面一個峰結(jié)構(gòu)就是一個字符,將其前面的一個峰結(jié)構(gòu)分割出來然后更新字符臨時分割段如下:將字符臨時分割段的起點更新到被分割出來的峰后面,字符臨時分割段終點不變,但是如果此時字符臨時分割段的起點等于終點時則將其起點更新到先前的雙峰結(jié)構(gòu)的終止位置,并將臨時分割段的終點更新到下一個雙峰結(jié)構(gòu)的起點,如果后面沒有雙峰結(jié)構(gòu)了則將臨時分割段的終點更新為字符結(jié)束點,然后重復步驟S2.3.4)直到分割到字符結(jié)束點為止;
S2.3.5):從字符起始點開始分割直到分割出5個字符;在分割中需要檢測相鄰的兩個峰結(jié)構(gòu)是不是一個字符的雙峰曲線,檢測所利用的方法和步驟S2.3.4)中相同,利用兩個峰的寬度和該寬度與字符寬度之間的關系進行判斷;
S2.3.6):根據(jù)分割出的后面五個字符來分割前面兩個字符;首先將分割出來的后面五個字符中的最大寬度作為前面兩個字符的寬度;前面兩個字符為字母或者漢字,使用后面五個字符中的最大寬度作為前面字符的寬度;分割前面兩個字符的方法為:從第二字符和第三字符的分割點向前移動字符寬度個像素,然后將離該第二字符和第三字符的分割點的最近一個波谷值作為車牌第一字符和第二字符的分割點,利用同樣方法也可以確定第一個字符的開始位置;
S2.3.7):對分割出來的字符序列進行檢測,看該字符序列是否符合車牌字符序列的特征,該特征可以用下面表達式來表示,假設dis1為前面兩個字符的寬度向量,dis2為后面五個字符的度向量,width為車牌寬度,height為車牌高度,則一個合理的車牌字符序列必須滿足下面的表達式:
min(min(dis1),min(dis2))>width/10
max(dis2)/width/5
height/min(dis1)<3
根據(jù)上述表達式從車牌區(qū)域中分割出字符序列。
本發(fā)明相對于現(xiàn)有技術而言,本發(fā)明的有益效果在于:
本方法有效克服了圖像處理過程中圖片背景比較復雜、天氣和光照影響、以及舊車車牌或贓車車牌的車牌區(qū)域模糊等困難,使得車牌字符讀取可靠性高,識別度好,魯棒性好,同時步驟計算簡單,能保持高效率,實時性也能滿足需求,提高了監(jiān)控系統(tǒng)的車牌識別的準確程度,對于道路交通和停車場車輛管理具有重要的促進作用。
附圖說明
圖1是本發(fā)明整體算法流程圖;
圖2是本發(fā)明車牌圖像增強算法效果圖;
圖3是本發(fā)明字符分割算法流程圖;
圖4是本發(fā)明車牌投影曲線的濾波前后的效果圖。
具體實施方式:
以基于字符分割算法的灰度投影車牌識別的方法為例,結(jié)合附圖對本發(fā)明做進一步詳細說明。
S1.去除輸入車牌區(qū)域圖像的車牌邊框;
對于車牌圖像來說,在定位出來后的車牌圖像有兩種,一種是有邊框的車牌,而另一種是沒有邊框的車牌。我們將車牌候選區(qū)域旋轉(zhuǎn)至水平后就可以對車牌進行精確定位了,也就是對車牌邊框的去除。對測試數(shù)據(jù)進行統(tǒng)計分析可以得出:經(jīng)過定位旋轉(zhuǎn)后的車牌候選區(qū)域邊框有兩種,一種是車牌本身的邊框,而另一種是車牌周圍的白色背景與車牌一起被當作候選車牌區(qū)域,此時該白色背景也可以被看作是車牌的邊框。
車牌邊框的處理分為車牌上下邊框的處理和車牌左右邊框的處理。車牌的上下邊框的處理比較簡單,車牌的上下邊框分為兩種:一種是車牌本身的白色邊框,另一種是車牌上下位置的白色背景。而車牌的左右邊界也可以歸為這兩類,不過由于圖像本身的特征,一般來說車牌的上下邊框要寬于左右邊框,并且車牌左右邊框要復雜一些。
對于車牌的上下邊框的去除,本發(fā)明采取了下面步驟來處理:
S1.1上下邊框的去除;
S1.1.1以OTSU(大津算法)方法為例,可采用其他類似方法獲取車牌候選區(qū)域的二值化閾值;
用OTSU(大津算法)方法獲得車牌候選區(qū)域的二值化閾值,從而得到候選區(qū)域的二值圖像,為了排除車牌傾斜角度的影響我們求取該二值圖像中間部分的行和,然后將行和處理如下:
S1.1.2從中間向兩端開始尋找rowsum的上下方向上有一段距離為零的邊界,本發(fā)明算法中采用該距離為0.75×height,因為一般車牌的上下邊框去除的比較準確,故我們采用圖形高度來做參考距離。此時我們得到的邊界就是最后所需要的車牌上下邊界。
經(jīng)過上面處理后,對于大多數(shù)圖片我們就可以將其上下邊框進行處理掉,然后我們就可以對該車牌區(qū)域進行去除左右邊框了。
對于車牌的左右邊框的去除,本發(fā)明采取了下面步驟來處理:
S1.2左右邊框的去除;
S1.2.1用去除上下邊框相同的方法來找到一個左右邊框的邊界:left1,right1。
S1.2.2重新構(gòu)建一個二值圖像再用和第一步相同的投影法來尋找邊界left2,right2。此時構(gòu)建的二值圖像根據(jù)車牌區(qū)域HSI模型的h值來二值化圖像。首先對車牌區(qū)域的中間區(qū)域來統(tǒng)計其h值的范圍,然后根據(jù)該范圍對全部車牌區(qū)域進行二值化,就得到了我們需要的二值化圖像。
S1.2.3根據(jù)第一和第二步得到的兩個邊界信息來確定最后的邊界。最后確定的邊界可以用下面式子表示:
left=max(left1,left2)
right=min(right1,right2)
按照上述兩個步驟去邊框處理后,得到的車牌區(qū)域比原來定位出來原始車牌區(qū)域精確了些,但是并不是絕對的精確,我們可以將其看作是邊框去除過程中引入的誤差。本發(fā)明采用的分割算法能夠容忍在車牌邊框去除時存在的少許誤差。也就是說在去除車牌左右邊框時,邊框沒有完全去除并不影響我們隊字符的正確分割。
S2.車牌字符分割;
在進行分割字符前,必須要注意一個問題,那就是由于不同光照、和車牌臟舊等原因使得車牌的灰度圖像中背景和字符對比度不強,這對于后一步用投影法來進行字符分割會帶來一定的難度,故而在分割前需要先對車牌圖像進行字符的對比度增強。
一個完整的車牌區(qū)域字符像素占整個車牌區(qū)域像素的20%,對于某些圖片來說,雖然由于其他原因使得車牌中字符和背景的差異不是很大,但是總體上來說字符的像素值也比背景像素值高一些。故可以利用該特點來對車牌區(qū)域中前20%像素進行增強而對其他的像素進行抑制,從而到達增強目標字符抑制背景的目的。對此本發(fā)明采用車牌增強算法如下:
步驟1:統(tǒng)計整個車牌區(qū)域內(nèi)像素點的最大像素值和最小像素值maxvalue,minvalue。
步驟2:設置需要增強的像素點數(shù)占全部像素點數(shù)的比例系數(shù)coef,所述比例系數(shù)范圍在0-1之間,根據(jù)實際需要調(diào)整,通常原始車牌圖像較清晰,比例系數(shù)就較小,原始車牌圖像模糊,比例系數(shù)就大。
步驟3:統(tǒng)計0-255像素值上對應出現(xiàn)的像素點的個數(shù),并存儲在1×255的數(shù)組count(1,i)里面。
步驟4:從count(1,i),i=255開始往下統(tǒng)計像素點的個數(shù),如果統(tǒng)計的像素點pixelnum<width*height*coef則將i-1繼續(xù)統(tǒng)計,否則停止統(tǒng)計并記下當前的像素值index。
步驟5:車牌區(qū)域每一點按下面的方法進行增強:
經(jīng)過上面的變換后,就可以將圖像進行增強,如果原圖已有很好的對比度,經(jīng)過以上的變換也不會使圖像的效果變差,其效果圖如圖2所示。
從圖2的效果可以看出,前兩幅由RGB直接轉(zhuǎn)換為灰度圖像的車牌區(qū)域其對比度不是很明顯,經(jīng)過增強后背景和字符的對比度明顯好轉(zhuǎn),而原本對比度一般的車牌區(qū)域經(jīng)過增強后其效果也變得更好了。這樣的增強對下一步分割字符有利。因為本發(fā)明所采用的字符分割方法是基于灰度投影的算法,由于原本字符對比度不明顯,其灰度投影圖的波峰、波谷特征也不是很明顯,但是經(jīng)過圖像增強后,其灰度投影圖就能夠很好的表現(xiàn)其波峰波谷特征,有利用對字符的精確分割。
本發(fā)明所用的灰度投影分割字符充分利用了車牌字符的特點,與一般的投影分割相比有很大的優(yōu)越性。普通的投影分割就是利用灰度投影曲線的波谷點來對字符進行分割。本發(fā)明對這種普通的投影算法進行了改進大大提高了字符分割正確率。由車牌字符投影曲線可以看出,車牌圓點右邊的五個字符中除了字符就是數(shù)字,當然還有少數(shù)車牌為漢字。對于字符和數(shù)字來說,其投影曲線不是雙峰結(jié)構(gòu)就是單峰結(jié)構(gòu)。所以本發(fā)明在對字符進行分割充分利用該特征改進了投影分割算法。本發(fā)明字符分割算法流程圖如圖3所示。
進行字符分割前,對前面增強的車牌圖像,按列累加圖像的像素值,就可以得到車牌的投影曲線,但是得到的投影曲線有很多噪聲使其并不平滑,這影響系對字符的分割,所以首先需要將投影曲線進行平滑,在本算法中以高斯濾波為例來平滑投影曲線,用于濾波的核為[0.25,0.5,1,0.5,0.25]。圖4為車牌投影曲線的濾波前后的效果圖。從圖中可以很明顯的看出經(jīng)過濾波后的投影曲線比原曲線平滑了很多,且原曲線中的一些由噪聲引起的峰值也在濾波后消失了,這樣在檢測波峰波谷時就不會檢測出因噪聲產(chǎn)生的波峰波谷點。
由濾波后的車牌灰度投影圖,就可以根據(jù)該投影曲線來進行字符分割。本發(fā)明采用的是改進的投影法來進行字符分割。一般的投影法分割字符是直接利用波谷點來對字符進行分割,而本發(fā)明的投影法在分割字符時充分考慮了車牌字符的投影特征,具體步驟如下:
步驟1:根據(jù)車牌的灰度投影曲線圖可得,車牌后面最多出現(xiàn)五個雙峰結(jié)構(gòu),故搜索出前五個最大波谷點,然后判斷這些點是否為雙峰結(jié)構(gòu)中的波谷點,如果是,則將該雙峰結(jié)構(gòu)的起止位置記下。
步驟2:確定車牌字符寬度characterwidth。如果步驟1檢測到了雙峰結(jié)構(gòu),則字符寬度就取為檢測到的所有雙峰結(jié)構(gòu)的平均值,否則字符寬度就取前3個單峰寬度中的最大值。
步驟3:設置字符起始點為第二字符和第三字符的分割點,設置結(jié)束點為車牌最后一個波谷點。如果在步驟1中檢測到了雙峰結(jié)構(gòu)則進行步驟4,否則進行步驟5。
步驟4:設置字符臨時分割段起始點為字符起始點,字符臨時分割段終點為一個雙峰結(jié)構(gòu)起始位置,然后在字符臨時分割段里進行檢測,如果該段里有一個峰結(jié)構(gòu),則該峰就單獨為一個字符,如果該段里有兩個峰結(jié)構(gòu),則先判斷這兩個峰是一個雙峰字符還是兩個單峰字符,具體判斷規(guī)則就利用這兩個峰的寬度,以及該寬度和字符寬度進行比較。如果這兩個峰寬度之和小于字符寬度的1.2倍且這兩個峰寬度相差很小。則這兩個峰結(jié)構(gòu)為一個雙峰字符的投影,反之為兩個單峰字符,且可以肯定兩個單峰字符的前面一個峰結(jié)構(gòu)就是一個字符,所以可以將其前面的一個峰結(jié)構(gòu)分割出來然后更新字符臨時分割段如下:將字符臨時分割段的起點更新到被分割出來的峰后面,字符臨時分割段終點不變,但是如果此時字符臨時分割段的起點等于終點時則將其起點更新到先前的雙峰結(jié)構(gòu)的終止位置,并將臨時分割段的終點更新到下一個雙峰結(jié)構(gòu)的起點,如果后面沒有雙峰結(jié)構(gòu)了則將臨時分割段的終點更新為字符結(jié)束點,然后重復步驟4直到分割到字符結(jié)束點為止。
步驟5:進行到該步驟說明在檢測雙峰結(jié)構(gòu)時并未檢測到,但是并不代表該車牌內(nèi)不存在雙峰結(jié)構(gòu)的字符,并不能排除存在有雙峰結(jié)構(gòu)的字符。此時分割就直接從字符起始點開始分割直到分割出5個字符。在分割中需要檢測的就是檢測相鄰的兩個峰結(jié)構(gòu)是不是一個字符的雙峰曲線。檢測所利用的方法和步驟4中相同,利用兩個峰的寬度和該寬度與字符寬度之間的關系進行判斷。
步驟6:根據(jù)分割出的后面五個字符來分割前面兩個字符。首先將分割出來的后面五個字符中的最大寬度作為前面兩個字符的寬度。前面兩個字符為字母或者漢字,而字符也為雙峰結(jié)構(gòu)的,所以用后面五個字符中的最大寬度作為前面字符的寬度是合理的。分割前面兩個字符的方法為:從第二字符和第三字符的分割點向前移動字符寬度個像素,然后將離該點的最近一個波谷值作為車牌第一字符和第二字符的分割點。利用同樣方法也可以確定第一個字符的開始位置。
步驟7:對分割出來的字符序列進行檢測,看該序列是否符合車牌字符序列的特征。該特征可以用下面表達式來表示,假設dis1為前面兩個字符的寬度向量,dis2為后面五個字符看寬度向量,width為車牌寬度,height為車牌高度,則一個合理的車牌字符序列必須滿足下面的表達式:
min(min(dis1),min(dis2))>width/10
max(dis2)/width/5
height/min(dis1)<3
這樣就可以從車牌區(qū)域中分割出字符序列,從上面的算法步驟中可以看出,對于還有部分左右邊框的車牌,本發(fā)明的分割算法對其有很高的魯棒性。
本發(fā)明中提出的方法實際上可嵌入FPGA實現(xiàn),運用于具有實時輸出圖像功能的車牌識別功能的監(jiān)控系統(tǒng)相機或攝像機中。
本領域技術人員將清楚本發(fā)明的范圍不限制于以上討論的示例,有可能對其進行若干改變和修改,而不脫離所附權利要求書限定的本發(fā)明的范圍。盡管己經(jīng)在附圖和說明書中詳細圖示和描述了本發(fā)明,但這樣的說明和描述僅是說明或示意性的,而非限制性的。本發(fā)明并不限于所公開的實施例。
通過對附圖,說明書和權利要求書的研究,在實施本發(fā)明時本領域技術人員可以理解和實現(xiàn)所公開的實施例的變形。在權利要求書中,術語“包括”不排除其他步驟或元素,而不定冠詞“一個”或“一種”不排除多個。在彼此不同的從屬權利要求中引用的某些措施的事實不意味著這些措施的組合不能被有利地使用。權利要求書中的任何參考標記不構(gòu)成對本發(fā)明的范圍的限制。