基於FPGA灰度影像高斯濾波演算法的實現

  • 2019 年 10 月 29 日
  • 筆記

基於FPGA灰度影像高斯濾波演算法的實現

作者:lee神

1. 內容概要

高斯濾波是一種線性平滑濾波,適用於消除高斯雜訊,廣泛應用於影像處理的減噪過程。通俗的講,高斯濾波就是對整幅影像進行加權平均的過程,每一個像素點的值,都由其本身和鄰域內的其他像素值經過加權平均後得到。高斯濾波的具體操作是:用一個模板(或稱卷積、掩模)掃描影像中的每一個像素,用模板確定的鄰域內像素的加權平均灰度值去替代模板中心像素點的值。

對於高斯濾波的基礎理論知識可參考:《基於FPGA的影像高斯濾波演算法理論篇》。

2. 高斯濾波演算法實現步驟

圖1 高斯濾波5x5運算元模板

圖2高斯濾波3x3運算元

1>串列像素形成3x3矩陣

(x-1,y-1)

(x,y-1)

(x+1,y-1)

(x-1,y)

(x,y)

(x+1,y)

(x-1,y+1)

(x,y+1)

(x+1,y+1)

f(x,y)表示(x,y)點的像素值。

g(x,y)表示(x,y)點經過均值處理後的值。

2>用模板確定的鄰域內像素的加權平均灰度值去替代模板中心像素點的值

g(x,y)=(1/16)* (f(x-1,y-1)+2f(x,y-1)+f(x+1,y-1)

+2f(x-1,y)+4f(x,y) + 2f(x+1,y)+

f(x-1,y+1)+2f(x,y+1)+f(x+1,y+1))-----------------(1)

3> 用模板掃描影像中的每一個像素

圖3 模板掃描影像機制

3. FPGA實現

首先將RGB影像轉換成Gray影像

方法1:

圖4 R/G/B lane形成灰度影像進行高斯濾波

方法2:

圖5 Y lane形成灰度影像進行高斯濾波

源碼:

形成3x3像素矩陣

利用公式(1)進行高斯濾波的實現

模擬程式碼:

產生行為480的循環數據。

模擬結果:

圖6 形成3x3的影像矩陣

圖7 高斯濾波的計算結果

實驗結果:

圖8 實驗使用原圖

圖9 灰度影像

圖10 灰度影像經過高斯濾波後的影像

總結:

至此,基於FPGA的三大影像濾波(均值濾波、中值濾波、高斯濾波)處理已經講解完畢,其中的影像處理效果需要大家自己去實驗,去對比。手機拍攝出來的畢竟有差距。

FPGA在前端捕獲到數據後首先要對影片影像做一個預處理,然後根據雜訊的來源,針對椒鹽雜訊進行中值濾波,針對高斯雜訊進行高斯濾波處理,均值濾波在影像處理中也很常見。

推薦閱讀:

《 基於FPGA的灰度影像均值濾波演算法的實現》

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

《基於MATLAB影像處理的中值濾波、均值濾波以及高斯濾波的實現與對比》

Tags: