1. 程式人生 > >角點檢測運算元(Harris, KLT, SIFT,SUSAN)

角點檢測運算元(Harris, KLT, SIFT,SUSAN)

角點檢測:

       角點:最直觀的印象就是在水平、豎直兩個方向上變化均較大的點,即Ix、Iy都較大 。
        邊緣:僅在水平、或者僅在豎直方向有較大的變化量,即Ix和Iy只有其一較大。
        平坦地區:在水平、豎直方向的變化量均較小,即Ix、Iy都較小。

一:Harris角點檢測

        用 Harris 演算法進行檢測,有三點不足:(1)不具有尺度不變性;(2)提取的角點是畫素級的;(3)演算法檢測時間較長,實時應用效果較差。

        Harris 運算元是一種有效的點特徵提取運算元,其優點總結起來有: ①計算簡單:Harris 運算元中只用到灰度的一階差分以及濾波,操作簡單。②提取的點特徵均勻而且合理:Harris運算元對影象中的每個點都計算其興趣值,然後在鄰域中選擇最優點。實驗表明,在紋理資訊豐富的區域,Harris 運算元可以提取出大量有用的特徵點,而在紋理資訊少的區域,提取的特徵點則較少。③穩定:Harris運算元的計算公式中只涉及到一階導數,因此對影象旋轉、灰度變化、噪聲影響和視點變換不敏感,它也是比較穩定的一種點特徵提取運算元。

        Harris 運算元的侷限性有:①它對尺度很敏感,不具有尺度不變性。②提取的角點是畫素級的。

二:KLT角點檢測

        KLT角點檢測方法最初是用於滿足Lucas-Kanade光流法選擇合適特徵點的需求,Lucas-Kanade光流法是通過先在前後兩幀影象裡分別建立一個固定大小視窗,然後找到讓兩個視窗間畫素強度差的平方和最小的位移。然後將視窗內畫素的移動近似為這樣的位移向量,然後實際上,一方面畫素移動並不會那麼簡單,另一方面視窗內畫素並不都是同樣的移動方式,因為這樣的近似必然會帶來誤差。而現在的問題就是如何去選擇合適的視窗,或者特徵點,從而獲得最為精確的跟蹤。KLT

角點檢測方法就是為了選擇一個適合跟蹤的特徵點,它認為一個好的特徵點的定義應當就是能被好的跟蹤。

 

三:SIFT角點檢測

        尺度不變特徵變換(Scale-invariantfeature transform),主要特點在於其多尺度資訊描述,能夠有效描述縮放,並且對 影象旋轉、亮度、仿射變換、視角變化具有很好的適應性。

SIFT演算法還具有如下一些特點:

1. 資訊量豐富,即使少數的幾個物體也可以產生大量的SIFT特徵向量;

2. 特徵區分度大,適用於在海量特徵資料庫中進行快速、準確的匹配;

3. 速度快,加速的SIFT演算法可以達到實時。

        演算法首先要理解多尺度(多個解析度)的概念,也就是我們常說的影象金字塔

,可以簡單理解為影象的降取樣,一般降取樣過程分為兩步:一是影象模糊,二是隔行取樣。

        右側是我們常說的高斯金字塔,所謂高斯金字塔在於上一級影象通過下一級影象進行高斯濾波得到,英文Octave是音樂上一個八度的意思,這裡引申為一組解析度相同的影象,一個Octave組採用了不同的高斯函式進行濾波,因此其模糊程度不一樣,不同組的影象具有不同的解析度(按照1/2降取樣得到)。


        SIFT演算法本質在於提取影象關鍵點,也就是在不同尺度空間下具有方向資訊的區域性極值點。(這些點不會因光照條件的改變而消失,比如角點、邊緣點、暗區域的亮點以及亮區域的暗點)

        SIFT演算法可以描述為以下步驟:

1.構建尺度空間

    根據高斯濾波處理輸入影象,得到高斯金字塔,並建立如上圖所示的高斯差分金字塔(DOG);

2.極值點檢測

    候選點P與同一尺度,上下相鄰兩尺度空間內相鄰的 26 個畫素點進行比較,以確保在影象空間和尺度空間都檢測到區域性極值;

3.關鍵點篩選

    選取在不同尺度(或者叫解析度)下同時存在的極值點,稱之為匹配點,匹配點不會因為尺度變化而消失。

四:SUSAN角點檢測

        SUSAN是基於畫素領域包含若干元素的近似圓形模板,對每個畫素基於該模板領域的影象灰度計算角點響應函式(CRF),如果大於某閾值且為區域性極大值,則認為該點為角點。角點的精度與圓形模板大小無關,圓形模板越大,檢測的角點數越多,則計算量也越大。

        SUSAN角點檢測可以參考OpenCV程式碼,其檢測效果如下: