Pore-SIFT原理
PSIFT(Pore-Scale-invariant feature transform)是一種檢測局部特征的算法敬锐,該算法通過求一幅圖中的特征點(Interest points,or corner points)及其有關(guān)Scale 和 Orientation 的描述子得到特征并進行圖像特征點匹配,以得出圖像匹配的效果呆瞻。
構(gòu)建尺度空間
影像在不同的尺度下用高斯濾波器(Gaussian filters)進行卷積(convolved)台夺,然后利用連續(xù)高斯模糊化影像差異來找出關(guān)鍵點。關(guān)鍵點是根據(jù)不同尺度下的高斯差(Difference of Gaussians,DoG)的最大值(不同于SIFT痴脾,這里Pore-SIFT只尋找高斯差最大的關(guān)鍵點)颤介。 由上式可知DoG影像是原始影像與不同尺度倍率的高斯模糊后之差值。Pore-SIFT算法為了求得在不同尺度倍率之下DoG影像的極大值赞赖,先將原始影像與不同尺度倍率的高斯模糊進行卷積滚朵,這些經(jīng)高斯模糊處理后的影像依其尺度倍率以2倍為一單位分組,并且通常為一個選定后的定值薯定,因此在每一組內(nèi)經(jīng)高斯模糊處理后的影像數(shù)量相同始绍,此時將同一組相鄰的經(jīng)高斯模糊處理后的影像兩兩相減可得其DoG影像Figure 1。
DOG尺度空間極值檢測
在尺度空間中话侄,每一個采樣點要和333的鄰域內(nèi)與其他點進行比較亏推,若該點為鄰域內(nèi)的最大值(如Figure 2所示),則將該點作為候選點年堆。由于時在多尺度下尋找的候選點吞杭,該候選點為該鄰域內(nèi)的極大值點,利用該點所提取出的特征能具有非常好的尺度不變特征变丧,對于圖像小范圍的縮放與模糊具有良好的魯棒性芽狗。
邊緣響應(yīng)的去除
在不同尺寸空間下可能找出過多的關(guān)鍵點,有些關(guān)鍵點可能相對不易辨識或易受噪聲干擾痒蓬。Pore-SIFT算法的下一步將會借由關(guān)鍵點附近像素的資訊童擎、關(guān)鍵點的尺寸、關(guān)鍵點的主曲率來定位各個關(guān)鍵點攻晒,借此消除位于邊上或是易受噪聲干擾的關(guān)鍵點顾复。一個定義不好的高斯差分算子的極值在橫跨邊緣的地方有較大的主曲率,而在垂直邊緣的方向有較小的主曲率鲁捏。主曲率通過一個2×2 的Hessian矩陣H求出:
曲率滿足要求的點應(yīng)滿足如下要求芯砸,其中r是給定的閾值,一般取r=10:
經(jīng)過計算后剩余下的點便是下一步的候選點。
計算關(guān)鍵點主方向并旋轉(zhuǎn)
在方位定向中假丧,關(guān)鍵點以相鄰相素的梯度方向分布作為指定方向參數(shù)双揪,使關(guān)鍵點描述子能以根據(jù)此方向來表示并具備旋轉(zhuǎn)不變性。 經(jīng)高斯模糊處理后的影像 包帚,在尺寸下的梯度量與方向可由相鄰之像素值計算:
計算每個關(guān)鍵點與其相鄰像素之梯度的量值與方向后渔期,為其建立一個以10度為單位36條的直方圖。每個相鄰像素依據(jù)其量值大小與方向加入關(guān)鍵點的直方圖中婴噩,最后直方圖中最大值的方向即為此關(guān)鍵點的方向, 將圖像進行正交旋轉(zhuǎn)擎场,旋轉(zhuǎn)至主方向 (Figure 3),確保每個PSIFT特征旋轉(zhuǎn)不變性几莽。
關(guān)鍵點描述子
找到關(guān)鍵點的位置迅办、尺寸并賦予關(guān)鍵點方向后,將可確保其移動章蚣、縮放站欺、旋轉(zhuǎn)的不變性。此外還需要建立一個描述子向量纤垂,使其在不同光線與視角下皆能保持其不變性矾策。 首先每個88的子區(qū)域內(nèi)建立一個8方向的直方圖,在關(guān)鍵點周圍2828的區(qū)域中一共64個子區(qū)域(子區(qū)域的大小為44)峭沦,計算每個像素的梯度量值大小與方向后加入此子區(qū)域的直方圖中(8個方向)的梯度大小(如圖Figure 4所示)贾虽,共可產(chǎn)生648=512維,并將其歸一化吼鱼,該向量即為關(guān)鍵點的描述子蓬豁。將每個點提取出的512維特征向量組成一個特征矩陣, 至此形成一張完整圖像的Pore-SIFT特征描述符矩陣(大小k*512,k為特征點個數(shù) )
Pore-SIFT特征匹配
得到不同圖像的Pore-SIFT特征后菇肃,利用特征便可比較兩張圖像的相似之處,在此使用傳統(tǒng)的計算特征歐式距離的方法地粪,生成的Image_A、Image_B兩幅圖的描述子琐谤,(分別是k1512維和k2512維)蟆技,就將兩圖中各個scale(所有scale)的描述子進行匹配,匹配上512維即可表示兩個特征點匹配上了斗忌。實際操作中质礼,為了減少誤差,增強魯棒性织阳,取圖像Image_A中的某個關(guān)鍵點几苍,并找出其與圖像Image_B中歐式距離最近的前兩個關(guān)鍵點,在這兩個關(guān)鍵點中陈哑,如果最近的距離除以次近的距離小于某個比例閾值,則接受這一對匹配點。降低這個比例閾值惊窖,PSIFT匹配點數(shù)目會減少刽宪,但更加穩(wěn)定。閾值的取值范圍在0.4~0.8之間都是可以接受的界酒,根據(jù)不同的需求有不同的取值圣拄。
用于人臉匹配有很好的效果。
個人實現(xiàn)的PSIFT的Python代碼:https://github.com/BlackJocker1995/PSIFT_python