引言
「飛思卡爾」杯全國大學生智慧型車競賽規則明確指出,智慧型車在賽道上連續跑兩圈,並記錄其中最好的單圈成績,這使路徑記憶演算法成為可能。如圖1所示,賽道記憶演算法在第一圈以最安全的速度緩慢駛過一圈,並將賽道資訊儲存下來,第二圈根據儲存下來的資訊進行車速和轉角決策的相應最優化,從而在第二圈取得好成績。無論智慧型車的感測器前瞻距離有多遠,在跑圈時它都只能**在一段有限距離內賽道的情況。而採用賽道記憶演算法的智慧型車,在第二圈時已對整個賽道有了全面的認識,從而在相同條件下,將比不使用賽道記憶的智慧型車更具優勢。
第一圈準確記憶賽道資訊是第二圈控制策略的基礎,是比賽成敗的關鍵。但是在第一圈中不論控制策略如何優秀,賽車總會或多或少的偏離賽道,舵機的轉角資訊總會出現一定程度的毛刺和擾動等粗大誤差,其幅值足以引起處理器的誤判。如果不加處理直接應用於第二圈控制,會對賽車造成嚴重干擾,不能以極限速度跑完比賽或者衝出賽道。通常的處理方法有兩種:一是通過閾值比較丟棄干擾值,但同時賽道資訊也會同干擾資訊一起被丟棄;二是通過低通濾波將干擾平均到多個位置,但同時破壞了賽道原始資訊,而且在干擾幅值很大的時候效果也不是很明顯。
數學形態學(mathematical morphology)是一種新型的數字影象處理方法和理論,其主要內容是設計一整套的變換(運算)、概念和演算法,用以描述影象的基本特徵。提供了非常有效的非線性濾波技術,該技術只取決於訊號的區域性形狀特徵。因此,它在諸如形狀分析、模式識別、視覺校驗、計算機視覺等方面,要比傳統的線性濾波更為有效。
演算法的選取與實驗結果對比
數學形態學的運算以腐蝕和膨脹這兩種基本運算為基礎,引出了其它幾個常用的數學形態運算。數學形態學中最常見的基本運算只有七種,分別為:腐蝕、膨脹、開運算、閉運算、擊中、細化和粗化,它們是全部形態學的基礎。它們的定義如下:
設x代表乙個數字影象,我們假定該影象是二值的,即取值只有1或0,則x表示乙個二進位制訊號集合,b是乙個簡單的緊集合,稱為「結構元素」。x被b膨脹和腐蝕的結果可以分別定義為:
在數字圖形處理領域中,數學形態學主要用於非線性變形,它可以區域性地修改訊號的幾何特徵,並提供有關訊號的幾何特徵資訊。根據不同的訊號的形態特徵,可以採用不同的數學形態**算對訊號進行處理,這些數學形態與運算都被視為數學形態濾波器。在這種應用方法中,每乙個訊號都被視為適當的維數的歐幾里德空間中的集合。數學形態濾波器被定義為集合的運算,它使訊號的圖形變形,以提供關於其幾何結構的數位化資訊。對於被視為集合的二進位制訊號,腐蝕、膨脹、開運算和閉運算是最簡單的形態運算。這些濾波器還可以引申到多維訊號中去。此時,形態濾波器利用的是灰值圖的數學形態運算的定義。下面將**如何將數學形態濾波器應用到舵機轉角訊號(一維數碼訊號)的處理中,實現去除脈衝雜訊和減小擾動,以及在微控制器上程式設計實現和快速運算的方法。
數學形態濾波器通常是用在二維圖形的處理,為把數學形態濾波器推廣到一維的訊號的處理中,下面再介紹一下腐蝕、膨脹、開運算和閉運算這乙個基本運算在一維訊號處理中的定義:
設h、k分別為h[n]和k[n]的定義域,長度分別為n和m,一般n>m。h和k均為整數集合。
h[n]指包含舵機轉角訊號的數位化序列,k[n]指結構元素序列。
h被k腐蝕:
採用數字形態濾波方法,還要選用合理的演算法。其中,如何選取模板序列的長度是關鍵,如果模板序列過長會將有用訊號當作雜訊濾除,過短則達不到濾除雜訊的目的。在取樣速率一定的情況下,序列的長度與時間成正比,這要求模板的長度要小於模型車的最小轉彎時間,大於舵機擾動的最長時間。第一圈讓模型車勻速通過,這樣處理有兩個優點:
1) 可以固定最小轉彎時間,從而確定模板的長度。非勻速通過時速轉彎時間不定,要求模板長度可變,從而造成後續處理複雜,穩定性不高。
2) 取樣序列的順序可以直接轉化為位移量,便於後續控制策略處理。相對於非勻速通過速度與時間乘積得到的位移,直接轉化得到的位移更準確(在標準的南韓賽道上,實驗模型車直接轉化得到的賽道長度誤差小於5cm,速度與時間乘積得到賽道長度誤差在10cm以上)。
實驗系統在圖2所示的賽道上,智慧型車對賽道資訊的取樣速率為200hz,以1.5m/s的速度勻速跑完第一圈的資料如圖3所示。可以看到在彎道中,舵機的轉角資訊存在著嚴重的毛刺和擾動,不能直接用於第二圈的控制策略。圖4為matlab中採用3階巴特沃茲濾波處理後的結果,干擾的抑制效果仍然不理想,而且運算量偏大,微控制器難以承受。圖5為採用形態學濾波處理後的資料,賽道資訊完整準確,可以較好的應用於後續控制策略。
圖2 實驗系統採用的賽道
圖3 第一圈記錄的賽道資訊
圖4 3階巴特沃茲濾波器處理後資料
圖5 形態學濾波處理後的資料
數學形態濾波的快速演算法
由於數學形態濾波器只由加法、減法和比較運算構成,其運算相對簡單,因此,它很適合於在計算功能相對較弱的微控制器上應用並能取得很好的效果。以往微控制器由於受儲存容量、計算速度及字長的限制而使大多數的數字濾波器較難實現,而形態濾波器則為微控制器應用數字濾波器代替以往的模擬濾波器提供了一條新的途徑。
由腐蝕的定義可知,欲計算f(n)的腐蝕值,需要知道該點前w(w為結構元素的寬度)點的資料;而要計算f(n)膨脹後的結果,則需要知道該點後w點的資料。由於運算是乙個腐蝕運算接著乙個膨脹運算後得到的,在長度為l的資料中只有從第w點到第(l-w+1)點,才可以得到開運算的結果。
如圖6所示,我們定義乙個模板序列,該序列的長度和結構元素的寬度相同。該模板的初始值由前w個點的腐蝕值組成。以第n點為例,沿該點向前的方向對模板序列的值進行膨脹運算,運算的結果即為該點的開運算的結果。同時,沿該點向後的方向繼續進行腐蝕運算,得到第(n+1)點的腐蝕值。將(n+1)點的腐蝕值作為模板序列的最後乙個點,並將模板序列前(w-1)點順次向前移動乙個位置。更新後的模板值即可用來做 (n+1)點的膨脹運算,得到在(n+1)點的開運算值。如此繼續下去,就可完成全部的開運算。在做閉運算也可採用類似的方法來提高計算的速度。
圖6 數學形態濾波快速演算法
這樣,對長度為n的一段資料,用m個零作為其結構元素進行處理時,當採用一般方法進行計算,需要進行2×m×n次的比較運算。而當採用快速演算法時,能夠在比較最大值的同時得到最小值,減少(n-m+1)×m次比較運算,使程式的執行速度提高了近一倍,而且,由於採用這種快速演算法,可以實現路徑記憶資訊的實時處理,很大程度上方便了第二圈控制策略的制定,因此,它使得形態濾波這種方法更加適合應用於路徑資訊的處理中。
實驗及結論
通過對不同感測器方案(光電管和ccd)的智慧型車在不同賽道多次實驗發現,對於光電管方案和ccd方案的智慧型車,賽道記憶演算法都能一定程度上提高第二圈速度。智慧型車採用形態學濾波演算法處理賽道記憶資料後,不但行駛的穩定性、準確性有了較大的提公升,而且沒有大幅增加mcu的資源消耗,同時可以支援複雜的控制策略。上述方案具有很強的通用性,適用於不同感測器方案、不同控制演算法的智慧型車。
形態學濾波
include pch.h include include include include using namespace std using namespace cv 形態學 mat g srcimage,g dstimage int g nelementshape morph rect int ...
形態學濾波 腐蝕與膨脹
形態學操作就是基於形狀的一系列影象處理操作。最基本的形態學操作有兩種 膨脹和腐蝕。這裡需要注意的是 膨脹和腐蝕是對白色部分而言的,不是黑色部分。因為我用毛筆字的,剛開始看起來,非常困惑為什麼膨脹之後,毛筆字反而變小了,其實當時就是沒有注意到,膨脹是對白色區域進行處理的,而白色區域增加了之後,字型就自...
數字形態學 QRS波中的R波檢測
數學形態學是一門建立在嚴格數學理論基礎上的學科,它提供了一種有效的非線性訊號處理方法,可以很好地保持訊號的幾何資訊。數學形態學最基本的概念是結構元素,它本身具有一定的形態 如點 線段和圓等 相當於乙個 探針 在圖形中不斷地移動結構元素,便可考察出圖形各部分間的關係,類似於人的注意焦點 focus o...