計算機視覺之一:特征檢測


計算機視覺之一:特征檢測

 

主要內容:

1、一個例子解釋為什么要進行特征檢測

2、圖像特征

3、點特征檢測:Harris角點、MOPS、SIFT

4、邊緣檢測:一階微分算子、二階微分算子、Canny算子

 

一、為什么要檢測特征?

舉一個例子:全景圖像拼接,給定兩張圖像,如何拼接成一張大圖?

image_thumb2

步驟一:檢測特征點

image_thumb5

步驟二:匹配特征點

image_thumb91

步驟三:圖像適配

image_thumb13

二、圖像的特征有哪些?

計算機視覺中常用的圖像特征包括:點、邊緣、直線、曲線等

image22_thumb1

三、點特征檢測

1、點特征的優勢:

點特征屬於局部特征,對遮擋有一定魯棒性;

通常圖像中可以檢測到成百上千的點特征,以量取勝;

點特征有較好的辨識性,不同物體上的點容易區分;

點特征提取通常速度很快;

2、什么是好的點特征?

image30_thumb1

考慮圖像上的一個小窗口,當窗口位置發生微小變化時,窗口圖像如何變化?

很明顯,從下圖可以看出,角點是一個好的點特征,因為它沿任意方向移動,窗口的灰度變化明顯,所以它可以作為一個特征來進行區分和辨別

image331_thumb

3、點特征的數學表達

      image391_thumb

  • 假設窗口W發生位置偏移(u,v);
  • 比較偏移前后窗口中每一個像素點的灰度變化值;
  • 使用誤差平方和定義誤差函數E(u,v)

          image36_thumb

       不同位置點計算得到的E(u,v)如下圖所示,E(u,v)值隨着u、v變化的效果圖,可以看出,平坦區域(如天空)的灰度變化不大(下圖3),邊緣區域沿着邊緣方向的灰度變化.

也很小(下圖2),只有角點處的灰度變化稍微劇烈一點(下圖1)

image42_thumb

  誤差函數E(u,v):

image45_thumb1

將I(u,v)進行Taylor展開:

image48_thumb1

進一步展開,寫成:

image511_thumb

image64_thumb1

H稱為自相關矩陣,image57_thumbimage60_thumb是H的2個特征值,E(u,v)的變化如下圖所示:

image67_thumb1

根據H的2個特征值大小對圖像點進行分類:

image70_thumb

角點應該滿足的基本性質:最小特征值盡量大

角點響應:image77_thumb

image81_thumb更有效的角點響應函數:

image841_thumb1

image871_thumb1

image90_thumb2

四、點特征檢測:Harris角點

  • 算法步驟:

  1. 將原圖像I使用w(x,y)進行卷積,並計算圖像梯度Ix與Iy;
  2. 計算每個圖像點的自相關矩陣H;
  3. 計算角點響應image93_thumb
  4. 選擇R大於閾值且為局部極大值的點作為角點。

image96_thumbimage991_thumb

image102_thumbimage1051_thumbimage1081_thumbimage111_thumb

  • Harris角點改進:

Harris檢測子獲得的角點可能在圖像上分布不均勻(對比度高的區域角點多)

改進方法:Adaptive non-maximal suppression(ANMS),只保留半徑r內角點響應比其他點大10%的點作為角點。(Brown,Szeliski and Winder,2005)

image1_thumb

  • Harris角點的性質:

1.   旋轉不變:

image411_thumb

橢圓轉過一定角度但是其形狀保持不變(特征值保持不變)

2.   光照變化不變:

image7_thumb

image1011_thumb只使用了圖像導數,對於光照線性變化不變

3.   對比度變化部分不變:

image13_thumb

4.   對於圖像尺度變化不具有不變性:

image16_thumb

五、點特征檢測:MOPS

MOPS:Multi-scale oriented patches

尺度不變:在多層圖像金字塔上檢測角點,在同一層進行匹配

MOPS局限:待匹配的圖像需要尺度近似

image26_thumb

六、點特征檢測: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)尺度空間中提取極值點並進行優化,從而獲取特征點。

image3011_thumb

3、SIFT算法點檢測的具體步驟:

——構建尺度空間;

——構造高斯差分尺度空間;

——DoG尺度空間極值點檢測;

——特征點精確定位;

