李吉俊,董自健
(江蘇海洋大學(xué) 電子工程學(xué)院,江蘇 連云港 222005)
車號字符分割是從字符組成的整個車號區(qū)域圖像中分割出單個字符的過程。它是車號自動識別系統(tǒng)的中間環(huán)節(jié),其分割結(jié)果直接影響車號最終的識別率。常用的字符分割方法有模板匹配法[1-2]、連通區(qū)域標(biāo)記法[3-4]、垂直投影法[5-7]以及它們相結(jié)合的方法[8-10]等?;趥鹘y(tǒng)垂直投影法的列車車號字符分割基本原理[11-12]為:列車車號各字符之間都存在一定寬度的間隔,對二值化后的車號圖像逐列掃描并統(tǒng)計每一列的白色或黑色像素總和,以此即可繪制出車號字符的投影直方圖。直方圖中的波谷部分對應(yīng)于車號字符之間的間隔(間隔區(qū)域的投影值很小或者為零),根據(jù)直方圖中各個波谷的坐標(biāo)位置及車號各字符的寬度先驗知識便可實現(xiàn)對車號字符的分割。
針對貨運列車車號字符的粘連或斷裂問題,有學(xué)者提出了相應(yīng)的車號字符分割方法。
牛智慧等[13]提出了一種基于字符輪廓上下特征以及字符寬度先驗知識和數(shù)字字符弧特征的字符分割方法,該方法首先對車號字符進(jìn)行預(yù)分割,然后對粘連的車號字符進(jìn)行再分割以及對斷裂的車號字符進(jìn)行合并處理。楊吉[14]提出了一種基于輪廓檢測和字符先驗知識的車號字符分割方法:當(dāng)車號字符不存在斷裂或者粘連時,則直接尋找車號字符輪廓的最小外接矩形,并根據(jù)獲取的矩形坐標(biāo)信息來實現(xiàn)對車號字符的分割;當(dāng)車號字符出現(xiàn)斷裂或粘連時,則對斷裂字符先進(jìn)行膨脹操作使其形成一個連通域,然后再對粘連字符進(jìn)行腐蝕操作,最后再根據(jù)輪廓檢測和字符先驗知識的方法對粘連字符進(jìn)行均分,并依次輸出最終的車號字符。王凱[15]提出一種由互相關(guān)性匹配、K-means聚類分析和字符比例先驗知識組成車號分割方法,該方法首先建立標(biāo)準(zhǔn)數(shù)字模板圖像并分別與待測車號圖像進(jìn)行二維互相關(guān)匹配,然后利用K-means算法聚類分析出所有車號字符最優(yōu)的匹配結(jié)果,最后再根據(jù)車號字符高寬比例先驗知識精準(zhǔn)分割出每個車號字符。由于L70型貨運列車車號字符寬窄不一、間距不等,因此該方法不適合本文的車號數(shù)據(jù)集。張曉麗[16]提出了一種自適應(yīng)游程算法與包圍圓算法相結(jié)合的車號分割方法。該方法先運用自適應(yīng)游程算法對斷裂字符的不同連通域進(jìn)行合并重組,然后利用包圍圓算法對車號進(jìn)行分割。由于各字符的包圍圓之間會有重疊,可能無法提取出字符的完整輪廓,因此,該方法也不適合本文的車號數(shù)據(jù)集。
考慮到貨運列車車號前5個字符有著比較明顯的規(guī)律和先驗知識,本文提出了基于最近鄰值和車號字符先驗知識的分割方法來分割車號的前5個完整字符,然后再根據(jù)后5個斷裂字符的先驗知識,提出基于枚舉法的車號斷裂字符拼接方法來獲取車號的后5個完整字符,最終完成對整個車號的分割。
本文所提出的貨運列車車號字符分割方法主要由圖像預(yù)處理、獲取字符投影區(qū)域邊界所在列、基于最近鄰值和車號字符先驗知識的分割方法、基于枚舉法的車號斷裂字符拼接方法等4個部分組成。圖像預(yù)處理部分主要是對車號區(qū)域圖像進(jìn)行高斯濾波、圖像灰度化和OTSU二值化;在獲取字符投影區(qū)域邊界所在列的基礎(chǔ)上,先采用基于最近鄰值和車號字符先驗知識的分割方法,然后再結(jié)合基于枚舉法的車號斷裂字符拼接方法,最終實現(xiàn)對整個車號的分割。
圖像預(yù)處理部分主要由高斯濾波、圖像灰度化和OTSU二值化操作三部分組成。首先對輸入的車號區(qū)域圖像(見圖1a)進(jìn)行高斯濾波去噪處理,然后對去噪后的圖像進(jìn)行灰度化處理,最后再對該灰度圖像進(jìn)行OTSU二值化處理。圖像預(yù)處理的具體步驟如下。
步驟1:對輸入的車號區(qū)域圖像進(jìn)行高斯濾波去噪處理。高斯濾波是對當(dāng)前像素點及其鄰域內(nèi)像素點的像素值進(jìn)行加權(quán)平均,并將加權(quán)平均的結(jié)果賦值給當(dāng)前像素點。計算出圖像中每一個像素點的加權(quán)平均結(jié)果,并用該結(jié)果替換所有當(dāng)前像素點的像素值,即可得到整幅圖像的高斯濾波結(jié)果。對輸入的車號區(qū)域圖像進(jìn)行高斯濾波處理,結(jié)果如圖1b所示。
步驟2:對去噪后的圖像進(jìn)行灰度化處理。車號圖像灰度化就是把彩色的車號圖像進(jìn)行灰度處理,使其變成灰度圖像的過程。本節(jié)選用加權(quán)平均法(令灰度值等于R,G,B 3個通道的值,分別乘以各自對應(yīng)的權(quán)值,然后再求和)對車號圖像進(jìn)行灰度化處理,其處理結(jié)果如圖1c所示。
步驟3:對該灰度圖像進(jìn)行OTSU二值化處理。日本學(xué)者大津(Nobuyuki Otsu)在1979年提出最大類間方差法,又稱OTSU方法,其目的是最大化圖像中目標(biāo)與背景的類間方差。該方法會遍歷所有可能的閾值,并在每一個閾值條件下計算此時的類間方差;當(dāng)計算的類間方差達(dá)到最大時,此時的閾值即為OTSU方法所計算出的最佳類間分割閾值[17]。在經(jīng)過高斯去噪和灰度化處理后,最大類間方差法處理的效果如圖1d所示。
a 車號區(qū)域圖像
根據(jù)車號區(qū)域二值化圖像的投影直方圖特征,可以很方便地獲取各個字符投影區(qū)域的邊界所在列,具體步驟如下。
步驟1:統(tǒng)計圖1d中每一列黑色像素的個數(shù)總和,繪制出的直方圖如圖2所示。
a OTSU二值化圖像
步驟2:觀察圖2中每一個投影區(qū)域可知,如果第i列像素總個數(shù)為0,第i+1列像素總個數(shù)不為0,則可將第i列視為該投影邊界的起始列;如果第j列像素總個數(shù)不為0,第j+1列像素總個數(shù)為0,則可將第j+1列視為投影邊界的終止列。運用上述方法獲取圖2中所有投影邊界所在列的數(shù)值結(jié)果見表1。
表1 投影邊界所在列的數(shù)值結(jié)果
步驟3:在由表1的數(shù)值結(jié)果所組成的列表中,如果列表中第1個元素與第0個元素的差值大于等于50,或者列表中第3個元素與第2個元素的差值大于等于60,又或者第5個元素與第4個元素的差值大于等于60,則表明在車號的底部出現(xiàn)了字符粘連的情況;然后對粘連的二值圖像進(jìn)行裁剪(僅保留倒數(shù)第12行之前的部分);最后再次獲取裁剪后的圖像所有投影邊界所在列的數(shù)值結(jié)果。反之,則不需要進(jìn)行該步操作。
設(shè)車號前5個字符的先驗知識為:字符“L”的平均寬度為a,字符“7”的平均寬度為b,字符“0”的平均寬度為c,字符“8”的平均寬度為d,字符“1”的平均寬度為e,字符“L”和“7”之間的平均間距為ab,字符“7”和“0”之間的平均間距為bc,字符“8”和“1”之間的平均間距為de,字符“1”所在投影區(qū)域像素總數(shù)的最大值在整個投影直方圖上較大。
車號前5個字符區(qū)域的投影邊界所在列的數(shù)值保存在列表list1中,其投影邊界所在列示意圖如圖3所示。其中,車號半個字符或者噪點邊界所在列在圖中未標(biāo)出,完整的字符左右邊界所在列由未知數(shù)x1,x2,…,x10標(biāo)出;區(qū)間[x1,x2]為字符“L”的所在區(qū)域;以此類推,區(qū)間[x9,x10]為字符“1”的所在區(qū)域。本文基于最近鄰值和車號字符先驗知識的分割方法如表2所示。
圖3 車號前5個字符區(qū)域的投影邊界所在列示意圖
表2 基于最近鄰值和車號字符先驗知識的分割方法
觀察圖2可知,投影區(qū)域即為車號整個字符或者車號半個字符或者噪點所在的區(qū)域。那么,各個投影區(qū)域邊界所在列即為車號整個字符或者車號半個字符或者噪點邊界所在列。在去除噪點區(qū)域(投影區(qū)域?qū)挾刃∮?)所在列后,所得到的車號前5個字符邊界所在列的數(shù)值結(jié)果如表3所示。由車號整個字符或者車號半個字符區(qū)域所在列的數(shù)值結(jié)果即可獲取相應(yīng)的字符圖像或者半個字符圖像,并把它們添加到列表list2中,由此得出的車號字符圖像如圖4所示。若列表list2的長度等于10,則說明10個車號字符是完整的,此時車號字符分割已經(jīng)完成;若該列表的長度大于10,則說明有車號字符是不完整的,需要對此進(jìn)行進(jìn)一步的分割和拼接處理。
表3 前5個字符邊界所在列數(shù)值結(jié)果
圖4 車號整個字符和半個字符圖像
由圖4可知,車號字符由整個字符和半個字符組成,且它們出現(xiàn)的個數(shù)和位置難以確定,而車號前5個字符有著比較明顯的規(guī)律和先驗知識。因此本文采用本節(jié)所提出的方法來分割來車號的前5個完整字符。下面以圖1d的車號區(qū)域二值化圖像為例來介紹所提出的分割方法,其具體分割步驟如下。
(1)確定車號字符先驗知識。車號前5個字符的先驗知識由表4給出。
表4 車號前5個字符的先驗知識
(2)分割車號第1個字符“L”。在表3的結(jié)果列表中尋找數(shù)值a=40的最近鄰值,所求得的51即為字符“L”的右邊界,設(shè)置字符“L”的左邊界為1,即可完整地分割出字符“L”。
(3)分割車號第2個字符“7”和第3個字符“0”。在表3的結(jié)果列表中尋找數(shù)值x2+ab+b=88的最近鄰值,所求得的95即為字符“7”的右邊界;然后再尋找數(shù)值x4-b=70的最近鄰值,所求得的65即為字符“7”的左邊界。同理可以求出字符“0”的左右邊界,因此可以完整地分割出字符“7”和字符“0”。
(4)分割車號第4個字符“8”。在表3的結(jié)果列表中尋找數(shù)值m-e/2-de=208的最近鄰值,所求得的216即為字符“8”的右邊界;然后再尋找數(shù)值x8-d=168的最近鄰值,所求得的168即為字符“8”的左邊界。根據(jù)字符“8”的左右邊界即可完整地分割出字符“8”。
(5)分割車號第5個字符“1”。在表3的結(jié)果列表中分別尋找數(shù)值m-e/2=224和m+e/2=242的最近鄰值,所求得的224和239即為字符“1”的左右邊界。根據(jù)字符“1”的左右邊界即可完整地分割出字符“1”。
采用上述方法所分割的車號前5個完整字符的結(jié)果如圖5所示。
圖5 車號前5個字符圖像
本文基于枚舉法的車號字符拼接方法具體內(nèi)容為:首先根據(jù)車號先驗知識判斷出第6個字符是“1”還是“0”,如果是字符“1”,則說明它是完整的,不需要進(jìn)行字符拼接;如果是字符“0”,則需要將兩個斷裂字符拼接成一個完整的字符。然后再根據(jù)車號先驗知識對車號后4個字符進(jìn)行標(biāo)記,如果字符是完整的,就將其標(biāo)記為1;如果是不完整的,就將其標(biāo)記為0,則一共有24=16種可能的結(jié)果。最后再針對每一個車號區(qū)域圖像,求出它的后4個車號字符所對應(yīng)的標(biāo)記結(jié)果,就可以根據(jù)特定的規(guī)律對車號后4個字符中的斷裂字符進(jìn)行拼接使其成為完整的字符。
這里仍以圖1d的車號區(qū)域二值化圖像為例,根據(jù)去除噪點后車號后5個字符邊界所在列的結(jié)果,所得到的剩余車號字符圖像如圖6所示,并把這些字符圖像存放在列表list3中。
下面以圖6中的字符圖像為例,來介紹所提出的基于枚舉法的車號斷裂字符拼接方法。由圖6可知,車號的第6個字符“0”是不完整的,因此需要把列表list3中第0個和第1個元素進(jìn)行拼接,由此可以得到完整的第6個字符“0”;車號后4個字符標(biāo)記的結(jié)果為0,0,1,0,因此需要把列表list3中第2個和第3個元素進(jìn)行拼接,由此可以得到完整的第7個字符“8”;同理,可以得到完整的第8個字符“5”和第10個字符“3”;第9個字符“7”是完整的,則不需要進(jìn)行拼接。
圖6 車號后5個完整字符和半個字符圖像
采用上述拼接方法對車號后5個字符處理的結(jié)果如圖7所示。
圖7 車號后5個字符圖像
本文在垂直投影法的基礎(chǔ)上添加了基于最近鄰值和車號字符先驗知識的分割方法以及基于枚舉法的車號斷裂字符拼接方法,最終完成了對車號字符的完整分割,其分割結(jié)果如圖8所示。
圖8 車號字符圖像
本文實驗是在Windows 10專業(yè)版64位操作系統(tǒng)下進(jìn)行,計算機(jī)的具體配制為Intel(R)Core(TM)i5-5200U CPU@2.20GHz處理器、8.00 GB內(nèi)存。實驗采用python 3.8.3編程語言對各類貨運列車車號進(jìn)行字符分割。
根據(jù)采集到的貨運列車車號圖像,可以把定位好的365張車號區(qū)域圖像劃分為6類數(shù)據(jù)集,各類數(shù)據(jù)集的情況如表5所示。
表5 各類數(shù)據(jù)集的情況
采用本文方法對貨運列車車號字符進(jìn)行分割實驗,并與引言中的某些列車車號字符分割方法進(jìn)行對比。為了便于表述,將基于傳統(tǒng)垂直投影法的車號字符分割方法記為方法一;將基于字符輪廓上下特征、字符寬度先驗知識和數(shù)字字符弧特征的車號字符分割方法記為方法二;將基于輪廓檢測和字符先驗知識的車號字符分割方法記為方法三。各方法的分割結(jié)果見表6~表9(表中,正確分割示例用“√”表示;錯誤分割示例用“×”表示)。
表6 方法一對各類貨運列車車號字符的分割結(jié)果
表7 方法二對各類貨運列車車號字符的分割結(jié)果
表8 方法三對各類貨運列車車號字符的分割結(jié)果
表9 本文方法對各類貨運列車車號字符的分割結(jié)果
為了確保各類方法對貨運列車車號分割的準(zhǔn)確率,本文采用手動統(tǒng)計車號分割準(zhǔn)確率的方法[18]。該方法首先檢查從每一個車號上分割出來的字符是否為單個且完整的字符,若分割出的所有字符都是單個且完整的,則表明車號分割正確,然后統(tǒng)計正確分割的車號數(shù)量,并結(jié)合所使用的各類車號數(shù)據(jù)集,最后根據(jù)公式(1)計算出車號分割的準(zhǔn)確率。統(tǒng)計各類數(shù)據(jù)集中車號全部分割完畢所用的時間,并重復(fù)記錄11次,去掉最大值和最小值后所求得的平均值作為車號分割平均時間。各類方法對各類數(shù)據(jù)集中車號分割準(zhǔn)確率和平均時間統(tǒng)計情況見表10。
表10 各類方法對各類數(shù)據(jù)集中車號分割準(zhǔn)確率和平均時間統(tǒng)計情況
車號分割準(zhǔn)確率=
(1)
為進(jìn)一步研究C5類車號圖像旋轉(zhuǎn)角度對車號字符分割準(zhǔn)確率的影響,將車號圖像分別旋轉(zhuǎn)2°,4°,6°,8°,10°,12°,14°,16°,18°,20°,得到車號旋轉(zhuǎn)數(shù)據(jù)集。最終的旋轉(zhuǎn)角度與車號分割準(zhǔn)確率的關(guān)系見表11。
表11 旋轉(zhuǎn)角度與車號分割準(zhǔn)確率的關(guān)系
由表6可知,方法一對于質(zhì)量較好且完整的車號字符分割效果很好,但對于斷裂或者粘連的車號字符容易分割錯誤。
由表7可知,方法二對于車號左下邊緣不全、車號自身存在銹跡、車號某些斷裂字符不存在左右弧特征和車號某些字符上面存在噪聲線條干擾等情況,車號分割時容易出現(xiàn)分割錯誤。此外,由于字符“7”和“0”之間距離太小或噪聲干擾,導(dǎo)致其投影區(qū)域粘連在一起,從而使車號分割出現(xiàn)錯誤。由于車號底部噪聲線條的干擾,字符在底部形成粘連導(dǎo)致車號分割出現(xiàn)錯誤。
由表8可知,方法三對于無法均分的相連字符(如字符“81”等)、形態(tài)學(xué)操作之后仍然斷裂的字符、某些挨太近的字符(比如字符“7”和“0”)和左下邊緣不全的這些車號而言,車號分割時容易分割錯誤。
由表9可知,本文方法對于車號中出現(xiàn)粘連的字符(包括完整字符之間的粘連、完整字符與半個字符之間的粘連和半個字符之間的粘連)、車號中某些挨太近的字符(如字符“7”和“0”)和某些特殊的字符(如字符“4”右邊僅斷裂一小部分)的這些車號而言,車號分割時容易分割錯誤。此外,由于極個別車號的第5個字符“1”,因不滿足字符的先驗知識,而導(dǎo)致車號分割錯誤。
由表10可知,方法二、本文方法、方法三和方法一對各類車號分割準(zhǔn)確率平均值分別為95.23%,80.76%,65.92%和5.97%;方法二、本文方法、方法三和方法一對各類車號分割平均時間的平均值分別為9.11 s,10.68 s,8.02 s和7.85 s。由此可見,在對所有車號進(jìn)行分割時,方法二要優(yōu)于本文方法,本文方法要優(yōu)于另外兩種方法。然而在對C5類車號圖像進(jìn)行車號分割時,本文方法、方法二、方法三和方法一對C5類車號分割準(zhǔn)確率分別為95.83%,93.75%,0和0;本文方法、方法二、方法三和方法一對C5類車號分割平均時間分別為7.88 s,8.04 s,6.66 s和6.77 s。由此可見,在對本文貨運列車重度斷裂的車號字符進(jìn)行分割時,本文方法要優(yōu)于其他3種方法。
由表11可知,隨著旋轉(zhuǎn)角度的增加,本文方法和方法二對車號分割準(zhǔn)確率均一直下降至0;本文方法和方法二正確分割的車號數(shù)量的平均值分別為23.45張和22.82張;本文方法和方法二對車號分割準(zhǔn)確率的平均值分別為48.86%和47.54%。由此可見,在本文貨運列車車號出現(xiàn)重度斷裂且存在一定旋轉(zhuǎn)角度時,本文方法對此類車號的分割準(zhǔn)確率要略高于方法二。
本文針對重度斷裂的貨運列車車號字符分割準(zhǔn)確率低的問題,提出了由圖像預(yù)處理、獲取字符投影區(qū)域邊界所在列、基于最近鄰值和車號字符先驗知識的分割方法和基于枚舉法的車號斷裂字符拼接方法四部分組成的貨運列車車號字符分割方法。實驗結(jié)果表明,在對出現(xiàn)重度斷裂的車號或者存在一定旋轉(zhuǎn)角度的此類車號進(jìn)行分割時,本文方法要優(yōu)于基于字符輪廓上下特征以及字符寬度先驗知識和數(shù)字字符弧特征的字符分割方法(方法二),但在對所有車號進(jìn)行分割時,方法二要優(yōu)于本文方法,本文方法要優(yōu)于另外兩種方法。今后將嘗試對本文方法作進(jìn)一步的優(yōu)化,以提高其對C1類、C4類和C6類車號分割準(zhǔn)確率。