第二章 文獻探討
2.1 特徵點取得方式
在電腦視覺以及影像處理的領域中,對於特徵點偵測已有相當多且成熟的
方法被提出,而較常見的方法為找出「角」或「區塊」的特徵,再根據這些特
徵的位置來計算特徵描述單元。近年來著名的方法有:(1)尺度不變特徵轉換
(Scale-invariant feature transform, SIFT)[1](2)加速穩健特徵(Speeded
up robust features, SURF)[2] ( 3 ) Feature from Accelerated Segment
Test(FAST)[3]。上述提及的三種方法,SIFT 和 SURF 具有尺度不變性,而 FAST
則是三種方法中,速度最快的一種方法。
2.1.1 尺度不變特徵轉換(SIFT)
SIFT 方法是近年來最著名的特徵點擷取方法之一,SIFT 的核心想法是模擬
人眼視網膜在辨識不同影像的作法,因為特徵點會出現在物體的邊緣處,所以
其取特徵點的概念流程是使用近似於高斯差分(Difference of Gaussian)來計
4
算得到可能為邊緣的特徵點,再對影像不同尺寸做高斯模糊後所得的結果相減,
藉此取代原本計算量繁複的高斯拉普拉斯轉換(Laplacian of Gaussian)並取得
特徵點的位置。再利用類似 Harris 角點偵測的方式,來找出特徵點的方向。
由於 SIFT 為了提升特徵點在對光變化和角度變化的容忍度,採用生物對於
梯度變化可視為是某種頻率和方向的表示的概念,所以 SIFT 的特徵描述是透過
特徵點周圍區域梯度值的統計結果來描述一個由 128 維度所構成的描述向量。
如圖 1 左半部所示,特徵描述的方法是先以特徵點為中心,擴張出四個 8*8 的
區域並計算其梯度。將每個區域分別劃分成四個 4*4 的小區域並分別計算八個
方向的梯度方向直方圖並結合每個梯度方向的累計值形成關鍵點描述單元
(Keypoint Descriptor),如圖 2 所示。將所有結果結合即可構成一個 128 維
度(4*4*8)的特徵點的描述向量。
圖 1 SIFT 的 128 維度特徵描述點示意圖[1]。
5
圖 2 SIFT 特徵點中 1/4 的特徵點梯度方向和尺度,右圖為累計至 8 個主方向的結果[1]。
2.1.2 加速穩健特徵(SURF)
SURF 是由 Bay 的研究[2]所提出之方法。相較於 SIFT 使用高斯差分,SURF
則是使用海森矩陣行列式(Determinant of Hessian)來計算特徵點所在的位置,
並使用 Box filters 逼近海森矩陣行列式。SURF 會預先建立數個不同尺度的核
心濾波器,透過這樣的做法可以相對避免掉 SIFT 中對每張圖都做縮放和建立特
徵以及不同尺度相減所花費的大量計算。關於 SURF 的詳細做法,本論文會在第
三章再加以說明。
2.1.3 FAST 和其相關的改良方法
FAST 在選取特徵點上是一種比 SIFT 和 SURF 更快可以找出特徵點的方法,
但是 FAST 不同於 SIFT 和 SURF 的是,FAST 並不具有尺度的不變性。
6
FAST 的做法是首先對每一點的特定範圍內(通常為 9 個點,FAST-9)的像素
灰度差異是否大於閥值(Threshold)來決定該點是否為特徵候選點。接著利用角
點偵測(Corner Detection)判斷具有角度變換的區域,並決定這些區域的狀態
為較暗、相似、較亮(-1,0,1)三種中的其中一種。最後利用非極大值抑制
(Non-Maximum Suppression),將不是最大值的點移除,藉此得到正確的特徵點。
做為一個快速的特徵點取得方法,也有許多以 FAST 為基礎的方法,例如
AGAST[4]、FASTER[5]、BRISK[6]、BRIEF[7]。
BRIEF 的做法是先對已知的特徵點取出一個大小固定的區域且對該區域影
像作高斯模糊,再利用 BRIEF 提出的τ測試,隨機選取不同位置的亮度二元值,
可得到一個預設大小為 64 位元組的二元字串(brief-64)。因為是二元字串,在
配對時是採用漢明距離(Hamming distance)來作相似度的分析,但是 BRIEF 的
特徵描述單元並沒有提供尺度和角度的資訊。
ORB(Oriented BRIEF)[8]則是為了使 BRIEF 具有旋轉不變性所提出來的改
良方法。同時對於 BRIEF 在無法處理尺度變化的問題,也提出了利用尺度金字
塔來產生數個不同尺度的 FAST 特徵點,但由於 ORB 使用的 Harris 角點測量
(Harris corner measure)[9]並不具有尺度不變性,所以必須每個不同尺度都
計算一次。最後用 Intensity Centroid 對每個特徵點計算角點的方向來計算出
7
特徵點方向描述,並且利用機器學習的方法(PCA)將變異數相對小的特徵組成成
分 排除 後,得到 特徵點描 述單 元 rBRIEF。另外 ORB 也使用 了考慮方向的
oFAST(Oriented FAST)和利用積分圖(Integral Image)來改良二值化τ測試的
抗噪能力。
BRISK(Binary Robust Invariant Scalable Keypoints)[6] 是 一 個 採 用
AGAST(Adaptive and generic corner detection based on the accelerated
segment test)[4]的 FAST 改良方法,BRISK 透過建立二元搜尋樹和另外設置三
個與記憶體存取時間相關的參數,並使用深度優先搜尋法(Depth First Search)
和動態規劃(Dynamic Programming)所建立的最佳化決策樹做為加速的方法,進
一步的改善了 FAST 的速度。BRISK 在取特徵點時,使用尺度空間特徵點偵測
(Scale-Space Keypoint Detection)計算特徵點讓 BRISK 的特徵點具有尺度不
變性。BRISK 的特徵點描述單元是可參數化的,方法是根據 DAISY[10]的影像濃
度特徵描述來設計的。首先對於每個尺度特徵點都取出 60 個固定位置的參考點
並且每個參考點皆對特徵點作以距離為權重的高斯模糊,再計算參考點配對的
局部梯度值得到特徵方向。特徵描述部分則是結合了類 BRIEF 和類 ORB 但可更
快得到結果的方法,方法是使用加入旋轉變量α(類 ORB)的τ測試(類 BRIEF)來
取得一個 512 位元長度的描述單元,因為是採用固定的參考點所以在作高斯模
糊時而有失真的問題產生,加上參考點數少於 BRIEF 也使得計算速度可以得到
8
提升。
2.1.4 特徵點匹配
了解特徵點的取得過程和其意義後,經由研究發現由於每種特徵點描述單
元的資料形態都不相同,要精準且快速的找到匹配的特徵點就必須要先定義何
謂有效的相似度。舉例來說,SIFT 是 128 維度的浮點數構成的描述向量,通常
都會採用歐式距離(Euclidean distance)來計算特徵點的相似度,特徵點描述
單元是使用二元值的 ORB 和 BRISK 則會使用漢明距離來計算特徵點的相似度。
而在擷取書本封面影像的特徵點時往往可取得的特徵點數量會相當多,所以使
用 FLANN Base Matcher 會是較為有效的做法。另外考慮到 FLANN 在進行配對時,
往往會有許多不是配對的特徵點也因 FLANN 的演算法而被配對而影響準確率,
所以為了提升匹配的品質和準確度[24],可以使用 RANSAC[11][26]的方法來有
效的刪除離群值。