1. 程式人生 > >數字影象處理—影象高斯模糊運算直觀解釋

數字影象處理—影象高斯模糊運算直觀解釋

二維高斯函式:

其影象為:


設一幅影象為I=f(x,y)I表示影象的灰度值,定義運算:



表示對影象I=f(x,y)進行卷積運算,其中卷積核就是高斯函式,函式L表示通過運算子對Gf進行某種規則XXOO得到的一新函式。實際上運算後的影象L就是被高斯函式模糊過的影象。到這裡別管卷積運算是神馬,你只要知道符號*表示一種運算規則,只要通過這個規則(後面開始解釋)就行。

學過高數的應該要看懂下面這個東西:


看不懂回去面壁思過去 -_-#

這意味著二維高斯函式在每一點(x,y)對應著一個權值,這些權值之和恰好等於1。

公式(2)的含義實際上就是在一個畫素點(x,y)處,把高斯函式影象的中心點對準(x,y)

點,將點(x,y)周圍的所有的畫素點與對應的權值相乘後進行求和,點(x,y)對應的權值為G(0,0,σ),點(x+1,y+1)對應的權值為G(1,1,σ),點(x+m,y+n)對應的權值為G(m,n,σ)

說了半天,嘛意思?

用大白話說,就是點(x,y)最後的畫素值應該是其周圍每個畫素點都貢獻了一定的值,再將這些值進行疊加得來的,越靠近點(x,y),其貢獻的值越多,當然點(x,y)自己本身貢獻的值一定是最多的(因為權重是最大的)。越遠離點(x,y)的畫素點則貢獻的值就越小(因為權重小)。

寫成表示式就是這個樣子,這也就是公式(2)的離散形式:


m,n為整數,對於影象來說,(x,y)當然也得為整數啦~

在實際操作中,對於那些距(x,y)非常遠的點,其貢獻值幾乎可以忽略不計了,所以通常可以不用計算,近似認為貢獻值為0,那麼式(3)就可以改為


這個 的值到底取多少合適呢?不用擔心,大牛們已經為我們計算好了:

h=3σ

對於半徑超過距離以外的點,G(m,n)這個權值幾乎快要等於0了,從前面的函式影象可以看到,周圍一大片幾乎已經貼到座標平面上了,只有中間突起比較顯眼。這就是大家常說的原則。

當你的選取的越大的時候(高斯函式影象整個變胖變矮了),影象被模糊的越厲害,直觀上看就是靠近點(x,y)的畫素點貢獻值相對以前來說變小了,反而那些遠離(x,y)點的畫素點貢獻值反而變大了。

每次我們在計算高斯卷積時,事先都先根據設定好的σ
值,通過高斯函式來獲得一系列的(x,y,z)值,通常都是一個矩陣,這個矩陣的大小就2*3σ+12*3σ+1列,大家都叫它為Gaussian kernel(高斯核),比如 σ = 0.6 時,大小為 5X5, 這個高斯核為: