角點檢測運算元(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程式碼,其檢測效果如下: