中值濾波的含義
中值濾波是濾波算法中非常重要的一種,在實際單片機系統(tǒng)巾,采用中值濾波對輸入信號進行處理十分適用,尤其對輸入的窄脈沖干擾的抑制作用非常明顯。
中值濾波算法是把輸入信號進行連續(xù)″次采樣后,從大到小排序,選取其中間值作為輸出信號。一般來講,由于單片機系統(tǒng)的處埤速度不快,n值不能選得太大。另外,刀值也不能選得太小,當然這與系統(tǒng)采樣時間有關,如果系統(tǒng)采樣的時問月朋比較長,則可以將n選為3或者5 如果系統(tǒng)的采樣時間比較短,則可以將″選為11或者13,或者主設置得更大,當然要根據系統(tǒng)的各個參數進行綜合選定。
算法功能模塊
在本實例中實現(xiàn)的是n為3的中值濾波算法.首先對模擬輸入信號的進行采集,然后對其進行排序,排序后再選取其中間值作為輸出.具體的功能模塊有如下幾個部分:
· 對模擬輸入的A/D量化:
· 計數器模塊;
· 16位數據大小的比較;
· 排序的實現(xiàn)。
中值濾波要在一定的時間內對輸入信號進行連續(xù)地采樣,然后取幾次采樣值的中間值。中值濾波對于脈沖干擾有很好的抑制作用。另外,中值濾波的實現(xiàn)也很簡單,利于讀者掌握和使用。在工程實踐中,刀的取值取決于系統(tǒng)的參數,除了上面提到的采樣時間和處理速度外,還應該給系統(tǒng)的其他功能留下足夠的處理時間?傊,n的取值要綜合系統(tǒng)的各項指標來決定。
本實例將對RA0端口的模擬輸入進行3次連續(xù)采樣,再將其中間值求出,作為結果輸出。
系統(tǒng)先將3個采樣值存儲到AD1、AD2、AD3這3個變量中(ADi由兩個8位變量組成,分別為ADiL和ADiH),然后對AD1和AD2進行排序,將大的值存儲到AD1中,將小的值存儲到AD2中;再對AD2和AD3進行排序,將大的值存儲到AD2,將小的值存儲到AD3;最后對AD1和AD2進行排序,將大的值存儲到AD1中,將小的值存儲到AD2中,這樣就完成了3個變量的排序操作。排序操作完成后,將AD2存儲到OUTH、OUTL中再輸出。