计算机视觉之一:特征检测
計算機視覺之一:特征檢測
?
主要內容:
1、一個例子解釋為什么要進行特征檢測
2、圖像特征
3、點特征檢測:Harris角點、MOPS、SIFT
4、邊緣檢測:一階微分算子、二階微分算子、Canny算子
?
一、為什么要檢測特征?
舉一個例子:全景圖像拼接,給定兩張圖像,如何拼接成一張大圖?
步驟一:檢測特征點
步驟二:匹配特征點
步驟三:圖像適配
二、圖像的特征有哪些?
計算機視覺中常用的圖像特征包括:點、邊緣、直線、曲線等
三、點特征檢測
1、點特征的優勢:
點特征屬于局部特征,對遮擋有一定魯棒性;
通常圖像中可以檢測到成百上千的點特征,以量取勝;
點特征有較好的辨識性,不同物體上的點容易區分;
點特征提取通常速度很快;
2、什么是好的點特征?
考慮圖像上的一個小窗口,當窗口位置發生微小變化時,窗口圖像如何變化?
很明顯,從下圖可以看出,角點是一個好的點特征,因為它沿任意方向移動,窗口的灰度變化明顯,所以它可以作為一個特征來進行區分和辨別。
3、點特征的數學表達
?????
- 假設窗口W發生位置偏移(u,v);
- 比較偏移前后窗口中每一個像素點的灰度變化值;
- 使用誤差平方和定義誤差函數E(u,v)
?????????
?????? 不同位置點計算得到的E(u,v)如下圖所示,E(u,v)值隨著u、v變化的效果圖,可以看出,平坦區域(如天空)的灰度變化不大(下圖3),邊緣區域沿著邊緣方向的灰度變化.
也很小(下圖2),只有角點處的灰度變化稍微劇烈一點(下圖1)
誤差函數E(u,v):
將I(u,v)進行Taylor展開:
進一步展開,寫成:
H稱為自相關矩陣,和是H的2個特征值,E(u,v)的變化如下圖所示:
根據H的2個特征值大小對圖像點進行分類:
角點應該滿足的基本性質:最小特征值盡量大
角點響應:
比更有效的角點響應函數:
四、點特征檢測:Harris角點
-
算法步驟:
-
Harris角點改進:
Harris檢測子獲得的角點可能在圖像上分布不均勻(對比度高的區域角點多)
改進方法:Adaptive non-maximal suppression(ANMS),只保留半徑r內角點響應比其他點大10%的點作為角點。(Brown,Szeliski and Winder,2005)
-
Harris角點的性質:
1.?? 旋轉不變:
橢圓轉過一定角度但是其形狀保持不變(特征值保持不變)
2.?? 光照變化不變:
只使用了圖像導數,對于光照線性變化不變
3.?? 對比度變化部分不變:
4.?? 對于圖像尺度變化不具有不變性:
五、點特征檢測:MOPS
MOPS:Multi-scale oriented patches
尺度不變:在多層圖像金字塔上檢測角點,在同一層進行匹配
MOPS局限:待匹配的圖像需要尺度近似
六、點特征檢測:SIFT
Scale Invariant Feature Transform (SIFT)(Lowe,2004)
主要內容:
1.SIFT算法特點
2.SIFT算法流程
3.SIFT算法的具體步驟
4.SIFT點的特點
?
1、SIFT算法的特點:
- 不變性:
——對圖像的旋轉和尺度變化具有不變性;
——對三維視角變化和光照變化具有很強的適應性;
——局部特征,在遮擋和場景雜亂時仍保持不變性;
- 辨別力強:
——特征之間相互區分的能力強,有利于匹配;
- 數量較多:
——一般500*500的圖像能提取約2000個特征點。
2、SIFT算法的流程:
在高斯差分(Difference of Gaussian,DOG)尺度空間中提取極值點并進行優化,從而獲取特征點。
3、SIFT算法點檢測的具體步驟:
——構建尺度空間;
——構造高斯差分尺度空間;
——DoG尺度空間極值點檢測;
——特征點精確定位;
——去除不穩定點;
- 構建尺度空間:模擬圖像數據的多尺度特征
????????
其中是尺度可變高斯函數
尺度參數決定圖像的平滑程度,大尺度對應圖像的概貌特征,小尺度對應圖像的細節特征
- 構造高斯差分尺度空間(Difference of Gaussian,DOG)
為了在尺度空間中檢測穩定的關鍵點,構造高斯差分尺度空間
使用DOG的幾個理由:
? ? ? ? ? 1. ? 計算效率高:高斯卷積,減法;
?? 2.?? 高斯差分是對尺度歸一化LoG的一個很好的近似,而尺度歸一化的LoG空間具有真正的尺度不變性(Lindegerg 1994);
?? 3.? 實驗比較表明,從尺度歸一化LoG空間中提取的圖像特征的尺度穩定性最好,優于梯度、Hessian或Harris角點函數。
DoG尺度空間:
- DoG尺度空間極值點檢測:
一個點和它同尺度的8個相鄰點以及上下相鄰尺度對應的9×2個點共26個點比較,以確保在尺度空間和二維圖像空間都檢測到極值點。
一個點如果在DOG尺度空間的26個領域中是最大或最小值時,就認為該點是圖像在該尺度下的一個特征點。
一個特征點是在三維尺度空間的局部極值點。
- 特征點精確定位:
一個特征點是在三維尺度空間的局部極值點。但(x,y)為整數像素,為離散尺度,需要對DoG空間擬合進行特征點精確定位。
將的特征點處二階Taylor展開:
對上式求導,并令其為0,得到精確的位置(偏移量):
若中的三個變量任意一個偏移量大于0.5,說明精確極值點更接近于另一個特征點,則更換特征點重復上述精確定位流程。
- 去除不穩定特征點:
——去除對比度低的點:
計算極值點取值,若,則保留該特征點,否則丟棄。
——去除邊緣點:
DoG算子會產生較強的邊緣響應,利用Harris檢測子判斷。
若,則保留該特征點,否則丟棄。
4、SIFT點的特點:
- 視角和旋轉變化不變性:
- 光照不變性:
- 尺度不變性:
七、點特征檢測:小結
- 根據自相關矩陣特征值檢測角點(Harris); Harris角點具有旋轉、光照不變性,但不具有尺度不變性。
- 高斯差分尺度空間中檢測尺度不變特征點(SIFT); SIFT具有尺度不變性。
- Harris與SIFT的機理不同,因此可以聯合使用,互為補充。
八、邊緣檢測
主要內容:
1.圖像梯度
2.一階微分算子
3.二階微分算子
4.Canny算子
1、為什么要檢測邊緣?
一個例子:基于邊緣的圖像編輯
2、圖像邊緣的產生
物體的邊界、表面方向的改變、不同的顏色、光照明暗的變化
3、邊緣檢測——圖像梯度
圖像梯度的定義:??
水平梯度:
垂直梯度:
圖像梯度指向灰度變化最快的方向:
梯度幅值表示邊緣的強弱:
邊緣是一階倒數的極大值點:
4、邊緣檢測——一階微分算子
使用差分近似一階微分算子:
直接對圖像使用差分容易受到噪聲影響:
解決方法:先平滑,再微分
由,可將平滑和微分合為一個算子
二維高斯微分:
實際應用中:對二維高斯微分進行數值近似:Prewitt算子、Sobel算子
Prewitt算子:去噪+ 增強邊緣
Sobel算子:去噪+ 增強邊緣(給四鄰域更大的權重)
使用一階微分算子提取邊緣流程:
1. 使用Prewitt或Sobel算子對圖像進行卷積;
2. 將梯度幅值大于閾值的點標記為邊緣;
3. (optional)將邊緣細化為一個像素寬度。
5、邊緣檢測——二階微分算子
如果不使用細化,如何獲得單像素寬度邊緣?
邊緣是一階倒數的極大值點
邊緣是二階倒數的過零點
注意:僅僅等于0不夠,常數函數也為0,必須存在符號改變
對平滑圖像做二階微分:
二維高斯微分:
Laplacian of Gaussian (LoG)算子:首先用Gauss函數對圖像進行平滑,抑制噪聲,然后對經過平滑的圖像使用Laplacian算子
LoG算子等效于:Gaussian平滑+ Laplacian二階微分
LoG因其形狀,也稱為Mexican hat
LoG算子與一階微分算子的比較:
LoG算子的特點:
? 正確檢測到的邊緣:單像素寬度,定位準確;
? 形成許多封閉的輪廓,這是一個主要問題;
? 需要更加復雜的算法檢測過零點。
6、邊緣檢測——Canny算子
- Canny算子是最常用的邊緣檢測算子
- Canny算子是一階微分算子,但是一個優化的方案
-單像素寬度
-噪聲抑制
-邊緣增強
-邊緣定位
J.Canny, “A Computational Approach to Edge Detection”, IEEE Trans. on PAMI, 8(6),1986.
18482 cites - Canny算子基本流程
(1)高斯平滑濾波器卷積
(2)使用一階有限差分計算偏導數的兩個陣列
相當于與模板進行卷積運算:
當然也可以使用高斯微分算子(Prewitt或Sobel)直接與卷積計算和
(3)邊緣幅值和邊緣方位角
M代表梯度幅值的大小,在存在邊緣的圖像位置處,
M的值變大,圖像的邊緣特征被“增強”。
(4)梯度非極大值抑制
局部極值周圍存在相近數值的點:
非極大值抑制(NMS:Non-Maxima Suppression)
主要思想:
由梯度幅值圖像,僅保留極大值(嚴格地說,保留梯度方向上的極大值點)。
具體過程:
1.初始化;
2.對于每個點,在梯度方向和反梯度方向各找n個像素點。若不是這些點中的最大點,則將置零,否則保持不變。
- 在梯度方向的沿線上檢測該點是否為局部極大值;
- 簡化的情形,只使用4個方向:【0,45,90,135】;
- 得到的結果包含邊緣的寬度為1個像素;
(5)對NMS結果進行閾值二值化—雙閾值檢測
- 使用大的閾值,得到:
-少量的邊緣點
-許多空隙 - 使用小的閾值,得到:
-大量的邊緣點
-大量的錯誤檢測
兩個閾值T1,T2:T2 >> T1
由T1得到,低閾值邊緣圖:更大的誤檢測率
由T2得到,高閾值邊緣圖:更加可靠
(6)邊緣連接
1. 將中相連的邊緣點輸出為一幅邊緣圖像;
2. 對于中每條邊,從端點出發在中尋找其延長的部分,直至與中另外一條邊的端點相連,否則認為中沒有它延長的部分;
3. 將作為結果輸出。
Canny算子流程效果圖:
? Canny算子的優點
-參數較少
-計算效率
-得到的邊緣連續完整
? 參數的選擇
-Gauss濾波的尺度
-雙閾值的選擇(LOW=HIGH*0.4)
Canny算子的處理效果:
九、總結
? 根據自相關矩陣特征值檢測角點(Harris);
? 高斯差分尺度空間中檢測尺度不變特征點(SIFT);
? 一階高斯微分算子(Prewitt、Sobel)極值檢測邊緣;
? 二階高斯微分算子(LoG)過零點檢測邊緣;
? 非極大值抑制+雙閾值檢測邊緣(Canny)。
十、特征檢測參考文獻
? Harris, C. and Stephens, M. J. A combined corner and edge detector. In Alvey Vision Conference, 1988.
? Lowe, D. G. Distinctive image features from scale-invariant keypoints. International Journal of Computer Vision, 60(2):91–110, 2004.
? Canny, J. A computational approach to edge detection. IEEE Transactions onPAMI, 8(6):679–698, 1986.
? Tuytelaars, T. and Mikolajczyk, K. Local Invariant Feature Detectors: A Survey. Foundations and Trends in Computer Graphics and Vision, 3(3): 177–280, 2007.
總結
以上是生活随笔為你收集整理的计算机视觉之一:特征检测的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Express使用nodemailer完
- 下一篇: 大型网站技术架构文摘