
之前談過車牌水平傾斜與側面斜視的辨識,其實近距離俯視的車牌更難辨識,只是這種情況算是比較少見,如果連傾斜或斜視都還搞不定,俯視就是不急之務了!這種辨識的困難度在哪裡?我們知道近距離看車牌就是會變形,所以我們必須在原圖上找到車牌正確的四邊切線,然後將他們形成的任意四邊形轉正(正規化)成為標準車牌的矩形大小。
找出上下兩條切線是不難啦!那麼多字元排成一排,除非車牌彎折變成弧形,不然就是用字元的頂點或底點,回歸計算出兩條最理想的直線即可,不容易算錯的。但是左右兩邊的切線可就難了!如果是單純側面的斜視,或水平角度的旋轉傾斜,我們都可以假設左右兩邊的切線是平行線,但是近距離俯視時,兩邊的切線是絕對不平行的!如果你硬要假設它們是平行線就會變成這樣:

這種歪頭的A真的是我之前的惡夢!字元歪掉當然辨識就會很容易錯,要在車牌投影之後才補救,又會增加一堆違章建築式的程式!所以我前後研究了好幾年,才慢慢找到了穩定辨識左右邊不同傾斜度切線的訣竅,基本上就是必須能辨識個別字元的傾斜度,這在原始圖上是很難作到的!因為不是每個字都是方的,英數字上下不等寬的字還比較多,要找到每個字的中軸線傾角非常困難。
困難是困難,但是好好研究幾何學之後還是可以做到的!所以大家看前一張圖不是就抓得很準嗎?校正之後的車牌影像是不是「好正」!看到它我比看到街上的正妹還要興奮!如果沒有這種技術,我就沒把握對付俯視的狀況了!這也差不多是不到一年前才搞定的!當然細節說起來太繁瑣,就姑且保留一下了!

寫到這邊照例又要拿機器學習來消遣一下了!大家想像一下,如上的字元變形成這樣,變形的幅度與可能性幾乎是無限的,如果不作字元排列的幾何運算與影像投影校正,我們需要多少資料來訓練才能讓程式「學會」辨識出所有變形,還包括有旋轉角度的A呢?想跳過上述的這些幾何過程就直接辨識出所有車牌,是不是太匪夷所思?太天真浪漫了!
這種車牌辨識要成功,一定還是必須先概略抓到字元目標,然後考慮它們之間的排列關係,認真處理好邊緣切線等幾何問題。作到「差不多」都還不行!要非常精準的正規化投影出標準車牌的影像之後,才會有高辨識準確度!用機器學習要怎麼做到這些事?我是完全無法想像的!

下面這張俯角不大,是不是左右邊界就很接近平行了!

限會員,要發表迴響,請先登入








