1. 程式人生 > >SIFT中生成DOG尺度空間

SIFT中生成DOG尺度空間

目錄:

1、高斯尺度空間(GSS - Gauss Scale Space)

2、高斯差分(DOG - Difference of Gauss)

  2.1 生產DoG

  2.2 為什麼用DoG來檢測特徵點

3、GSS尺度選擇

  3.1 GSS中尺度值的產生

  3.2 高斯核性質及其在SIFT中的應用

1 GSS(GAUSS SCALE-SPACE)

  It has been shown by Koenderink (1984) and Lindeberg (1994) that under a variety of reasonable assumptions the only possible scale-space kernel is the Gaussian function. Therefore, the scale space of an image is defined as a function, L(x, y, σ), that is produced from the convolution of a variable-scale Gaussian, G(x, y, σ), with an input image, I(x, y):

  唯一能產生尺度空間的核為高斯核函式,所以我們將影象的尺度空間表示成一個函式L(x,y,σ),它是由一個變尺度的高斯函式G(x,y,σ)與影象I(x,y)卷積產生的。即

L(x, y, σ) = G(x, y, σ) ∗ I(x, y)

其中*代表卷積操作,G(x, y, σ) 為二維高斯核函式,表示為:

2 DOG(DIFFERENCE OF GAUSS)  

2.1 DOG生成

  SIFT演算法建議,在某一尺度上對特徵點的檢測,可以通過對兩個相鄰高斯尺度空間的影象相減,得到一個DoG (Difference of Gaussians)的響應值影象D(x,y,σ)。然後,仿照LoG方法,通過對響應值影象D(x,y,σ)進行非最大值抑制(區域性極大搜尋,正最大和負最大),在位置空間和尺度空間中定位特徵點。其中

D(x, y, σ) = (G(x, y, kσ) − G(x, y, σ)) ∗ I(x, y) = L(x, y, kσ) − L(x, y, σ)

式中,k為相鄰尺度空間倍數的常數。

2.2 為什麼用DOG來檢測特徵點

  In addition, the difference-of-Gaussian function provides a close approximation to the scale-normalized Laplacian of Gaussian, σ22G, as studied by Lindeberg (1994). Lindeberg showed that the normalization of the Laplacian with the factor σ2

 is required for true scale invariance. In detailed experimental comparisons, Mikolajczyk (2002) found that the maxima and minima of σ22G produce the most stable image features compared to a range of other possible image functions, such as the gradient, Hessian, or Harris corner function.

  Lindeberg證明用σ2標準化的高斯拉普拉斯(∇2G, LOG, Laplacian of Gauss)有著真正的尺度無關的特性,而Mikolajczyk發現,相比於其他一系列函式(比如梯度,Hessian,Harris角點函式等),用σ2標準化的高斯拉普拉斯(σ22G)有著更穩定的影象特徵,因此σ22G函式是我們理想的尋找特徵點的函式。而在此,我們利用DoG來近似σ22G。

  通過熱傳導方程也可以幫助我們理解DoG與σ22G之間的近似關係。由熱傳導方程可知(通常用t=σ2):

對上式進行有限差分運算得:

因此

DoG = G(x, y, kσ) − G(x, y, σ) ≈ (k − 1)σ22G

而常數項(k - 1)並不會影響極值的位置。所以DoG是σ22G的近似。

  對於使用DoG來近似σ22G,有如下優點:

  1. σ22G需要使用兩個方向的高斯二階微分卷積核,而DoG直接使用高斯卷積核,省去了對卷積核的生成的運算量。

  2. DoG保留了各個高斯尺度空間的影象,這樣,在生成某一空間尺度的特徵時,可以直接尺度空間影象,而無需重新再次生成該尺度的影象。

3 GSS尺度選擇

