Contents ...
udn網路城邦
動態車牌辨識的有趣案例
2019/02/22 08:09
瀏覽713
迴響0
推薦4
引用0

香港的客戶傳來一小段影片,說這輛車子居然無法辨識!怎麼可能?這麼清晰,格式又很正常的車牌,如果還不能辨識,我不就是賣假貨的詐騙集團了嗎?還是「跨國」詐騙咧!從台灣騙到香港去了!事情大條了,趕快先用單張辨識程式確認辨識正確沒問題,那就是我的動態辨識軟體有某處卡關了!就像某位天才資優生因為准考證沒帶,所以沒能參加考試進入建中一樣的吧?

我先用未修改的動態辨識軟體版本辨識這輛車的過程是這樣的:

左邊的原始資料顯示我確實辨識到了這輛車的車牌號碼,但是只有兩次,就不再繼續辨識了!我的軟體需要至少三次以上正確重複辨識做確認,因為連續動態辨識時,難免有些因為距離角度不好產生的錯誤辨識結果,任何辨識結果都立即回報的話,就會有很多誤報資料了。但是為何車子停下後,就沒有繼續產生新的辨識資料呢?車子停在面前時不是更好辨識嗎?為何此時反而罷工了?

原因是我的軟體為了減少無謂的耗能運算,如果發現畫面靜止時就會停止做完整的車牌辨識,等到有車駛入,畫面動起來時才會開始積極辨識車牌。這就是所謂的「影像觸發」啟動車牌辨識的機制了!之前有篇爛文章,說只有硬體的車辨系統可以做影像觸發,軟體的就不行?胡說八道,我的就可以!

簡單說,當畫面靜止沒車時,我的軟體是不會瘋狂去辨識空氣的!如果沒有動態偵測的功能,任何時候軟體都會做全套的影像辨識,就會讓CPU永遠以高負荷狀態運轉,很不環保的!反之,車子一進來,偵測到有動靜時,我的軟體就像地面裝有壓力感應器,被車子壓到時一樣,就會立即全員開工了!

但是案例中的這輛車是以高速進入,然後驟然停止,所以從車牌可以辨識的位置,到停車之間的時距很短,只能辨識成功兩次,剛好不夠讓系統確認這個車牌是否正確?所以就如骨鯁在喉,即使有正確的辨識結果出現於原始資料,卻無法輸出給客戶看了!

怎麼辦呢?很簡單的!就是「如果有車」時,即使畫面停住了,也要繼續辨識至少一兩秒鐘。這就是一般人(如警衛保全)用眼睛辨識車牌時會做的事!車子進入視野,還沒停車前,他們就會先嘗試看車號多少了!如果來不及看清楚,當車子停下時,當然會「用力」看到確認車牌為止嘛!

重點是:我的程式要如何模仿這種人一定會做的事呢?就是當我辨識到畫面中有車牌時,不論畫面靜止與否,都必須至少繼續辨識個幾秒鐘,累積足夠確認的正確辨識張數,就OK了!不能畫面一停就無條件停工。如果下班時間鐘響時,老闆正在跟你交代事情,你二話不說立即轉身走人,那明天就不用來上班了!小修一下程式之後,一樣的影片辨識結果就是這個樣子了!很好玩吧?

或許有人就會問啦!那我之前賣了幾十套這種軟體,都沒有這種新的機制,算不算是系統的BUG呢?會不會因此無法辨識很多車子呢?事實是這樣子的!我的辨識核心速度很快,還有多執行緒加持,所以從車子進入畫面到停在柵欄之前,可以辨識的時間至少是三五秒鐘,在停車前已經累積了十幾張,甚至數十張的辨識結果!

正常情況下,我根本不需要那些車子停住之後的辨識資料,就能確認車牌了!我做展示時,客戶常常很驚訝,車子剛進監視器畫面,人都還沒看清車牌時,我的軟體已經搶先報出標準答案了!除非遇到電影裡的飆車高手,高速駛入瞬間急停在柵欄之前,而且軟體設定的辨識頻率又太低,要很多極端巧合的因素同時出現,才會造成上述的狀況!算是921大地震等級的天災!

如果我不改程式,只是將原來軟體的辨識頻率調高一點,或畫面放大一點點,上面影片中的車牌還是可以辨識成功的!頻率調高就是同樣的可辨識時距之內,我可以多辨識幾次,資料就夠了!畫面變大則是讓車牌也變大一點,可辨識的時間變長一點,一樣的辨識頻率下,就可以多辨識幾次,也可以達到確認的門檻!

所以我新增的這個小機制只是防止「玩命關頭」裡的飆車高手來考驗我的辨識系統用的!也有點像是「侏儸紀公園」裡的橋段,當恐龍在你面前時,只要你不動,它就看不到你!但恐龍如果用我的辨識軟體,即使你完全不動,我還是會看到並吃掉你!我在FB上展示我能辨識極度扭曲變形的車牌影像時,我的球友們開玩笑說我的辨識軟體「很變態」!那是單張辨識核心的效能而已,現在讓大家知道,我的動態辨識軟體也很變態的!哈哈!

有誰推薦more

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