SIFT特徵詳細描述 上

一、介紹

特徵的檢測和匹配在許多計算機視覺應用中是一個重要的組成部分,例如無縫拼接,三維重建等。其中興趣點特徵是很重要的一類特徵,而目前應用最廣泛的興趣點特徵檢測方法就是SIFT檢測算法,該檢測算法所得到的特徵點不僅在位置上能夠穩定識別,而且具有尺度不變性和旋轉不變性。由於各大論壇以及該論文作者都只是給出matlab的實現算法,並未給出C++的版本,而且由於在SIFT的實現過程中有很多參數設置和細節上的優化處理,實現起來比較複雜。該程序使用主流的開源的OpenCV庫函數給出了C++版本的SIFT特徵檢測算法,並結合樣例,詳細地描述了實現過程中的大部分細節。

二、算法描述

SIFT特徵不只具有尺度不變性,即使改變旋轉角度,圖像亮度或拍攝視角,仍然能夠得到好的檢測效果。由於SIFT算法有很多操作,會令人不解,這裏將整個算法分爲多個部分:

1. 構建尺度空間

這是一個初始化操作,通過生成尺度空間來創建原始圖像的多層表示以保證尺度不變性。

2. LoG近似

使用Laplacian of Gaussian能夠很好地找到找到圖像中的興趣點,但是需要大量的計算量,所以使用創建更容易的表示來近似它。

3. 找到關鍵點

利用很快的近似,我們可以找到特徵點,它們是Difference of Gaussian圖像的極大極小值。

4. 除去不好的特徵點

邊界和低亮度區域是不好的特徵點,除去它們以使得算法有效和魯棒,在這裏使用近似Harris Corner檢測器。

5. 給特徵點賦值一個方向

爲每個特徵點計算一個方向,依照這個方向做進一步的計算,這個操作有效地取消了方向的影響,使得算法具有旋轉不變性。

6. 生成SIFT特徵

最後,利用位置上的尺度和旋轉不變性,能夠生成一個表示,它能幫助唯一地識別特徵。通過這個表示,我們可以很容易識別尋找的特徵。

2.1創建尺度空間

真實世界的物體只在某一尺度下是有意義的。靠近的時候,我們能夠看清楚的東西,可能遠離的時候就不見了;帶上眼睛能夠看清楚的東西,可能脫下眼睛就看不見了。物體這種多尺度的性質是很常見的,並且尺度空間就是將這個性質用在數字圖像中。

尺度空間

你是想看樹葉還是整棵書?如果是樹,就要有目的擺脫圖像中的細節(像樹葉,小枝等),當擺脫了這些細節,還要避免引入新的錯誤的細節。唯一的方法就是使用高斯模糊(在幾個合理的假設下,這是經過數學證明的)。

圖2.1 圖像的尺度空間

 
  clip_image002

所以爲了創建一個尺度空間,我們可以利用原始的圖像來逐漸生成模糊後的圖像,下圖顯示了圖像是如何擺脫細節的,如貓的鬍鬚。

在SIFT中的尺度空間

       
  clip_image005   clip_image006
 
 
   

SIFT需要多組(octave)尺度空間,用第一幅圖像逐漸生成一組模糊後的圖像,然後將原始圖像的尺寸縮小一半,再逐漸生成下一組模糊後的圖像,以此類推。

相同大小的圖像形成一組尺度空間,上面有四組尺度空間,每組有5張圖像,且這些圖像通過增加尺度(模糊量)逐漸形成。

在SIFT算法的第一階段,我們生成了原始圖像的多組尺度空間,每個組的圖像大小是前者的一半。在一組尺度空間中,圖像使用高斯模糊操作被逐漸模糊。

實現細節

1. 組數和尺度數依賴於原始圖像的大小,SIFT算法發明者建議將組數設爲4,尺度數設爲5是比較理想的。在實現中我們採用作者的建議。

2. 第一組的圖像並不是直接使用原始圖像,而是使用大小放大兩倍並稍微模糊後的圖像,這樣可以多產生4倍的特徵點。

3. 數學上,模糊指的是圖像與高斯核的卷積,卷積後的圖像是一個模糊的圖像。

4.

 
  clip_image007

每個圖像的模糊量是很重要的,假設一幅圖像的模糊量是σ,那麼下一幅圖像的模糊量是k*σ,這裏的k是一個常量。
 
 

圖2.3 四組尺度空間中每幅圖像分別對應的尺度量

這是我們程序中所使用的σ圖表,在同一組中,下一幅圖像比前一幅圖像在σ上相差sqrt(2),即clip_image009

2.2 Laplacian of Gaussian的近似

在上一步,我們通過逐漸模糊圖像,創建了圖像的尺度空間。現在使用這些模糊的圖像來生成另一類圖像組Differece of Gaussain(DoG),這些DoG圖像很適合在圖像中找感興趣的特徵點。

Laplacian of Gaussian

Laplacian of Gaussian操作按下面進行,取一張圖像將其模糊一點,並且計算它的二階導數,這樣可以定位圖像中的邊界和直角。這些邊界和直角對於找到特徵點是很有幫助的。但是二階導數對噪音是非常敏感的,通過使用模糊操作平滑噪音,可以穩定了二階導數。這個問題計算所有二階導數需要大量的計算,所以使用近似操作。

圖2.4 Difference of Gaussian操作

clip_image011

Difference of Gaussian圖像近似等於Laplacian of Gaussian,並且我們用一個簡單的減法來替換計算量大的Laplacian操作,這些DoG圖像是尺度不變的。

近似的好處

只是對圖像進行Laplacain操作不夠好,得到的圖像還不是尺度不變的,因爲它們還依賴於模糊量σ。高斯表達式的分母中有σ2項,它就是尺度,只有除去它,才能得到真正的尺度不變性。所以如果將Laplacian of Gaussain表示爲clip_image013,那麼尺度不變的Laplacian of Gaussian就是clip_image015,但是所有這些都可以通過Difference of Gaussian操作來表示,並且通過證明這樣的尺度不變操作可以產生更多可跟蹤的特徵點。

圖2.5 用圖像的尺度空間創建DoG圖像

clip_image016

實現細節

這裏用一系列圖像來說明這些difference of Gaussian是如何實現的,如圖2.5所示。

在這一組圖像中,對每兩幅尺度相鄰的圖像做減法操作,就可以生成相應的DoG圖像。每組圖像中兩個連續圖像被選擇,並用一幅圖像減去另一幅圖像,然後下一對圖像也被選擇,這個過程重複進行,並用於每一組圖像。由於尺度數設爲5每組圖像可以得到4幅DoG圖像。這個DoG圖像是尺度不變的Laplacian of Gaussian,它對於檢測特徵點是很有用的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章