圖像空域平滑算法

基於空間相領像素點的平滑算法是圖像處理裏面經常用到的去噪算法。
它的核心思想是:選擇當前像素點c和其周圍的一些像素{c, n1, n2, ..., nN}(共N+1個像素點),根據他們與c的距離和/或與c的像素差值,賦予他們不同的權重{w0, w1, w2, ..., wn}(要求0<wi<=1並且w0+w1+w2+...+wN=1, w0是當前點c的權重值),那麼平滑後當前點的像素值爲C' = w0*c + w1*n1 + ... + wN*nN.這種運算方式可以稱爲加權平均,也可以稱爲卷積。
空域平滑算法就是不同權重值的卷積運算,卷積運算需要注意的問題1是計算量,2是數據搬移量。3x3的卷積運算,一個像素會被其周邊9個點的計算過程用到,在有較大Cache的體系裏面還好,如果沒有cache或者cache比較小,那麼就會造成重複的數據在內外存之間搬移。因此要儘量減少卷積運算核的大小,尤其是垂直方向上的緯度大小(圖像數據絕大部分都是按照水平方向存儲的)。
不同的空域平滑算法就是在N值和wi的選擇上不同而已。

1. 均值濾波
N取周邊的3x3或者5x5或者更大的或者不是矩形的模板,C'是模板內所有點的平均值。
各點的權重wi相同都爲1/(N+1)。均值濾波算法簡單,但濾波效果不好,還模糊的了圖像細節,一般都不採用。

2. 中值濾波
N取周邊的3x3或者5x5或者更大的或者不是矩形的模板,C'是模板內所有點的中間值。
wi = ni是排序後中值點 ? 1 : 0。中值濾波對孤立點的椒鹽噪聲特別有效,而且可以保護圖像邊緣,是一種經典的平滑濾波算法。但對其他的一些噪聲,效果並不太好,所以也很少採用。

3. 高斯濾波
N取周邊的3x3或者5x5或者更大的或者不是矩形的模板,C'是模板內所有點高斯加權的結果。
wi的取值特徵是考慮ni點與c點的距離。離c點越近的點,賦予的權重越大,反之越遠的點,權重越低。在2維空間上類似一個鐘形,符合高斯函數的特徵。因此這類的濾波算法統稱爲高斯濾波。高斯濾波的計算量適中,對於各種噪聲都能有一個不一定是最好但可以接受的結果,因此在圖像處理大量採用。
高斯濾波的核心是高斯核,參考博文高斯圖像濾波原理及其編程離散化實現方法(blog.csdn.net/likezhaobin/article/details/6835049)。
OpenCV裏面定義的3x3高斯核是:
0.0625 0.1250 0.0625
0.1250 0.2500 0.1250
0.0625 0.1250 0.0625

matlab裏面3x3高斯核是
0.0751 0.1238 0.0751
0.1238 0.2042 0.1238
0.0751 0.1238 0.0751
高斯核一般都是x,y兩個軸對稱的。OpenCV裏面也可以定義不對稱。

在很多應用裏面定義了高斯核的大小,例如3x3或者5x5,根據高斯核直徑D(大於1的奇數),可以對應計算出高斯分佈σ的值,參考OpenCV的代碼,σ=(D/2-1)*0.3+0.8,σ得到後就可以計算高斯核各個參數,然後卷積運算進行濾波。這個計算過程其實是不符合應用場景的。決定高斯核的因素有兩個:1.核直徑(大於1的奇數),2.當前噪聲級別σ。D與σ之間是有約束關係的,按照高斯分佈的特點,要求數值分佈在(μ—3σ, μ+3σ)中的概率幾乎爲1,因此D最好是大於6σ的最小奇數。即 D=round(6*σ+1)|1。取更大的D值,只會增加計算量,效果並不會提升。取小於這個值的直徑,會由於採樣點數太少,濾波效果不好。因此應該是根據當前圖像的噪聲級別σ來確定採用的高斯核直徑,只有這樣才能使用最小的高斯核濾波得到最好的結果。只是在很多時候圖像的噪聲級別σ很難準確的得到,噪聲級別估計也是一個複雜且重要的圖像算法。

優化高斯卷積的方法主要有:1.在滿足噪聲級別的情況下,儘量減小高斯核直徑;2.整數化高斯核係數,浮點數操作所需要的指令週期遠大於整數操作;3.調整高斯核係數向2的整數倍靠攏,用左右移位來代替乘除法,這時候的高斯核已經不符合高斯分佈曲線,但大致趨勢相類似(例如OpenCV的3x3高斯核)。

4. 雙邊濾波(Bilateral filter)
高斯濾波考慮ni與c的距離關係,近的分權重大些。而雙邊濾波不僅考慮距離,還考慮ni與c的像素值差別,差別小的分的權重更大些,相反如果c與ni像素值差別很大,那麼ni的權重會相應降低。
基於距離的權重 wdi=Guass(Dis(c-ni));  
基於像素的權重 wpi=Guass(|P(c)-P(ni)|);  
wi = wdi*wpi
雙邊濾波可以很好的保護圖像邊界,對於噪聲點有如高斯濾波的效果,因此濾波效果優於高斯濾波,只是它的計算量比高斯濾波要大,高斯核需要實時計算,不能對於高斯核做先驗優化。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章