特徵點檢測廣泛應用到目標匹配、目標跟蹤、三維重建等應用中,在進行目標建模時會對影象進行目標特徵的提取,常用的有顏色、角點、特徵點、輪廓、紋理等特徵。現在開始講解常用的特徵點檢測,其中harris角點檢測是特徵點檢測的基礎,提出了應用鄰近畫素點灰度差值概念,從而進行判斷是否為角點、邊緣、平滑區域。harris角點檢測原理是利用移動的視窗在影象中計算灰度變化值,其中關鍵流程包括轉化為灰度影象、計算差分影象、高斯平滑、計算區域性極值、確認角點。
1.數學模型
當乙個視窗在影象上移動,在平滑區域如圖(a),視窗在各個方向上沒有變化。在邊緣上如圖(b),視窗在邊緣的方向上沒有變化。在角點處如圖(c),視窗在各個方向上具有變化。harris角點檢測正是利用了這個直觀的物理現象,通過視窗在各個方向上的變化程度,決定是否為角點。
將影象視窗平移[u,v]產生灰度變化e(u,v)
由二元函式的泰勒級數:
對於區域性微小的移動量 [u,v],近似表達為:
其中m是 2*2 矩陣,可由影象的導數求得:
上式中w函式表示視窗函式,m矩陣為偏導數矩陣。對於矩陣可以進行對稱矩陣的變化,假設利用兩個特徵值進行替代,其幾何含義類似下圖中的表達。在幾何模型中通過判斷兩個特徵值的大小,來判定畫素的屬性。
e(u,v)的橢圓形式如下圖:
m為梯度的協方差矩陣 ,在實際應用中為了能夠應用更好的程式設計,定義了角點響應函式r,通過判定r大小來判斷畫素是否為角點。
r取決於m的特徵值,對於角點|r|很大,平坦的區域|r|很小,邊緣的r為負值。
定義角點響應函式r為:
harris角點檢測演算法就是對角點響應函式r進行閾值處理:r > threshold,即提取r的區域性極大值。
2.harris角點性質(1)harris角點檢測運算元對亮度和對比度的變化不敏感
這是因為在進行harris角點檢測時,使用了微分運算元對影象進行微分運算,而微分運算對影象密度的拉公升或收縮和對亮度的抬高或下降不敏感。換言之,對亮度和對比度的仿射變換並不改變harris響應的極值點出現的位置,但是,由於閾值的選擇,可能會影響角點檢測的數量。
(2)harris角點檢測運算元具有旋轉不變性
harris角點檢測運算元使用的是角點附近的區域灰度二階矩矩陣。而二階矩矩陣可以表示成乙個橢圓,橢圓的長短軸正是二階矩矩陣特徵值平方根的倒數。當特徵橢圓轉動時,特徵值並不發生變化,所以判斷角點響應值r r也不發生變化,由此說明harris角點檢測運算元具有旋轉不變性。
(3)harris角點檢測運算元不具有尺度不變性
如下圖所示,當右圖被縮小時,在檢測視窗尺寸不變的前提下,在視窗內所包含影象的內容是完全不同的。左側的影象可能被檢測為邊緣或曲線,而右側的影象則可能被檢測為乙個角點。
shi-tomasi 演算法是harris 演算法的改進。harris 演算法最原始的定義是將矩陣 m 的行列式值與 m 的跡相減,再將差值同預先給定的閾值進行比較。後來shi 和tomasi 提出改進的方法,若兩個特徵值中較小的乙個大於最小閾值,則會得到強角點。
對自相關矩陣 m 進行特徵值分析,產生兩個特徵值
shi 和tomasi 的方法比較充分,並且在很多情況下可以得到比使用harris 演算法更好的結果。
4.fast角點檢測演算法
edward rosten and tomdrummond 在2023年提出了一種簡單快速的角點探測演算法,該演算法檢測的角點定義為在畫素點的周圍鄰域內有足夠多的畫素點與該點處於不同的區域。應用到灰度影象中,即有足夠多的畫素點的灰度值大於該點的灰度值或者小於該點的灰度值。
考慮下圖中p點附近半徑為3的圓環上的16個點,乙個思路是若其中有連續的12個點的灰度值與p點的灰度值差別超過某一閾值,則可以認為p點為角點。
這一思路可以使用機器學習的方法進行加速。對同一類影象,例如同一場景的影象,可以在16個方向上進行訓練,得到一棵決策樹,從而在判定某一畫素點是否為角點時,不再需要對所有方向進行檢測,而只需要按照決策樹指定的方向進行2-3次判定即可確定該點是否為角點。
Harris角點檢測演算法2
前一篇文章簡要的說了一下空域上的harris角點檢測,現在說一下我真正要說的時空域上的3d harris角點檢測。其實理解了空域的角點檢測,時空域上的也就是多了乙個時間的維度罷了,思想是一樣的。所以,根據空域中的方法,我們定義 按照泰勒公式展開,可以得到矩陣m 也可以得到harris角點運算元在時空...
Harris角點檢測
貼一下 計算機視覺課的作業 有時候 需要用下 function f detectcorner i,threshold,sigma harris corner detect by lifeiteng version1.0 灰度影象 2013 5 08 version1.1 彩色影象 2013 5 13...
harris 檢測角點
主要是使用函式 cv exports w void goodfeaturestotrack inputarray image,輸入影象 outputarray corners,角點數 int maxcorners,最大角點數 double qualitylevel,最大最小特徵值乘法因子 doubl...