摘要
論文中遇到很重要的一個元素就是高斯核函數,但是必須要分析出高斯函數的各種潛在屬性,本文首先參考相關材料給出高斯核函數的基礎,然後使用matlab自動保存不同參數下的高斯核函數的變化gif動圖,同時分享出源代碼,這樣也便於後續的論文寫作。
高斯函數的基礎
2.1 一維高斯函數
高斯函數,Gaussian Function, 也簡稱爲Gaussian,一維形式如下:
對於任意的實數a,b,c,是以著名數學家Carl Friedrich Gauss的名字命名的。高斯的一維圖是特徵對稱“bell curve”形狀,a是曲線尖峯的高度,b是尖峯中心的座標,c稱爲標準方差,表徵的是bell鍾狀的寬度。
高斯函數廣泛應用於統計學領域,用於表述正態分佈,在信號處理領域,用於定義高斯濾波器,在圖像處理領域,二維高斯核函數常用於高斯模糊Gaussian Blur,在數學領域,主要是用於解決熱力方程和擴散方程,以及定義Weiertrass Transform。
從上圖可以看出,高斯函數是一個指數函數,其log函數是對數凹二次函數 whose logarithm a concave quadratic function。
高斯函數的積分是誤差函數error function,儘管如此,其在整個實線上的反常積分能夠被精確的計算出來,使用如下的高斯積分
同理可得
當且僅當
上式積分爲1,在這種情況下,高斯是正態分佈隨機變量的概率密度函數,期望值μ=b,方差delta^2 = c^2,即
2.2 二維高斯函數
二維高斯函數,形如
A是幅值,x。y。是中心點座標,σx σy是方差,圖示如下,A = 1, xo = 0, yo = 0, σx = σy = 1
2.3 高斯函數分析
這一節使用matlab直觀的查看高斯函數,在實際編程應用中,高斯函數中的參數有
ksize 高斯函數的大小
sigma 高斯函數的方差
center 高斯函數尖峯中心點座標
bias 高斯函數尖峯中心點的偏移量,用於控制截斷高斯函數
爲了方便直觀的觀察高斯函數參數改變而結果也不一樣,下面的代碼實現了參數的自動遞增,並且將所有的結果圖保存爲gif圖像,首先貼出完整代碼:
結果圖:
固定ksize爲20,sigma從1-9,固定center在高斯中間,並且bias偏移量爲整個半徑,即原始高斯函數。
隨着sigma的增大,整個高斯函數的尖峯逐漸減小,整體也變的更加平緩,則對圖像的平滑效果越來越明顯。
保持參數不變,對上述高斯函數進行截斷,即truncated gaussian function,bias的大小爲ksize*3/10,則結果如下圖:
truncated gaussian function的作用主要是對超過一定區域的原始圖像信息不再考慮,這就保證在更加合理的利用靠近高斯函數中心點的周圍像素,同時還可以改變高斯函數的中心座標,如下圖:
爲了便於觀察截斷的效果,改變了可視角度。
高斯核函數卷積
論文中使用gaussian與feature map做卷積,目前的結果來看,要做到隨着到邊界的距離改變高斯函數的截斷參數,因爲圖像的邊緣如果使用原始高斯函數,就會在邊界地方出現特別低的一圈,原因也很簡單,高斯函數在與原始圖像進行高斯卷積的時候,圖像邊緣外爲0計算的,那麼如何解決邊緣問題呢?
先看一段代碼:
在i,即row上對高斯核函數進行截斷,bias爲半徑大小,則如圖6
並且對下圖7進行卷積,
首先卷積核爲原始未截斷高斯核函數,則結果如圖8
可以看出,在圖像邊緣處的卷積結果出現不想預見的結果,邊緣處的值出現大幅度減少的情況,這是高斯核函數在邊緣處將圖像外的部分當成0計算的結果,因此,需要對高斯核函數進行針對性的截斷處理,但是前提是要掌握bias的規律,下面就詳細分析。
如果使用圖6的高斯核函數與圖7做卷積操作,則如圖9:
可以看出,相比較於圖8,與高斯核函數相對應的部分出現了變化,也就是說:
靠近邊緣的時候,改變 i 或 j 的值,即可保證邊緣處的平滑處理。但是這樣改變高斯核函數,使用matlab不是很好解決這個問題,還是使用將待處理圖像邊緣向外部擴展bias的大小,與標準高斯核函數做卷積,再將超過原始圖像大小的部分剪切掉,目前來看在使用matlab中imfilter函數做卷積運算最合適且最簡單的處理方法了,先寫在這裏,此部分並不是論文中的核心部分,只是數值運算的技巧性編程方法。