字符結(jié)構(gòu)知識(shí)在車牌識(shí)別中的應(yīng)用
摘要:提出了一種完全基于結(jié)構(gòu)知識(shí)的字符識(shí)別方法。該方法以字符的結(jié)構(gòu)特點(diǎn)和筆畫類型、數(shù)據(jù)及位置作為識(shí)別特片生成判定時(shí),再利用判定樹對(duì)汽車牌照中的字母和數(shù)字進(jìn)行分類識(shí)別。
汽車牌照識(shí)別是基于圖像分割和圖像識(shí)別理論,對(duì)含有汽車牌照的圖像進(jìn)行分析處理,從而確定汽車牌照在圖像中的位置,并進(jìn)一步提取和識(shí)別出文本字符。從不同車牌圖像中分割出的字符圖像各式各樣,尺寸變化范圍大,增加了識(shí)別的難度。盡管可以采用圖像變換方法將分割出的所有字符圖像歸一化為相同尺寸,但歸一化過程又不可避免地丟失有用的字符信息,造成圖像失真,無助于提高識(shí)別準(zhǔn)確率,并且浪費(fèi)時(shí)間,降低了識(shí)別速度。
本文通過分析汽車牌照的特點(diǎn),提出了一種利用字符的筆畫特征和結(jié)構(gòu)知識(shí)對(duì)汽車牌照中的字母和數(shù)字進(jìn)行識(shí)別的方法。試驗(yàn)表明,該方法識(shí)別速度快、準(zhǔn)確率高,不受字符圖像大小影響,適應(yīng)性強(qiáng)。
1 車牌字符結(jié)構(gòu)和識(shí)別
中國大陸汽車牌照中使用的字符包括59個(gè)漢字、25個(gè)英文字母(字母I不用)和10個(gè)阿拉伯?dāng)?shù)字三種類型共94個(gè),且都是印刷體,結(jié)構(gòu)固定、筆畫規(guī)范。圖1是車牌號(hào)碼中使用的全部字母和數(shù)字的圖像。這些字符的結(jié)構(gòu)在水平方向有三種類型:左右對(duì)稱、左大右小、左小右大。在豎直方向同樣有三種結(jié)構(gòu),即上下對(duì)稱、上大下小、上小下大。如車牌號(hào)碼中使用的數(shù)字"8",就屬于左右對(duì)稱且上下對(duì)稱。
從圖1可以看出,全部字母和數(shù)字的筆畫共有兩大類:直筆畫和弧筆畫。直筆畫又可分為橫筆畫、豎筆畫、左斜筆畫(相當(dāng)于漢字筆畫中的"撇")和右斜筆畫(相當(dāng)于漢字筆畫中的"捺")?;」P畫是一條曲線段,本文將其分為兩類:開弧筆畫和閉弧筆畫。所謂開弧筆畫,指該弧筆畫沒有形成封閉環(huán),如字母"C"。而閉弧筆畫則形成一個(gè)封閉的環(huán),如數(shù)字"0"。
根據(jù)字符圖像的這一特點(diǎn),本文采用下述方法對(duì)字母和數(shù)字進(jìn)行逐級(jí)分類,形成一棵識(shí)別判定樹,每個(gè)字符就是一個(gè)葉子:
(1)首先在待識(shí)別的字符圖像中搜索封閉環(huán)的數(shù)量和位置。
(2)根據(jù)搜索到封閉環(huán)的結(jié)果判斷字符所在的類封閉環(huán)字符類、雙封閉環(huán)字符類、無封閉環(huán)字符類。 (3)針對(duì)每一類分別進(jìn)行處理。
(4)雙封閉環(huán)字符只有"8"和"B",因此只要抽取豎筆畫即可區(qū)分出這兩個(gè)字符。"B"的左半部分有一長豎,而"8"沒有。
(5)單封閉環(huán)的字符有"A"、"D"、"O"、"P"、"Q"、"R"、"0"、"4"、"6"和"9"。根據(jù)封閉環(huán)的位置將這些字符分成三類:封閉環(huán)在上部;封閉環(huán)在下部和封閉環(huán)在中間,然后再根據(jù)結(jié)構(gòu)特點(diǎn)和抽取的筆畫特征進(jìn)行識(shí)別。
.封閉環(huán)在上部的字符有"P"、"R"和"9"。如果待識(shí)別字符圖像上半部分有一個(gè)封閉環(huán),則從左半部分抽取豎筆畫;若左側(cè)部分沒有豎筆畫,則該字符為"9";若在左半部分抽取到豎筆畫,繼續(xù)抽取右斜筆畫;抽取到右斜筆畫,該字符為"R";否則為"P"。
.封閉環(huán)在下部的字符有"A"、"4"和"6"。如果待識(shí)別字符圖像下半部分有一個(gè)封閉環(huán),則從右半部分抽取豎筆畫;若右側(cè)部分有豎筆畫,則該字符為"4";若在右半部分沒有抽取到豎筆畫,繼續(xù)抽取橫筆畫;抽取到橫筆畫,該字符為"A";否則為"6"。
.封閉環(huán)在中間的字符有"D"、"O"、"Q"和"0"。實(shí)際應(yīng)用中,"O"和"0"的圖像完全相同,可以作為同一個(gè)字符處理。如果待識(shí)別字符圖像中間有一個(gè)封閉環(huán),則首先利用上下對(duì)稱特點(diǎn)判斷是否為"Q";若上下對(duì)稱,則為"0"("O")或"D";然后按照左右對(duì)稱特征區(qū)分字符"0"和"D"。
(6)無封閉環(huán)的字符有"C"、"E"、"F"、"C"、"H"、"J"、"K"、"L"、"M"、"N"、"S"、"T"、"U"、"V"、"W"、"X"、
"Y"、"Z"、"l"、"2"、"3"、"5"和"7",通過抽取筆畫對(duì)這些字符進(jìn)行識(shí)別,具體步驟如下:
· 抽取橫筆畫和豎筆畫。
· 若待識(shí)別字符圖像沒有橫筆畫和豎筆畫,則該字符為"S"、"V"或"X"。
· 若待識(shí)別字符圖像只有橫筆畫而沒有豎筆畫,則該字符為"2"、"3"、"7"或"Z"。
· 若待識(shí)別字符圖像只有豎筆畫而沒有橫筆畫,則該字符為"1"、"C"、"J"、"K"、"M"、"N"、"U"、"W''或"Y"。
· 待識(shí)別字符圖像既有橫筆畫又有豎筆畫的字符為"5"、"E"、"F"、"C"、"H"、"l"或"T"。
."S"、"V"和"X"的識(shí)別。抽取左斜筆畫和右斜筆畫,"S"沒有這兩種筆畫,從而可識(shí)別出"S"。"X"的兩條斜筆畫交點(diǎn)位于字符圖像的中間位置,而"V"的兩條斜筆畫相交于字符圖像的下部,以此識(shí)別"X"和"V"。
· 識(shí)別2"、"3"、"7"和"Z"。這四個(gè)字符中只有"Z"有兩條橫筆畫,從而可以此識(shí)別出"Z"。"3"和"7"的橫筆畫都位于上部,而"2"的橫筆畫位于下部,這樣又可以識(shí)別出"2"。對(duì)于"3"和"7",利用左斜筆畫進(jìn)行識(shí)別。"7"具有左斜筆畫,而"3"沒有。
·識(shí)別"1"、"C"、"J"、"K"、"M"、"N"、"U"、"W"和"Y"。根據(jù)豎筆畫的數(shù)量將這些字符分為三類,"1"、 "C"、"J"、"K"和"Y"都是一條豎筆畫、"M"、"N"和"U"是兩條豎筆畫,而"W"有三條豎筆畫,這樣就完成了"W"的識(shí)別。
對(duì)于一條豎筆畫的字符,判斷該筆畫的位置是在左邊("C"和"K")、中間("1"和"Y")還是在右邊("J"),即可識(shí)別出"廠。根據(jù)有無右斜筆畫區(qū)分"C"和"K",按照中間豎筆畫的長短區(qū)分"1"和"Y"。
.由于字符"N"有一右斜筆畫,以此將其從"M"和"U"中識(shí)別出來。對(duì)于"M"和"U",依靠結(jié)構(gòu)特征已無法識(shí)別,本文使用字符圖像中前景像素個(gè)數(shù)與背景像素個(gè)數(shù)的比值來判斷。根據(jù)這兩個(gè)字符的特點(diǎn),只計(jì)算字符上半部分即可。 · 識(shí)別"5"、"E"、"F"、"G"、"H"、"I"和"T"。這些字符中,只有"E"具有三條橫筆畫,"F"有兩條橫筆畫,其余為一條橫筆畫。剩下的字符中,按照豎筆畫的數(shù)量分為兩組: "5"、"L"和"T"為一條豎筆畫,"G"和"H"為兩條豎筆畫。"H"的兩條豎筆畫長度相同,而"G"的兩條豎筆畫則一長一短,這是區(qū)分"G"和"H"的標(biāo)志。"T"的豎筆畫在中間,"5"和"L"的豎筆畫在左邊。"L"的豎筆畫長,"5"的豎筆畫短,這樣就完成了"5"、"T"和"L"的識(shí)別。
搜索封閉環(huán)實(shí)際上就是在字符圖像中搜索連通域。在字符的二值圖像中,假定字符像素值"1",背景像素值為"0",則:
(1)無封閉環(huán)的字符圖像中只有兩個(gè)連通域,即字符連通域和背景連通域,圖2(a)中的B和F。
(2)只有一個(gè)封閉環(huán)的字符圖像中有三個(gè)連通域,即一個(gè)字符連通域和兩個(gè)背景連通域,圖2(c)中的B1、B2和F。
(3)有兩個(gè)封閉環(huán)的字符圖像中有四個(gè)連通域,即一個(gè)字符連通域和三個(gè)背景連通域,圖2(b)中的B1she、B2、B3和F。
搜索封閉環(huán)的算法如下:
(1)讀入二值字符圖像。
(2)找到一個(gè)像素值為"0"的背景像素點(diǎn)B。
(3)搜索B的連通域,并將該連通域內(nèi)的像素全部標(biāo)記為背景1。
(4)遍歷圖像中像素值為"0"的像素。
(5)若所有"0"像素都已標(biāo)記為背景1,則該圖像內(nèi)封閉環(huán)個(gè)數(shù)為0,跳轉(zhuǎn)到(11)。
(6)若存在沒有標(biāo)記為背景1的"0"像素點(diǎn)B1,則有封閉環(huán)。
(7)搜索B1的連通域,并將該連通域內(nèi)的像素全部標(biāo)記為背景2。
(8)遍歷圖像中像素值為"0"的像素。
(9)若所有"0"像素都已標(biāo)記為背景1或背景2該圖像內(nèi)封閉環(huán)個(gè)數(shù)為1,跳轉(zhuǎn)到(11)。
(10)若存在沒有標(biāo)記為背景1或背景2的"0"像素,則該圖像內(nèi)封閉環(huán)個(gè)數(shù)為2。
(11)結(jié)束搜索,返回封閉環(huán)個(gè)數(shù)。
字符的筆畫抽取可參見文獻(xiàn)[1]
2 識(shí)別測(cè)試
利用本識(shí)別方法,筆者對(duì)從車牌中分割出的字符進(jìn)行了識(shí)別測(cè)試。所測(cè)試的字符包括了車牌中所使用的全部35個(gè)數(shù)字和字母共7000幅圖像,其中圖幅最大的為l00xl00像素,而最小的是20x20像素。正確識(shí)別的有6946幅,正確率超過99%。其中識(shí)別錯(cuò)誤的圖像主要集中在字母"0"和"D"。通過對(duì)這些容易識(shí)別錯(cuò)誤的字符進(jìn)行二次識(shí)別,可以大大提高識(shí)別準(zhǔn)確率
本文提出的字符識(shí)別方法的核心就是通過判定樹對(duì)字符群體層層分類,從樹干開始逐步縮小識(shí)別范圍,直到最后只有一類字符,即識(shí)別成功。
該方法具有如下特點(diǎn):
(1)不需要建立識(shí)別樣本庫,完全依據(jù)字符自身的結(jié)構(gòu)特征進(jìn)行逼近識(shí)別。
(2)不需要將待識(shí)別字符與全部字符進(jìn)行匹配識(shí)別,因而提高了識(shí)別速度和準(zhǔn)確率。