本研究之自走車,在連接上 IPCAM 後,開始不停的利用 WINAPI 擷取影像,
因為所欲追蹤跟隨的目標為小腿上的絕緣膠帶,膠帶在影像中為一個區域,隨著 距離的改變,面積大小也跟著改變,所以要用重心來當作跟隨的依據。當影像擷 取之後,先作單色層分離,分別處理 RGB 三層,取得三層的色塊區域,再對這些 區域做面積排序,只留下面積最大與距離最相近的色塊,預設的追蹤自走車裡的 程式為只擷取紅色色塊(人腿只要貼一條紅色的膠帶就可以跟著人腿走),但是只 要經過程式的修改,可以不只追蹤單一顏色,甚至是許多顏色搭配的排列組合,
在計算出面積與重心之後,就可以利用重心相對於畫面中心的偏移來決定車子的 左右轉,利用面積的大小改變來決定車子與跟隨物之間的一定距離。
3-2-1 RGB
顏色通常是用三種成份來定義的,把三種成份的數值當作座標值,在 RGB 模 型中,將(0,0,0)作為黑色,如圖 3-2 所示:其中 x 軸代表紅色,y 軸代表藍色,
z 軸代表綠色,原點代表黑色。
圖 3-2 RGB 模型圖
機器視覺大多採用灰階的數位影像,主要是因為灰階會比較好處理,全彩的 顏色資料量會太大,處理時間會過長,對於即時的應用來說比較不適合。以灰階 影像而言,每個像素之亮度值是從 0(黑色)分佈到 255(白色)之整數值(若 要提升工程的精準度,可以採用更高的解析度來表示像素值,當然影像感測器品 質與解析度也必須隨著提升),這樣的數值範圍代表著每個像素都可由一個位元 組來表示,位元組則是電腦程式語言使用記憶體的基礎,因此數位影像比較容易 以電腦自動化程式來處理影像的大量資料,並且可以藉由電腦多元化之訊號處理 功能,使許多工業得以自動化、智慧化及大量生產。而在數位影像處理中,常常 將環繞一個「焦點像素」的其他像素稱為「鄰域」像素,「鄰域」像素可以和矩 陣用同樣的方法按照形狀進行描述,就如圖 3-3 所顯示之矩陣,即可視為一張 8
×8 個像素的數位影像,其中以紅色圈選的「焦點像素」值為 113,為了實現某些 數位影像處理運算,必須參考「焦點像素」為中心之 5×7 個像素大小的「鄰域」
像素,即藍色框內之範圍,通常「鄰域」像素的行數與列數都是奇數,這樣可以 讓「焦點像素」是在此一「鄰域」像素的中央,既然表示方法與矩陣相同,那就 有許多線性代數或矩陣運算的方法可以使用在數位影像處理上,影像分割的演算 法即參雜了許多矩陣的運算。
圖3-3 8×8 個像素的數位影像紅色圈選處為「焦點像素」,
藍色圈選處為「鄰域」像素
電 腦 螢 幕 顯 示 的 顏 色 , 標 準 來 講 每 個 色 點 由 Red 、 Green 、 Blue 、
System.Runtime.InteropServices.Marshal.Copy(ptr, 像點資料, 0, 總長度) '記憶體複製