基於FPGA的中值濾波算法實現


         在這一篇開篇之前,我需要解決一個問題,上一篇我們實現了基於FPGA的均值濾波算法的實現,最后的顯示效果圖上發現有一些黑白色的斑點,我以為是椒鹽噪聲,然后在做基於FPGA的中值濾波算法的實驗時,我發現黑白斑點並沒有消除,中值濾波本來是可以很好的濾掉椒鹽噪聲,所以說這里並不是椒鹽噪聲,最后經過我仔細的檢查,終於明白了問題的所在。我所使用的Xilinx這款開發板的晶振為125Mhz,串口模塊我使用前面設計好的代碼,輸入時鍾為50Mhz,產生的接收完成標志信號也就是一個50Mhz的時鍾周期,我這里將接收完成標志作為,雙口RAM的寫使能,卻把IP Core的時鍾設置為125Mhz系統時鍾,所以在wea有效期間,clka會有至少兩次上升沿,所以在串口傳輸過程中,RAM寫入的數據可能會有一部分出現偏差,所以最終顯示出來有部分像素有問題。這里我修改如下。

  最后均值濾波的顯示效果也是同樣的,一幅完好的圖片,和原圖相比只是變模糊了一些,查看圖片請跳至文末。

  在實時圖像采集中,不可避免的會引入噪聲,尤其是干擾噪聲和椒鹽噪聲,噪聲的存在嚴重影響邊緣檢測的效果,中值濾波是一種基於排序統計理論的非線性平滑計數,能有效平滑噪聲,且能有效保護圖像的邊緣信息,所以被廣泛用於數字圖像處理的邊緣提取,其基本原理是把數字圖像或數字序列中的一點的值用該點鄰域內所有點的中值來代替。

中值濾波對脈沖噪聲有良好的濾除作用,特別是在濾除噪聲的同時,能夠保護信號的邊緣,使之不被模糊。這些優良特性是線性濾波方法所不具有的。此外,中值濾波的算法比較簡單,也易於用硬件實現。所以,中值濾波方法一經提出后,便在數字信號處理領得到重要的應用。

中值濾波方法是,對待處理的當前像素,選擇一個模板,該模板為其鄰近的若干個像素組成,對模板的像素由小到大進行排序,再用模板的中值來替代原像素的值的方法。

         當我們使用3x3窗口后獲取領域中的9個像素,就需要對9個像素值進行排序,為了提高排序效率,排序算法思想如圖3-18所示

(1)       對窗內的每行像素按降序排序,得到最大值、中間值和最小值;

(2)       把三行的最小值相比較,取其中的最大值;

(3)       把三行的最大值相比較,取其中的最小值;

(4)       把三行的中間值相比較,再取一次中間值;

(5)       把前面的到的三個值再做一次排序,獲得的中值即該窗口的中值。 

排序算法思想

  中值濾波的3x3矩陣的生成和均值濾波是完全類似的。我們求中值的方法是,先對3x3矩陣的每行按從大到小進行排序,然后利用排序法求出最大值那一列的最小值,求出之間數那一列的中間值,求出最小值按一列的最大值,最后將求出的三個值再排序,這三個值的中間值就是這個3x3矩陣的中間值。

 

中值濾波計算

如圖所示仿真,可以推算出,這個中值完全是正確的,最后將求出的中值輸出,這樣中值定理便完成了。 

3x3矩陣的中值輸出

         我們在求中值的時候消耗了三個時鍾周期,最后輸出寫RAM使能信號時,需要將per_clken延時3個時鍾周期,保證圖像數據與寫RAM使能對齊、同步性。這里延時的寫法和前面文章中所講的是完全相同的!

  中值濾波和均值濾波比較:中值濾波與均值濾波分別是非線性濾波和線性濾波的代表,這兩種濾波非常的相似,但濾波的效果卻有很大的差別,均值濾波相當於低通濾波,有將圖像模糊化的趨勢,對椒鹽噪聲基本無能為力。中值濾波的優點是可以很好的過濾椒鹽噪聲,缺點是容易造成圖像的不連續。中值濾波有效的移植了最大值和最小值,圖像會變得均勻,對椒鹽噪聲有很好的濾出效果!所以本系統最終選擇采用中值濾波的方法。

灰度lena

均值濾波lena

中值濾波lena

  上圖為灰度圖,中間為均值濾波圖像,下圖為中值濾波后的圖像。通過對比發現,均值濾波后的lena變得更模糊,亮度也變高,而中值濾波后的lena清晰度較好,也是有效的過濾掉了椒鹽噪聲,由於我們這是所選取的圖片椒鹽噪聲不明顯,感興趣的讀者可以自己去試着找一幅帶椒鹽噪聲的圖片去處理一下。這里需要強調的一下是濾波后的圖像會有部分邊緣缺失,這是因為我們在求取均值或中值時,生成的3x3矩陣,在緩存第一行數據時,第二三行數據是沒有的,同樣緩存到前兩行第三行數據也是沒有的,但這個時候我們就已經開始了求均值或中值的運算,那么這個時候輸出的像素點其實是作廢的,這里我們並沒有過多的關心這些像素點,只是專注於學習中值濾波。

  如果你想獲得本文的所有課件和工程代碼,請關注本人的個人微信訂閱號:開源FPGANingHeChuan或掃描下方二維碼關注訂閱號,在后台回復圖像處理,即可獲得本文的所有課件、資料、和工程源碼哦

 

轉載請注明出處:NingHeChuan(寧河川)

個人微信訂閱號:開源FPGANingHeChuan

如果你想及時收到個人撰寫的博文推送,可以掃描左邊二維碼(或者長按識別二維碼)關注個人微信訂閱號

知乎ID:NingHeChuan

微博ID:NingHeChuan

原文地址:http://www.cnblogs.com/ninghechuan/p/7442851.html 

 

 

圖像處理系列文章

第一篇:基於FPGA的VGA顯示靜態圖片

第二篇:基於FPGA的RGB565_YCbCr_Gray算法實現

第三篇:基於FPGA的Uart接收圖像數據至VGA顯示

番外篇:數字圖像處理界標准圖像 Lena 后面的故事

第四篇:基於FPGA的均值濾波算法實現


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM