1. 程式人生 > >車牌識別之車牌定位

車牌識別之車牌定位

      一直研究車牌識別演算法,主要關注車牌定位和字元識別。我想分享一下我對車牌定位的看法。

      從根本上講,車牌定位的演算法分為三類,一類是基於邊緣的,一類是基於顏色的,一類是基於機器學習的,這三種方法我都做過實驗,基於邊緣的最簡單也最有效,如果對於收費站和小區的應用,做到99%以上的檢測率不是件難事,但如果場景複雜一點,誤檢會比較多,但並不會漏掉真正的車牌,只是虛警率高點,可以通過先驗知識、顏色和後面的分割加以去除,誤檢不是重點。基於顏色的定位演算法,從根本上講也可以算是基於邊緣的一種,無非是利用彩色邊緣或者灰度影象邊緣和顏色一起來定位,基於顏色的車牌定位演算法用於高清圖片效果不錯,對於一般的場景我認為沒必要用顏色進行定位,但初期用顏色先去除一些明顯不是車牌的區域還是比較有效的。基於機器學習的演算法進行車牌定位或者說檢測,關鍵是找到好的特徵和好的訓練方法,不少人利用adaboost+haar特徵進行車牌檢測,從我的實驗結果來看,檢測率也能達到99%以上,但同時虛警率也非常高,會出現很多誤檢,而且很難把車牌的區域完整的檢測出來,所以如果單獨要用機器學習的演算法還是不太可行,不過可以先利用邊緣資訊找到候選區域,然後用adaboost去去除非車牌區域,這個效果還是蠻不錯的。

       對於邊緣的檢測,如果車牌在影象中佔的比例不是很小,普通的差分和全域性二值化就可以達到很好的效果,如果對於高清影象(譬如要檢測幾個車道)或者場景很複雜,導致車牌所佔影象的比例很小,還有就是車牌處於比較暗的地方,而整個場景很亮,這個時候差分得到的邊緣就不會很豐富,如果利用全域性二值化就可能導致車牌區域檢測不到邊緣,解決辦法一就是對影象進行灰度拉伸或增強,解決辦法二就是換邊緣檢測的方法(譬如sobel),解決辦法三就是改進二值化的方法。對於影象增強的方法我要特別提一下直方圖均衡化,很多論文上都會說對輸入圖片先進行直方圖均衡化,但我的實驗發現,晚上的圖片如果進行直方圖均衡化操作後會導致噪點特別多,而且可能會導致車牌區域檢測不到邊緣,總之影象增強是一把雙刃劍,需要慎重考慮。

       如果利用邊緣進行定位,關鍵是要想辦法一定要檢測出車牌區域的邊緣。

      總結一下車牌定位,利用邊緣是王道,可以先粗檢再精檢,顏色可以用於精定位和去除誤檢,機器學習如果想要好的結果得需要好的特徵,但目前好像還沒有。我個人認為車牌定位的難點不在於找到車牌區域,而在於怎麼對車牌區域進行更精確的定位,而精定位的難點在於左右精定位,以便於後面的分割演算法。

      如果各位對車牌識別有什麼好的想法,歡迎一起討論!