這是最近在做的事,嘗試辨識螺絲釘頭上鑄造出來的字元,一開始覺得是不可能的任務,因為字元沒有跟背景明顯不同的顏色或明暗差異,一個突出或凹陷的字元目標,即使因為有光影,邊緣會特別亮或特別暗,但是不會保證有可以完整切割的輪廓。
像下面這個橫躺的9就是「一堆」破碎目標組成的!我怎麼知道它們是一家人呢?而且字元以外的釘頭表面也不會波平如鏡的,充滿了粗糙的表面造成的雜訊,要知道哪些黑點色塊是字元的一部份?哪些不是?就是一個難題了!這時就跟機器學習的概念差不多,根據有限的資料統計一下大概多大的色塊比較可能是字元的一部份,多數背景雜訊傾向是比較小的目標,就設個門檻刷掉吧!
接下來讓我更頭痛的是:這些字元都是刻(或鑄造)在環狀邊緣上的,好像銅板上面的字,不像車牌號碼是排成直直一列的!以直角坐標的觀點,每一個字元目標都有自己不同的旋轉角度,要找到各字元個別的角度做旋轉縮放等等,頭痛了,想不下去了!
此時忽然想起高中時學過的極座標概念,正是處理這種問題的良方!如果目標轉成極座標,就是距離圓心多遠r?以及位於哪個方位角θ?那麼字元的「上方」就是r值大(遠離圓心)的方向,下方就是r值小(靠近圓心)的方向。字元「左側」就是θ小的方向,右側是θ大的方向。使用這種極座標概念,要建立每一個字元的正確方向的陣列就簡單多了!
我需要做的工作是建立幾個座標轉換函數,可以輸入x與y值,輸出r與θ,用極座標建立出以r當作Y,以θ當作X座標的陣列就是「旋轉好」的字元了!如下圖:
好高興,雖然是空心字,但是我拿車牌辨識用的字模去比對也很有鑑別率!這是昨天成功做出的實驗,今天就要來整理這套複雜精緻的座標轉換程式了!很有趣的是:這個極座標的幾何概念是我高三時的數學課教的!我中學時期的數學是常態性很爛的,各種考試多半是在及格邊緣徘徊,但是只要碰到幾何學我的表現就會好一點,極座標的那次考試還拿到歷史新高的80分,全班第二欸!那可是建中哦!
原來17歲學的數學是要準備給60歲的我用的?哈哈!至少沒有白學了嘛!大部分這些明星高中畢業的人,學那麼多的數學,一輩子都沒用到幾項,讀書讀辛酸的!
限會員,要發表迴響,請先登入