——去除不穩定點;

  • 構建尺度空間:模擬圖像數據的多尺度特征

         image33_thumb

其中image361_thumb是尺度可變高斯函數

image39_thumb

尺度參數image421_thumb決定圖像的平滑程度,大尺度對應圖像的概貌特征,小尺度對應圖像的細節特征

  • 構造高斯差分尺度空間(Difference of Gaussian,DOG)

為了在尺度空間中檢測穩定的關鍵點,構造高斯差分尺度空間

image4511_thumb

使用DOG的幾個理由:

          1.   計算效率高:高斯卷積,減法;

   2.   高斯差分是對尺度歸一化LoGimage4811_thumb的一個很好的近似,而尺度歸一化的LoG空間具有真正的尺度不變性(Lindegerg 1994);

   3.  實驗比較表明,從尺度歸一化LoG空間中提取的圖像特征的尺度穩定性最好,優於梯度、Hessian或Harris角點函數。

image51_thumb1

image54_thumb1

DoG尺度空間:

image571_thumb1

image601_thumb1

  • DoG尺度空間極值點檢測:

一個點和它同尺度的8個相鄰點以及上下相鄰尺度對應的9×2個點共26個點比較,以確保在尺度空間和二維圖像空間都檢測到極值點。
一個點如果在DOG尺度空間的26個領域中是最大或最小值時,就認為該點是圖像在該尺度下的一個特征點。
一個特征點是在三維尺度空間image63_thumb的局部極值點。

  • 特征點精確定位:

一個特征點是在三維尺度空間image66_thumb的局部極值點。但(x,y)為整數像素,image_thumb28為離散尺度,需要對DoG空間擬合進行特征點精確定位。

image72_thumb的特征點image75_thumb處二階Taylor展開:

image78_thumb

對上式求導,並令其為0,得到精確的位置(偏移量):

image811_thumb

image84_thumb1中的三個變量任意一個偏移量大於0.5,說明精確極值點更接近於另一個特征點,則更換特征點重復上述精確定位流程。

  • 去除不穩定特征點:

——去除對比度低的點:

計算極值點取值image87_thumb1,若image9011_thumb,則保留該特征點,否則丟棄。

——去除邊緣點:

DoG算子會產生較強的邊緣響應,利用Harris檢測子判斷。

image931_thumb

image961_thumb,則保留該特征點,否則丟棄。

image99_thumb3image1021_thumb3

4、SIFT點的特點:

  • 視角和旋轉變化不變性:

image105_thumb2image108_thumb2

  • 光照不變性:

image1111_thumb3

  • 尺度不變性:

image114_thumb3

七、點特征檢測:小結

  • 根據自相關矩陣特征值檢測角點(Harris); Harris角點具有旋轉、光照不變性,但不具有尺度不變性。
  • 高斯差分尺度空間中檢測尺度不變特征點(SIFT); SIFT具有尺度不變性。
  • Harris與SIFT的機理不同,因此可以聯合使用,互為補充。

八、邊緣檢測

主要內容:

1.圖像梯度

2.一階微分算子

3.二階微分算子

4.Canny算子

1、為什么要檢測邊緣?

一個例子:基於邊緣的圖像編輯

image_thumb89

2、圖像邊緣的產生

物體的邊界、表面方向的改變、不同的顏色、光照明暗的變化

image_thumb90

3、邊緣檢測——圖像梯度

圖像梯度的定義:image_thumb91[1]   image_thumb92

水平梯度:image_thumb93

垂直梯度:image_thumb94

圖像梯度指向灰度變化最快的方向:image_thumb95

梯度幅值表示邊緣的強弱:image_thumb96

邊緣是一階倒數的極大值點:

image_thumb97

4、邊緣檢測——一階微分算子

使用差分近似一階微分算子:

image_thumb98

直接對圖像使用差分容易受到噪聲影響:

image_thumb99

解決方法:先平滑,再微分

image_thumb100

image_thumb101,可將平滑和微分合為一個算子

image_thumb102

二維高斯微分:

實際應用中:對二維高斯微分進行數值近似:Prewitt算子、Sobel算子

image_thumb103

Prewitt算子:去噪+ 增強邊緣

image_thumb104

Sobel算子:去噪+ 增強邊緣(給四鄰域更大的權重)

image_thumb105

