SURF 描述子
SURF,即加速穩健特徵(Speeded-Up Robust Features),由 Herbert Bay 與同事於 2006 年提出,旨在以 SIFT 的一小部分計算成本,提供類似 SIFT 的穩健性。它的核心技巧是把 SIFT 所仰賴、代價高昂的高斯導數,換成粗糙的矩形盒狀濾波器,再用積分影像以常數時間求出那些盒狀濾波器的值。結果是一個保留了 SIFT 大部分尺度與旋轉不變性、卻快上數倍的偵測器與描述子,這在 GPU 還沒讓密集計算變便宜之前極為重要。
在偵測方面,SURF 近似 Hessian 矩陣的行列式,這是一個具斑點選擇性的運算子。Hessian 所需的二階高斯導數被盒狀濾波器近似(即所謂的 Fast-Hessian),而由於任意大小的盒狀濾波器在積分影像中都只花同樣的四次查找,SURF 可以靠放大濾波器、而非像 SIFT 那樣反覆模糊與下採樣影像,來廉價地建構尺度空間。關鍵點是這個近似 Hessian 行列式在空間與尺度上的極值,並被精修到次像素與次尺度精度。
在描述子方面,SURF 透過在一個圓形鄰域內把水平與垂直方向的 Haar 小波反應(它們本身就是盒狀濾波器)相加、找出主方向,來指定方向。接著它在關鍵點周圍放置一個定向的方形區域,分成 4×4 的子區域網格,並在每個子區域記錄四個總和:水平 Haar 反應之和、垂直 Haar 反應之和,以及它們絕對值之和。十六個子區域、每個四個值,就給出一個 64 維描述子,是 SIFT 長度的一半,這加快了比對與儲存。也存在一個延伸的 128 維變體,以及一個直立變體(U-SURF,在不需要旋轉不變性時跳過方向指定)。
SURF 比 SIFT 快,在中等程度的變換下準確度往往相當,它在 2000 年代是即時比對、物件辨識與配準的熱門預設選擇。它的限制是盒狀濾波器近似比真正的高斯導數略不準確,尤其在大視角或大平面內旋轉下;而且它和 SIFT 一樣受專利保護,不屬於免費的 OpenCV(它在 non-free 的 contrib 模組中)。在現代實務中,它在講求速度的工作上大致被 ORB 取代、在講求準確度的工作上被學習式特徵取代,但它仍是一座重要的概念橋樑,展示積分影像如何把一個昂貴的多尺度運算子變成快速運算子。
SURF 的速度完全仰賴積分影像:每個盒狀濾波器、在每個尺度,無論濾波器多大都只花四次陣列查找。這就是為什麼 SURF 是放大濾波器而非縮小影像(與 SIFT 的金字塔相反),也是為什麼理解積分影像是理解 SURF 的前提。