Surf特征提取分析
讀“H.Bay, T. Tuytelaars, L. V. Gool, SURF:Speed Up Robust Features[J],ECCV,2006”筆記
SURF:Speed Up Robust Features,加速魯棒特征。
我覺得SURF是SIFT特征的一種近似計算,在相似性能甚至更好性能的同時提高了算法的速度。這些近似體現在
在尺度空間中,使用box filtes與原圖像卷積,而不是使用DoG算子
確定關鍵點方向時,Surf是利用不同方向bin中的haar小波響應的最大值最為方向,而Sift是統計周圍區域像素點的方向直方圖,找出最大方向bin作為主方向,而且還可以有多個方向。
特征描述子,Surf在關鍵點周圍取
區域分成44塊小區域,在每個小區域計算采樣點的haar響應,統計對應的四個特征
,共64維特征,而Sift在周圍1616的區域划分成4*4的子區域,每一個子區域提取長度為8的方向直方圖特征,排列起來形成128維特征向量。
為什么速度會提升呢?這里要明白一點,DoG算子分開兩步其實是先高斯平滑再差分。
使用box filters相對於高斯濾波,再輔助以積分圖速度肯定提升不少。
Hessian矩陣的計算一般而言還是挺麻煩的,但這里可以使用積分圖計算,無論尺度是多少都可以使用幾個數的加減完成,速度很快。
確定關鍵點方向時使用haar特征同樣可以利用積分圖,簡單快速。
特征描述子使用64維取代128維特征降低了后續處理的數據規模
接下來就來一步步分析surf特征吧
Fast-Hessian Detector 尺度空間生成
這一步其實相當於LoG算子。
在LoG中首先使用高斯平滑,然后對平滑后的圖形進行Laplace獲得二階梯度特征。
而Fast-Hessian Detector則是首先使用box filter濾波,然后使用Hessian矩陣表征二階梯度。
高斯二階梯度到近似的二階梯度算子如下圖

從左到右分別表示在y方向LoG算子(),xy方向的LoG算子
,y方向近似的LoG算子
,xy方向近似的LoG算子
Hessian矩陣能夠刻畫二維曲面上點的不同方向變化劇烈程度,這里可以參見角點檢測,只有當Hessian矩陣的兩個特征值均遠大於0時才認為該點是角點。行列式是特征值的乘積。
Hessian矩陣的計算

那么使用上圖的類似算子,就可以表示成

但是近似畢竟是近似,這里近似一點,那里近似一點,累積的方差就大了,所以在計算hessian矩陣行列式時進行了修正

1.2是LoG的尺度,9是box filter的邊長,自己可以算一算
於是

其中D是近似的Hessian矩陣。
這個式子是怎么來的呢?很難理解對不對,我們來推一推,目的是要
設,於是

是不是發現問題了,在上面算0.9時我們替換成
時仍然成立,所以就得到了計算行列式的近似式。
論文中指出surf初始size是,這么大區域平滑的效果等同於尺度為
的高斯平滑。
同樣的surf中也會建塔,但是和sift不同的是,sift在尺度增大的同時,不斷對圖像下采樣,而surf在建塔的時候每層圖像大小不變,只是對模板的尺度不斷增大,相當於一個上采樣的過程。

論文中第一塔中size分別為,而以后每塔中size邊長差距逐塔翻倍。
如下圖

size大小和對應LoG尺度可以如下換算
尺度空間生成之后就開始進行定位關鍵點了。
關鍵點定位
這里和LoG,DoG相同,都是在生成尺度空間后,找在三維上找極值點。

這里和DoG不同的是不用剔除邊緣導致的極值點了,因為Hessian矩陣的行列式就已經考慮到邊緣的問題了,而DoG計算只是把不同方向變化趨勢給出來,后續還需要使用Hessian矩陣的特征值剔除邊緣產生的影響。
在定位關鍵點時,要使用3維線性插值的方法得到亞像素級的坐標位置。
Scale space interpolation is especially important in our case, as the difference in scale between the first layers of every octave is relatively large.
這樣關鍵點也找到了,下一步為了旋轉不變性就該確定關鍵點方向了
關鍵點方向
不像sift中依靠梯度方向直方圖確定主方向,Surf首先將周圍`!$6s$的圓形區域分成6個扇形區間,s是對應的尺度,和size的換算方法,上文給出了。然后在每個扇形區域使用提取x方向和y方向的Haar小波特征(Haar小波的邊長為4s),將該區域每個樣本點這兩個響應的高斯加權和作為該區域的方向,最后掃面了整個圓形區域,選擇最大方向就是該關鍵點的方向。


ok,接下來就該描述關鍵點了
surf特征描述子
和sift類似,這時候為了保持旋轉不變性,當然要將關鍵點的方向旋轉一致之后再統計特征。
統計特征時,再該關鍵點周圍選取的區域,划分成
的子區域,在每個子區域內使用x方向,y方向的的haar小波特征算子提取haar小波特征,然后使用提取結果統計
四個值作為該子區域的特征,那么一個關鍵點就可以使用16個子區域的特征聯合表示,即64維向量。

部分實驗結果
關鍵點檢測

匹配結果圖,這兩幅圖中相似的要素其實蠻多的,這使匹配的效果並不理想

圖像的配准


參考文獻
1. tornadomeet,特征點檢測學習_2(surf算法),博客園,2012,8
2. Speeded up robust features(wiki百科)