3.1 GSS中尺度值的產生

   由上一節知DoG近似於(k − 1)σ22G,對於常數k,即為相鄰高斯尺度空間的兩幅影象的尺度倍數,Lowe在文中提到,The approximation error will go to zero as k goes to 1, but in practice we have found that the approximation has almost no impact on the stability of extrema detection or localization for even significant differences in scale, such as k = √2. 文中提到k值大小對於極值的檢測沒有什麼影響。那麼k究竟取多大呢?  

  We choose to divide each octave of scale space (i.e., doubling of σ) into an integer number, s, of intervals, so k = 21/s. We must produce s + 3 images in the stack of blurred images for each octave, so that final extrema detection covers a complete octave. Adjacent image scales are subtracted to produce the difference-of-Gaussian images shown on the right. Once a complete octave has been processed, we resample the Gaussian image that has twice the initial value of σ (it will be 2 images from the top of the stack) by taking every second pixel in each row and column. The accuracy of sampling relative to σ is no different than for the start of the previous octave, while computation is greatly reduced.

問題1 為什麼用前一個octave中的倒數第三幅影象生成下一octave中的第一幅影象?

  我們通過上圖來解釋這段話,由 “must produce s + 3 images in the stack of blurred images for each octave” 可知每層octave產生了5幅影象,所以s = 2。 同一octave相鄰影象之間尺度為k倍的關係, k = 21/s =21/2,仔細閱讀上一段下劃線部分,當完成一層octave的處理後,對2倍σ的高斯影象(即用尺度大小為2σ的高斯函式模糊的影象)進行二分重取樣,得到下一個octave的第一幅影象。而這個用尺度大小為2σ的高斯函式模糊的影象總是處於該octave的倒數第三幅(由上往下數,第三幅。原文:it will be 2 images from the top of the stack,程式設計師都是從0開始數的咯),因為總共一層octave為s+3幅影象,第n層即為knσ0(其中 n = 0,1,...,s,s+1,s+2.  k = 21/s),當n等於s時,knσ0 = 2σ0,第s層即為倒數第三層。

問題2 每層octave為什麼生成s+3幅影象?

  在極值比較的過程中,每一組影象的首末兩層是無法進行極值比較的,為了滿足尺度變化的連續性,生成高斯金字塔每組有s+3層影象。DOG金字塔每組有s+2層影象。見上圖,為s = 3的情況,由上一問題可知,GSS中倒數第三幅尺度與下一octave第一幅的尺度相同,由圖中紅色矩形中的尺度對應為DoG中極值檢測的影象,將其各層紅色矩形框中的尺度依次排列,即可發現其為以k = 21/s(即k = 21/3)為等比的連續尺度。所以極值檢測是在一個連續變化的尺度空間中進行的。如下圖:

3.2 高斯核性質及其在SIFT中的應用

  對於二維高斯卷積,有如下性質:

  1. 距離高斯核中心3σ距離外的係數很小,相對於3σ內的係數值可以忽略不計,所以只用(6σ + 1)*(6σ + 1)的面積計算卷積即可。
  2. 線性可分,二維高斯核卷積(計算次數O(n2*M*N))效果等於水平和豎直方向的兩個一維高斯核(計算次數O(n*M*N) + O(n*M*N)))累積處理的效果。n*n為濾波器大小,M*N影象大小
  3. 對一幅影象進行多次連續高斯模糊的效果與一次更大的高斯模糊可以產生同樣的效果,大的高斯模糊的半徑是所用多個高斯模糊半徑平方和的平方根。例如,使用半徑分別為 6 和 8 的兩次高斯模糊變換得到的效果等同於一次半徑為 10 (勾股定理)的高斯模糊效果。根據這個關係,使用多個連續較小的高斯模糊處理不會比單個高斯較大處理時間要少。

  其中,性質3有助我們更快速的生成GSS。雖然兩個小半徑處理時間並不會比單個高斯較大半徑處理的時間少,但相對於原影象,我們已經有一個小半徑模糊過的影象,即可用另一小半徑在現成的影象上進行模糊得到較大半徑的模糊效果。例如尺度為σ0的影象已經存在,我們要得到尺度為kσ0的影象,即可只使用尺度為[(kσ0)2-(σ0)2]1/2的核在尺度為σ0的影象上進行模糊,即可得到尺度為kσ0模糊的影象,同理可得到高斯尺度空間各層的影象,使得高斯尺度空間生產得更快。

參考資料: