尺度空間與高斯差分算子DoG

      在上一篇中我講述了圖像金字塔(高斯金字塔和拉普拉斯金字塔)。這了篇中介紹在SIFT檢測中用到的DoG高斯差分算子。
     此處的高斯金字塔的形成過程上前文的高斯金字塔稍有不同。
 
     在SIFT關鍵角點檢測中,在不同的尺度空間不能使用相同的窗口檢測SIFT極值點。對小的角點要用小的窗口,對大的角點只能使用大的窗口。爲了達 到這個目的我們要使用尺度空間濾波器。
 
尺度空間濾波器:尺度空間濾波器可以使用一些列具有 不同方差 σ 的高斯卷積核構成。使用具有不同方差值 σ 的高斯拉普拉斯算子 (LoG)對圖像進行卷積,LoG 由於具有不同的方差值 σ 所以可以用來檢測不 同大小的斑點(當 LoG 的方差 σ 與斑點直徑相等時能夠使斑點完全平滑。
 
     簡 單來說,方差 σ 就是一個尺度變換因子。例如,使用一個小方差 σ 的高斯 卷積核是可以很好的檢測出小的角點,而使用大方差 σ 的高斯卷積核時可以很 好的檢測出大的角點。所以我們可以在尺度空間和二維平面中檢測到局部最大 值,如(xyσ, 這表示在 σ 尺度中(xy)點可能是一個關鍵點。

  高斯金字塔的詳細構建過程

 

1) 先將原圖像擴大一倍之後作爲高斯金字塔的第1組第1層,將第1組第1層圖像經高斯卷積(其實就是高斯平滑或稱高斯濾波)之後作爲第1組金字塔的第2層,高斯卷積函數爲:

對於參數σ,在Sift算子中取的是固定值1.6。

2)將σ乘以一個比例係數k,等到一個新的平滑因子σ=k*σ,用它來平滑第1組第2層圖像,結果圖像作爲第3層。

3) 如此這般重複,最後得到L層圖像,在同一組中,每一層圖像的尺寸都是一樣的,只是平滑係數不一樣。它們對應的平滑係數分別爲:0,σ,kσ,k^2σ,k^3σ……k^(L-2)σ。

4) 將第1組倒數第三層圖像作比例因子爲2的降採樣(如只取奇數行或奇數列),得到的圖像作爲第2組的第1層,然後對第2組的第1層圖像做平滑因子爲σ的高斯平滑,得到第2組的第2層,就像步驟2中一樣,如此得到第2組的L層圖像,同組內它們的尺寸是一樣的,對應的平滑係數分別爲:0,σ,kσ,k^2σ,k^3σ……k^(L-2)σ。但是在尺寸方面第2組是第1組圖像的一半。

這樣反覆執行,就可以得到一共O組,每組L層,共計O*L個圖像,這些圖像一起就構成了高斯金字塔。

注:高斯方差σ的大小與窗口的大小存在一個倍數關係:窗口大小等於 6 倍方差加 1,所以方差的大小也決定了窗口大小。

       LoG 的計算量非常大,所以 SIFT 算法使用高斯差分算子(DoG)來對 LoG 做近似。DoG 就是這組具有不同分辨率的圖像金字塔中相鄰的兩層之間的差值。
 
附1:LoG算子
附1:DoG算子
  
——————————————————————————————————————————————
 
   在 DoG 搞定之後,就可以在不同的尺度空間和 2D 平面中搜索局部最大 值了。對於圖像中的一個像素點而言,它需要與自己周圍的 8 鄰域,以及尺度 空間中上下兩層中的相鄰的 18(2x9)個點相比(共27個點相比)。如果是局部最大值,它就可能是一個關鍵點。基本上來說關鍵點是圖像在相應尺度空間中的最好代表。如 下圖所示:
 
 
 
           在同一組中,每一層圖像的尺寸都是一樣的,只是平滑係數不一樣。它們對應的平滑係數分別爲:0,σ,kσ,k^2σ,k^3σ……k^(L-2)σ。
        SIFT算法的作者在文章中給出了 SIFT 參數的經驗值:octaves=4(通過降低採樣從而減小圖像尺寸,構成尺寸減小的圖像金字塔4 層),尺度空間 爲 5,也就是每個尺寸使用 5 個不同方差的高斯核進行卷積,初始方差是 1.6, k 等於 2 等。
 
 
 
 
 
 
 
 
 
發佈了80 篇原創文章 · 獲贊 142 · 訪問量 51萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章