段 莉
(重慶科創職業學院智能制造學院,重慶永川 402160)
基于Halcon的車牌識別是指通過識別車輛車牌來認證車輛身份的技術,它是智能交通系統的技術基礎,是計算機視覺、圖像處理技術與模式識別技術的融合,是智能交通系統中重要的研究課題。基于Halcon的車牌識別技術是集人工智能、圖像處理、數據融合、計算機視覺、模式識別等技術為一體的復雜系統,要求識別精度高、處理時間短。
車牌識別分為車牌定位、車牌校正、車牌分割、車牌識別和軟件平臺實現幾部分。車牌的定位就是通過對圖像進行處理,使得車牌區域從拍攝的整張車輛圖相中分離出來。車牌定位主要是通過邊緣限定,面積限制等方法實現。車牌圖像往往由于攝像機的攝像角度不同,使得拍攝的車牌圖像產生一些傾斜,形成梯形或平行四邊形的車牌。這就需要對車牌進行校正。校正主要是將這些定位好的車牌區域進行坐標變換,變換后的車牌圖像編程規則的矩形。車牌分割就是將校正好的車牌圖相內的每一個字符進行單獨分割。分割主要是采用車牌區域內的文字的寬度進行距離上的劃定。每個字符都將按距離被劃分出來,這樣實現了車牌的分割。車牌的識別是將分割好的文字進行識別。一般都是通過程序調用已有的工具包,通過類比來實現文字的讀取識別。最后通過C#程序搭建處車牌自動識別的軟件平臺。
系統實現的硬件環境以個人計算機為核心,數碼相機通過USB端口直接與電腦相連。由數碼相機拍攝采集到的原始圖像為JPEG位圖格式,分辨率640×480,需要將圖像存儲在PC機硬盤上,作為實驗的原始數據。
系統的軟件運行環境為MicrosoftWindows10操作系統。通過Halcon生成的程序都是以C#編程語言為基礎,在VisualStudio2017集成開發環境下完成的。車牌識別系統結構如圖1所示:

圖1 車牌識別系統結構圖
Blob是Halcon中的分析算法。Blob分析的思想是非常簡單的,即在一個圖像中相關物體的像素可以通過其灰度值來識別。Blob分析的優點是靈活性非常好。
Blob分析算法思想在車牌定位識別的過程中。首先通過對初始彩色圖像進行三通道處理,得到藍通道圖像。然后對圖像進行二值化處理,然后應用Blob分析,通過閾值限定,得到初步的車牌區域。最后經過閾值限定、膨脹處理及查找坐標,除去不相干區域,最后實現車牌的定位,得到的最終的車牌區域。
基于Halcon的車牌識別的實現,其每一步都是通過充分利用內部提供的大量算子實現的。
(1)采集圖像。圖像獲取是在所有的機器視覺的應用中都必須要解決的一個任務。圖像獲取設備有圖像采集卡和工業相機等。Halcon提供了與大量圖像獲取設備交互的接口。在Halcon里,圖像獲取只有簡單的幾行代碼,即幾個算子調用即可實現圖像的獲取。
(2)處理圖像。讀取的圖像需要做一定處理,圖像中的車牌為藍底白字牌照,所以選擇將RGB彩色圖像分成紅色,綠色,藍色三個通道,以便能夠單獨處理其中的明顯的藍色通道。
(3)分割圖像。分割圖像是整個車牌識別過程中非常關鍵的一步,分割質量的好壞直接影響后續對車牌區域的處理。圖像的分割又分成以下幾步:①閾值選擇對于每一幅圖來說,閾值可以被動態地提取。對于上步選擇出來的紅色分量通道圖片R進行灰度處理,閾值范圍160~255。②區域相聯。車牌圖像中被分割出來的區域有后車窗部分,車牌區域等干擾區域。運用connection算子將選擇出來的區域進行相聯,形成相連區域ConnectedRegions。③初步選擇車牌區域。對于處理后的圖像除了車牌區域外,其他的都為干擾區域。在閾值處理后的圖像中,這些區域的形狀和大小都不一樣,于是用算子select_shape通過限定面積area和列column將車牌區域選擇出來。④車牌區域膨脹。對于得到的車牌需要進行膨脹處理,膨脹半徑一般為3或5.5。⑤車牌區域的最終選定。車牌區域膨脹后,車牌區域的信息雖然沒丟失。但是仍存在一些邊緣不整齊的凹凸。所以要對圖像進行進一步的處理。⑥選定車牌字符。對于上一步得到的車牌區域還需要做進一步的處理,即將車牌內的字符選擇出來。用算子reduce_domain把圖像和區域結合起來,把區域當作圖像的域來使用。然后用算子threshold對車牌區域進行分割,得到車牌字符。閾值范圍為160~255。到此,圖像分割才算結束。從最后得到的結果可以看出,處理結果比較理想。這為下一步文字訓練以及文字識別提供了很好的準備工作。
(4)訓練OCR。訓練分為兩個重要的步驟:首先對每個字符選擇大量的樣本并存儲到所謂的訓練文件,然后將這些文件輸入到新創建的OCR分類器中。
(5)顯示結果。經過訓練,得到訓練結果并最終顯示車牌圖像。在利用for循環時,首先利用算子set_tposition指定顯示位置,然后利用算子write_string將文字寫在指定的位置上。這樣當for循環結束后,文字也最終顯示在窗口指定位置上。
(6)創建和訓練分類器對于訓練后的文字,需要創建一個新的分類器,存儲訓練結果以便以后車牌的識別。
經過實驗和實時的圖像效果顯示,表明車牌的識別研究基本成功。下面主要從幾個最重要的方面分析一下該車牌識別算法通用性和可靠性。
(1)車牌定位。在車牌定位中,最關鍵的是圖像二值化后車牌區域的閾值范圍以及面積的限定。對于每一張不同的車牌圖像,可能受天氣情況、攝像機與車的距離、車的顏色以及周圍環境的影響,使得閾值參數和面積參數有些不同。這只需要修改threshold和select__shape算子中的部分參數即可準確實現車牌的準確定位。
(2)車牌分割。在車牌分割過程中,要求能夠將車牌區域與整張圖像完全分割出來。其中要求分割出來的車牌區域既不能有多余區域,又不能丟失必需的車牌區域。在實驗處理過程中,可以看出車牌的分割利用字符最左上角和最右下角兩個對角點的坐標將ROI區域框選出來。使用的算子是gen rectangle1,它能將車牌號碼以矩形框的形式分割顯示出來。如果選擇的車牌區域不太理想,只需要修改其中的坐標參數即可很容易地重新選定區域,使分割達到最理想效果。
(3)文字訓練。文字訓練過程其實是一個簡單的程序循環,是一個大量的重復性的豐富分類器的過程。對于每張不同的車牌圖像,只要單獨寫入要訓練的文字內容即可,當所有車牌號碼包含的漢字、字母和數字訓練完成后,便能識別所有的車牌號碼。
本文主要對汽車牌照識別系統中車牌定位、字符分割、訓練與字符識別的算法進行研究。編程實現了車牌的定位、字符分割、訓練與字符識別。本文的處理都是針對車輛的灰度圖像,灰度圖像數據量比彩色圖像小,運算比較簡單,但是彩色圖像二值化后會丟失豐富的信息。對整個系統的軟件還需做進一步優化設計,提高程序的模塊化、標準化水平,使軟件設計更加合理、可靠和高效。