使用一階微分算子提取邊緣流程:
1. 使用Prewitt或Sobel算子對圖像進行卷積;
2. 將梯度幅值大於閾值的點標記為邊緣;
3. (optional)將邊緣細化為一個像素寬度。

image_thumb106

5、邊緣檢測——二階微分算子

如果不使用細化,如何獲得單像素寬度邊緣?

image_thumb107

邊緣是一階倒數的極大值點

image_thumb108

邊緣是二階倒數的過零點
注意:僅僅等於0不夠,常數函數也為0,必須存在符號改變

image_thumb109

對平滑圖像做二階微分:image_thumb110

image_thumb111

二維高斯微分:

image_thumb112

Laplacian of Gaussian (LoG)算子:首先用Gauss函數對圖像進行平滑,抑制噪聲,然后對經過平滑的圖像使用Laplacian算子
LoG算子等效於:Gaussian平滑+ Laplacian二階微分

LoG因其形狀,也稱為Mexican hat

image_thumb113

LoG算子與一階微分算子的比較:

image_thumb115

LoG算子的特點:
• 正確檢測到的邊緣:單像素寬度,定位准確;
• 形成許多封閉的輪廓,這是一個主要問題;
• 需要更加復雜的算法檢測過零點。

6、邊緣檢測——Canny算子

  • Canny算子是最常用的邊緣檢測算子
  • Canny算子是一階微分算子,但是一個優化的方案
    -單像素寬度
    -噪聲抑制
    -邊緣增強
    -邊緣定位
    J.Canny, “A Computational Approach to Edge Detection”, IEEE Trans. on PAMI, 8(6),1986.
    18482 cites
  • Canny算子基本流程

image_thumb116

(1)高斯平滑濾波器卷積

image_thumb117

(2)使用一階有限差分計算偏導數的兩個陣列

image_thumb118

相當於與模板進行卷積運算:image_thumb119

當然也可以使用高斯微分算子(Prewitt或Sobel)直接與image_thumb120卷積計算image_thumb121image_thumb122

(3)邊緣幅值和邊緣方位角

image_thumb123

M代表梯度幅值的大小,在存在邊緣的圖像位置處,
M的值變大,圖像的邊緣特征被“增強”。

(4)梯度非極大值抑制

局部極值周圍存在相近數值的點:

image_thumb124

非極大值抑制(NMS:Non-Maxima Suppression)
主要思想:

由梯度幅值圖像image_thumb125,僅保留極大值(嚴格地說,保留梯度方向上的極大值點)。

具體過程:

1.初始化image_thumb126

2.對於每個點,在梯度方向和反梯度方向各找n個像素點。若image_thumb127不是這些點中的最大點,則將image_thumb128置零,否則保持image_thumb129不變。

image_thumb130

  • 在梯度方向的沿線上檢測該點是否為局部極大值;
  • 簡化的情形,只使用4個方向:【0,45,90,135】;
  • 得到的結果image_thumb131包含邊緣的寬度為1個像素;

(5)對NMS結果進行閾值二值化—雙閾值檢測

  • 使用大的閾值,得到:
    -少量的邊緣點
    -許多空隙
  • 使用小的閾值,得到:
    -大量的邊緣點
    -大量的錯誤檢測

兩個閾值T1,T2:T2 >> T1

由T1得到image_thumb132,低閾值邊緣圖:更大的誤檢測率
由T2得到image_thumb133,高閾值邊緣圖:更加可靠

image_thumb134

(6)邊緣連接
1. 將image_thumb135中相連的邊緣點輸出為一幅邊緣圖像image_thumb136
2. 對於image_thumb137中每條邊,從端點出發在image_thumb138中尋找其延長的部分,直至image_thumb139與中另外一條邊的端點相連,否則認為image_thumb140中沒有它延長的部分;
3. 將image_thumb141作為結果輸出。

Canny算子流程效果圖:

image_thumb142

image_thumb143

image_thumb144

Canny算子的優點
-參數較少
-計算效率
-得到的邊緣連續完整
參數的選擇
-Gauss濾波的尺度
-雙閾值的選擇(LOW=HIGH*0.4)

image_thumb145

image_thumb146

Canny算子的處理效果:

image_thumb147

image_thumb148

九、總結

• 根據自相關矩陣特征值檢測角點(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.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM