基於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或掃描下方二維碼關注訂閱號,在後台回復圖像處理,即可獲得本文的所有課件、資料、和工程源碼哦!
推薦閱讀:
※想打造一個神經網路,自動給黑白照片上色?這兒有一份超詳細教程
※圖片一拉大就模糊!要不要試試無損放大圖片?
※1.14【OpenCV圖像處理】基本閾值操作
※亮度響應與HDR基礎
※如何讓模糊圖片變得更清晰?
TAG:现场可编辑逻辑门阵列FPGA | 图像处理 |