高斯濾波之FPGA實現

2021-09-24 16:33:51 字數 1962 閱讀 3769

濾波,即強調影象中的某些特徵,或者去除影象中不需要的資訊。例如:影象去燥、影象增強、邊緣檢測等。

濾波是乙個鄰域操作運算元。通常,鄰域選擇3x3,5x5等,這些3x3或者5x5的鄰域,稱作濾波器,掩模或核。利用給定畫素鄰域內的畫素值與掩模做卷積,從而決定該畫素的最終輸出值。

介紹高斯濾波之前,先從均值濾波說起。

均值濾波,即用掩模確定的領域內畫素的平均灰度值代替原畫素值

但是,均值濾波在濾除雜訊的同時,也會帶來模糊邊緣的負面效應。如果使用簡單平均,顯然不是很合理,因為影象都是連續的,越靠近的點關係越密切,越遠離的點關係越疏遠。因此,加權平均更合理,那麼應該如何分配權重呢?

這時,我們就引入了高斯濾波

高斯濾波是一種線性平滑濾波,適用於消除高斯雜訊。那麼,何謂高斯雜訊?

高斯雜訊就是它的概率密度函式服從高斯分布(即正態分佈)的一類雜訊。

高斯濾波器,即根據高斯函式的形狀來選擇權值的線性平滑濾波器。接著,介紹高斯函式和高斯核。

高斯函式

(1)一維高斯分布

(2)二維高斯分布

高斯核

為了計算權重矩陣,需要設定σ的值。假定σ=1.5,則模糊半徑為1的權重矩陣如下:

這9個點的權重總和等於0.4787147,這時我們還要確保這九個點加起來為

1(高斯模板的特性),因此上面

9個值還要分別除以

0.4787147

,得到最終的高斯核。

有了高斯核

,下面的計算就簡單了。

在掩模領域內,將9個點分別乘以對應的高斯核權重值,將這9個值加起來,就是中心點的高斯濾波後的值。對所有點重複這個過程,就得到了高斯模糊後的影象。如果原圖是彩色,可以對rgb三個通道分別做高斯模糊。

快取影象資料;

做卷積;

對映輸出。

實現效果如下:

4補充說明

(1)如果乙個點處於邊界,周邊沒有足夠的點,怎麼辦?(可以把已有的點對映到另一面的對應位置,構成完整的掩模)

(2)高斯濾波採用加權平均思想,距離越近的點權重越大,距離越遠的點權重越小。但是,這個假設在影象的邊緣處變得不成立。如果在邊緣處也用這種思路來濾波的話,即認為相鄰相近,則得到的結果必然會模糊掉邊緣,這是不合理的。這就涉及到另外一種濾波演算法,雙邊濾波。

(3)高斯濾波器寬度(決定著平滑程度)是由引數σ表徵的。σ越大,高斯濾波器的頻帶就越寬,平滑程度就越好。通過調節平滑程度引數σ,來達到希望的濾波效果。

OpenCV 高斯濾波實現

高斯濾波是一種線性平滑濾波,適用於消除高斯雜訊,廣泛應用於影象處理的減噪過程。通俗的講,高斯濾波就是對整幅影象進行加權平均的過程,每乙個畫素點的值,都由其本身和鄰域內的其他畫素值經過加權平均後得到。在影象處理中高斯濾波一般有兩種實現方式 一種是用離散化視窗滑窗卷積,另一種是通過傅利葉變換。最常見的就...

python實現高斯濾波

一,定義 核是 3 3 均值濾波 二,高斯函式 y方向的方差與x方向的一致。處理後影象看起來更模糊 濾波明顯 的話,核要更大。三 實現 四 核計算 五 影象產生高斯雜訊迴圈 實現 1 def clamp pv 使我們的隨機值在0 255之間 2if pv 255 3return 255 4if pv...

python OpenCV 實現高斯濾波詳解

目錄 高斯濾波是一種線性平滑濾波,適用於消除高斯雜訊,廣泛應用於影象處理的減噪過程。1 通俗的講,高斯濾波就是對整幅影象進行加權平均的過程,每乙個畫素點的值,都由其本身和鄰域內的其他畫素值經過加權平均後得到。高斯濾波的具體操作是 用乙個模板 或稱卷積 掩模 掃瞄影象中的每乙個畫素,用模板確定的鄰域內...