作用
消除輸入信號的“突變”脈沖,如下圖:
中值濾波原理
連續(xù)采樣N次(N取奇數(shù)),把N次采樣值按大小排列,取中間值為本次有效值。
下面以3次中值濾波原理為例說明原理:輸入數(shù)據(jù)里面a3點為毛刺,b3點是由a1 a2 a3三個點排序得出的,由于a3>a2>=a1,所以,b3=a2或者a1,這樣中間的毛刺信號就沒了。
圖1 3次采樣中值濾波示例
優(yōu)點
能有效克服因偶然因素引起的波動干擾,對溫度、液位的變化緩慢的被測參數(shù)有良好的濾波效果。
代碼設(shè)計
以3次采樣中值濾波器為例,設(shè)計方案如圖2所示。源碼和仿真測試代碼鏈接:
緩存用寄存器打拍實現(xiàn),比較需要任意兩兩比較,所以比較次數(shù)為C n ^2^次,選擇輸出在比較完成以后,進(jìn)行簡單排序,確定中間值輸出。其中比較麻煩的是后面兩步,比較次數(shù)和排序隨著中值濾波規(guī)模的變大而變大,是二次增長。
圖2 中值濾波器方案
代碼詳解
很多小伙伴反應(yīng)嗎,最多到上一步方案設(shè)計就難以往下走了,不知道代碼怎么設(shè)計。為了讓大家學(xué)會怎么設(shè)計代碼,這里給大家提供代碼含義解釋和設(shè)計思路解釋。
根據(jù)圖2,首先寫緩存器,din是輸入端口。代碼如下:
比較部分為了簡便,我們用一個bit位代表某兩兩比較的結(jié)果,比如com[2]=1就代表din_buf[0]大于din_buf[2],反之din_buf[0]小于din_buf[2]。這樣用3bit的線就可以保留比較結(jié)果了。wire類型的代表線,assign代表將結(jié)果引到某根線上,所以比較結(jié)果輸出到comp[*]沒有經(jīng)過任何時鐘,延時是純粹的組合邏輯延時。代碼如下:
排序篩選的部分由于只有3個比較所以直接用枚舉法,全部列出來處理。注釋部分表示了排序結(jié)果,根據(jù)排序結(jié)果選擇將哪個緩沖器輸出即可。代碼如下:
仿真測試
仿真測試文件和代碼在同一個文件夾下,歡迎下載。第二行周期波形是輸入波形,帶有一個正尖峰和一個負(fù)尖峰,經(jīng)過中值濾波后如第三行所示,毛刺都沒了。
**圖3 ** 中值濾波結(jié)果
-
濾波器
+關(guān)注
關(guān)注
161文章
7876瀏覽量
179066 -
寄存器
+關(guān)注
關(guān)注
31文章
5372瀏覽量
121295 -
緩沖器
+關(guān)注
關(guān)注
6文章
1953瀏覽量
45678
發(fā)布評論請先 登錄
相關(guān)推薦
一種新型的雙模雙通帶濾波器的設(shè)計方案
![<b class='flag-5'>一種</b>新型的雙模雙通帶<b class='flag-5'>濾波器</b>的<b class='flag-5'>設(shè)計方案</b>](https://file1.elecfans.com//web2/M00/A6/6B/wKgZomUMPZuABu_9AAALgh2zfEM870.jpg)
請教一種可識別未受污染點的中值/均值濾波matlab程序
請問如何實現(xiàn)改進(jìn)的中值濾波器的設(shè)計?
基于Stratix II EP2S60改進(jìn)中值濾波器的設(shè)計及實現(xiàn),不看肯定后悔
一種基于FPGA的圖像中值濾波器的硬件實現(xiàn)
直流供電程控濾波器設(shè)計方案
![直流供電程控<b class='flag-5'>濾波器</b><b class='flag-5'>設(shè)計方案</b>](https://file.elecfans.com/web2/M00/49/16/pYYBAGKhtDeAEn8QAAAWJmGXPTA084.jpg)
圖像處理基礎(chǔ)自適應(yīng)中值濾波器(基于OpenCV實現(xiàn))
![圖像處理基礎(chǔ)自適應(yīng)<b class='flag-5'>中值</b><b class='flag-5'>濾波器</b>(基于OpenCV實現(xiàn))](https://file.elecfans.com/web1/M00/46/6B/o4YBAFqdB9mASOKhAAAZfDZc0Uw757.png)
圖像加窗中值濾波算法的研究分析
![圖像加窗<b class='flag-5'>中值</b><b class='flag-5'>濾波</b>算法的研究分析](https://file.elecfans.com/web1/M00/7B/44/pIYBAFwAru6ARE8VAACFBasLrqE260.png)
評論