1. 程式人生 > >尺度及仿射不變的Harris角特徵點檢測及匹配演算法

尺度及仿射不變的Harris角特徵點檢測及匹配演算法

角特徵點檢測是一種區域性特徵子,而區域性特徵子非常適合於影象匹配及識別(尤其是目標出現阻擋的情況),但問題是如何才能找到具有不變性的特徵子(針對於旋轉、仿射、光照、尺度等不變性特徵)。本文先介紹了經典的Harris角點檢測方法,因為Harris方法雖然具有對亮度和對比度的變化不敏感,且具有旋轉不變性,但不具有尺度和仿射不變性,所以之後將重點分析一種具有尺度和仿射不變性的Harris改進方法,這個方法是基於Mikolajczyk在2004年發表了論文[Scale & Affine Invariant Interest Point Detectors]

一、經典的Harris角點檢測方法

Harris角點檢測是一種非常經典而有效的角點檢測方法,它主要是考慮到人眼對角點的識別通常是在一個區域性的小區域或小視窗完成的。如果是在角點位置上的視窗,那麼其在各個方向上移動,都會使區域內灰度發生了較大的變化。如果只在一個方向上移動時發生較大變化,那麼這點需要是在直線上;如果在各個方向上移動都沒有發生變化,那麼視窗可能位於平滑的區域。


這裡的移動發生變化是由視窗平移後的自相似性來衡量的。


可以簡化為:


這其中二階矩表示為:


由此可以將自相關函式視為一個橢圓函式:


這個橢圓函式曲線實際上是指這個點附近的等相關線,橢圓曲線上的點同中心點的具有相同的相關程度,其長軸和短軸(可以由二階矩的特徵值來表示)表明了變化快慢的方向。


顯然,若是角點的話,那麼各方向的變化都比較大,即二階矩M(x,y)的特徵值都較大,且接近相等。可以通過角點響應值cornerness來判斷角點,計算每一畫素點的角點響應值,並在域內進行非最大值抑制,找到區域性最大值即為其角點。


這裡的計算主要是用到了二階矩M(x,y),使用了微分運算元對畫素點進行微分運算,而微分運算對影象密度的拉昇或收縮和對亮度的擡高或下降不敏感。所以對亮度和對比度的仿射變換並不改變Harris響應的極值點出現的位置,但是,由於閾值的選擇,可能會影響角點檢測的數量,同時角點判斷主要是通過二階矩

M(x,y)的特徵值大小來判斷的,特徵值的方向角完全沒有影響,所以Harris方法具有了仿射不變性。

Harris角點檢測方法還有一些細節,我也不再詳細描述了,因為網上關於Harris方法不僅有詳細的程式碼,還有許多文章寫得非常詳細,這裡推薦一篇文章:

二、基於多尺度空間的Harris角點檢測方法

Harris角點檢測雖然對於光照強度、旋轉角度改變具有較好的檢測不變性,但是卻不具有尺度不變性及仿射不變性,然後在現實生活中,兩張圖片中目標物體發生尺度變化,或由視點變化而引起仿射變化是非常常見的。為了獲得尺度不變性,比較直觀的方法就是建立多尺度空間(類似於sift方法),對於每個特徵位置都有在不同尺度下的表示,那麼在匹配時只要找到對應尺度空間下的特徵點就可以了。所以我們只需要在經典的方法裡引入多尺度空間,在原特徵點空間裡增加了多個其他尺度空間的特徵點,這些增加的特徵點對應於不同的尺度空間的影象,增加了目標尺度變化的魯棒性,使其具有了一定程度的尺度不變性。由此的新的二階矩

M(x,y)可以表示為:


新的M(x,y)同原來相比增加了兩個高斯尺度引數(σI稱為積分尺度,它是決定Harris角點當前尺度的變數,其越大說明對於尺度越大,有放大效果,σD為微分尺度或區域性尺度,它是決定角點附近微分值變化的變數,實際上可以認為是一個高斯平滑引數,濾除Laplace變換後形成的細小噪聲點),另外原來的梯度運算變成了LoG運算元(這個運算元實際上相當於先進行高斯平滑濾波,再進行梯度運算)。

然而應用多尺度空間後,會增加大量的特徵點,然而特徵點的增加會提高誤檢測的概率及計算複雜度,另外尺度空間的變化並不是連續的,尺度空間變化間隔越少,那麼最後匹配的尺度引數與實際尺度的誤差越少。因為這個原因,原文裡提出了一種自動的尺度引數選擇方法。

三、自適應尺度選擇的Harris角點檢測方法

這個方法主要是找到區域性的結構最顯著的尺度(原諒我的表達能力>_<,意思就是角點所在結構要個多大的區域才能最好的表示),只需要確定一個顯著尺度的特徵點,而不需要要原來多個尺度來表示,那麼在匹配時只需要將兩副圖片裡目標點分別變換到其顯著尺度下,進行匹配就可以了。這裡的最顯著尺度的衡量是根據所選擇的點對應不同尺度LoG響應程度,選擇出響應程度最大的尺度(這裡的尺度實際上指的是LoG的模板半徑,由Ϭ來確定,視窗半徑為3Ϭ,即視窗引數)。衡量公式如下:


我們需要找到具有最顯著尺度的點和其顯著尺度,原文給我們介紹了兩種方法,一種是精確的迭代方法,另一種權衡了精確度及計算效率的簡化方法:

1、精確的迭代方法:通過迭代方法來選擇尺度引數及位置點。已知一個初始的點的位置(從經典Harris方法裡選擇的每個角點)及初始尺度引數,第一步,找到當前點的LoG尺度空間的區域性極值尺度引數,這裡區域性高斯平滑引數(s為小於1的常數,原文實驗引數為0.7),尺度空間變化範圍是[0.7,1.4],如果找不到區域性極值點,則拋棄。第二步在當前極值尺度下找到與原位置最近的新特徵點,反覆重複上述兩個步驟,直到極值尺度和位置點穩定,即不再發生改變。

2、簡化方法:是先建立Harris函式的多尺度空間,然後計算每個尺度裡的區域性cornerness角程度最大值,作為初始點,然後驗證每一個初始點的LoG在尺度座標上的極值尺度點,刪除那些沒有極值或響應太小的點,另外還有可能出現一些點的尺度峰值並不對應於所選擇尺度最大,仍然會出現極值尺度誤差,所以需要所選擇的多尺度的間隔要儘量小,讓我們選擇的極值尺度接近實際的峰值尺度,以達到高的精確度。這種方法同前面不太一樣的是,其並不是每個迭代步驟同時確定每點尺度及位置,而是先確定該位置點所有可以尺度的LoG響應,然後估計其是否存在顯著尺度。

一旦當我們確定了峰值尺度,那麼當出現多尺度匹配的情況時,只需要將不同圖片的特徵點先各自變換到其峰值尺度下(歸一化操作),然後進行的相互匹配了,從而即滿足了尺度不變性,又減少了特徵點數目。

四、增加仿射不變性的Harris角點檢測方法

影象結構發生仿射變換,同尺度變化不同的是,其各方向變化不同anisotropic換而言之,尺度變化像圓一樣放大縮小,而仿射變化像橢圓一樣,各個方向縮放的程度不一樣)。我們考慮的是先估計仿射變化矩陣,然後利用原來所估計仿射變化矩陣將仿射後的點或區域還原成各方向變化相同,即類似於仿射變化先轉換為尺度變化,然後應用上面的多尺度Harris方法。

同先前的分析一樣,我們首先要確定的是二階矩M(x,y),新的可以表示為:


由於各方向變化不一樣,所以同先前二階矩不一樣的是,這裡是協方差而不是方差,為了計算二階矩M(x,y),我們首先要計算的協方差這裡為了減少計算量,我們可以讓這裡的s仍然是個小於1的常數,實驗設定為0.7。

為進一步估計的值,我們先假設存在一個線性變換矩陣為A,滿足。那麼就有:


即是:


高斯核的協方差(無論)都可以表示為如下:



通過上面,我們可假設二階矩可以由下面來計算:


由此,同理我們可以得到:


由此我們可以計算出歸一化仿射矩陣A


這裡的R實際上相當於一個旋轉矩陣,相當於整體尺度上變化,相當於發生仿射變化,大概的示意圖如下:


所以我們現在的問題就是如何去估計了。

五、Harris仿射興趣點檢測方法

下面我們介紹一種迭代的方法,首先定義一個U變換操作:


k是迭代次數,U初始化為單位矩陣,這裡的μ是指每次迭代過程中計算當前點二階矩M(x,y)。這裡的在k次迭代中,先通過應用下列的U變換(首先我們要對初始的影象進行歸一化,使U的最大特徵值為1,從而確保U變換隻往其最小特徵值方向增長),視窗大小為W,中心為興趣點,再利用前面的式子計算當前二階矩μ,而二階矩的選擇μ是由兩個尺度決定的,所以我們需要在每次迭代過程中選擇這兩個尺度引數,隨著迭代次數的增加,每次U變換都會使得μ的最小特徵值增大,最終接近於最大特徵值。

積分尺度引數,主要是用來衡量尺度的,它的選擇方法就是我們前面介紹的自適應尺度選擇的方法。由於仿射變化的原因,尺度在不同方向的改變是不同的,因此我們需要在每次進行U變換後,這些點如上面進的尺度自適應方法一樣,都逐漸收斂到尺度和二階矩(實際上是位置點)都不再改變。是我們假設的為,s是個小於1的常數。區域性尺度引數極大地影響了二階矩μ的收斂性,因為這個迭代過程是為了達到一個具有相等特徵值的矩陣U,特徵值之間差別越小,就越接近最終結果,收斂速度也越快。而前面的角程度已經找到那些具有兩個大的特徵值二階矩μ的興趣點。而特徵值之間差別越大,那麼在U變換後將會造成一方面形成巨大的增加,所以不會收斂到一個穩定的U變換。區域性尺度引數的選擇可以平滑濾波,減少噪聲,從而保證一個合適的特徵值比,以確保收斂。

每次迭代後,先進行U變換:


這裡的為U變化影象窗口裡的空間座標。首先,重新檢測U變換後歸一化視窗的最大值,然後可以獲得原興趣點指向最近最大值的向量,然後對這個向量重新應用U變化,獲得新點位置

最終的收斂條件:

1、二階矩μ的兩個特徵值接近:


2、將U變換矩陣分解成,這裡的R是旋轉矩陣,D是尺度變換矩陣,為減少迭代陷入死迴圈,我們需要排除一些特徵值比值太大的點,這些點容易造成不穩定的點。


六、檢測演算法總結

1、初始化U變化矩陣為單位矩陣 2、在以興趣點為中心定義歸一化視窗,這裡的點是先由經典Harris提取的 3、選擇視窗中心點積分尺度 4、選擇區域性差分尺度,選擇,計算,使滿足最大 5、根據上步計算的μ重新得到最靠近的區域性最大角響應位置 6、計算 7、計算新的U變換矩陣,並歸一化U,讓其最大特徵值為1 8、判斷條件,如果不滿足,返回到第二步,一直將所有的初始角點估計出來

相似仿射點的選擇問題:因為歸一化後的區域是各方向變化同樣的,因為存在這樣的可能,多個興趣點都指向同一個特徵,但從不同尺度水平中檢測出來卻最終收斂於一個點的位置和尺度。為了區分這些點,可以通過比較其位置、尺度、伸縮比,及傾斜度由裡的R獲得。如果所有的這些引數都同參考值非常接近的,就可以認為這個點相似的,最後我們可以從鑑定點集裡,平均這些引數,選擇最相似的點,最後我們會得一個每點都代表著不同的影象位置及結構的點集。


在這張圖裡,(a)圖裡的白色圓是指不同尺度下特徵點位置,而黑色圓是選擇的最顯著的尺度。(b)圖裡黑色圓指檢測出來仿射區域,而白色圓是指與之對應影象在其上的投影區域,(c)圖說明了多個不同尺度的興趣點最終收斂到同樣的尺度及位置的情況,(d)圖黑色圓對這些興趣點引數進行了平均,而白色圓是指與之對應影象在其上的投影區域。(e)歸一化後的區域。

興趣點的衡量與估計:

1、  位置偏差


這裡的分別指兩張圖片裡同一興趣點的不同位置,H指其變化矩陣。

2、區域重疊性


這裡的都是指兩張興趣點附近的橢圓區域,滿足,這裡需要讓表示的橢圓區域經過H變化後同相互重疊。

七、特徵點匹配問題

給定一個圖片,我們檢測出一定興趣點集,然後計算特徵點的描述子,而描述子能過相似性衡量來比較。點檢測出來後,新問題就是如何獲得特徵點描述子,以用於後期的匹配演算法,為了讓匹配也具有各種不變性特徵,這同時也要求描述子本身也要具有旋轉不變性及仿射不變性特徵。sift方法裡面的描述子具有了一定程度的旋轉及仿射不變性。

本文的描述子也是通過計算特徵點的鄰域的高斯微分,這個微分可以通過在被U變換歸一化的影象塊裡計算,這裡的U變換對於每一特徵點來說都是不相同的,排除仿射變化及尺度變化的影響。旋轉不變性可以通過在梯度方向上進行微分,為了獲得梯度方向上的穩定估計,通過平均鄰域的梯度方向,獲得一個基準方向,然後將整個鄰域旋轉來基準主方向來,同sift方法非常類似。

相關推薦

尺度仿Harris特徵檢測匹配演算法

角特徵點檢測是一種區域性特徵子,而區域性特徵子非常適合於影象匹配及識別(尤其是目標出現阻擋的情況),但問題是如何才能找到具有不變性的特徵子(針對於旋轉、仿射、光照、尺度等不變性特徵)。本文先介紹了經典的Harris角點檢測方法,因為Harris方法雖然具有對亮度和對比度的

MSER仿特徵匹配演算法

MSER原理簡述         區域檢測(Region Detection)方法是根據影象中具有某種同類性質的像元進行分類(例如相同畫素值大小的點),然後把具有相同性質的像元合併成區域,實現區域的檢測即影象分割。MSER(Maximally Stable

Harris檢測matlab程式

Harris角點檢測的步驟為: matlab程式如下: close all; clear all; clc; img=imread('lena.png'); imshow(img); im

Harris檢測程式碼分析(續)

緊接著“Harris角點檢測及程式碼分析”,這裡主要分析OpenCV的cvGoodFeaturesToTrack()函式,這才是角點提取的真正程式碼。 Jianbo Shi, Carlo Tomasi. Good Features to Track.

檢測匹配Harris與FAST檢測

這一章主要內容:        1. Harris角點檢測        2. FAST特徵檢測       3. 尺度不變的SURF特徵檢測       4.SURF檢測描述 一、引言         在計算機視覺中,特徵點或稱興趣點,角點(即影象的極值點,線段的終點,曲

OpenCV計算機視覺學習(13)——影象特徵檢測Harris檢測,sift演算法

如果需要處理的原圖及程式碼,請移步小編的GitHub地址   傳送門:請點選我   如果點選有誤:https://github.com/LeBron-Jian/ComputerVisionPractice 前言   特徵點檢測廣泛應用到目標匹配,目標跟蹤,三維重建等應用中,在進行目標建模時會對影象進行目標特徵

OpenCV2學習筆記(十):特徵檢測Harris

在計算機視覺中,特徵點的概念被大量用於解決物體識別、影象匹配、視覺跟蹤、三維重建等問題,比如影象中物體的角點,它們是在影象中可被輕易而精確地定位的二維特徵。顧名思義,特徵點檢測的思想是無需觀察整幅影象,而是通過選擇某些特殊點,然後對它們執行區域性分析。如果能檢測

影象特徵提取描述子彙總:FIST、SURF、FAST、BRIEF、ORB、BRISK、FREAK

SIFT特徵提取及描述子 1 特徵提取 1.1 構建尺度空間 1.2 選取特徵點         一個點如果在DOG尺度空間本層以及上下兩層的26個領域中是最大或最小值時,就認為該點是影象在該尺度下的一個特徵點 1.3 去除不好的特徵點 2 特徵描述子      

opencv上gpu版surf特徵與orb特徵提取匹配例項

一、前言 本文主要實現了使用opencv裡的gpu版surf特徵檢測器和gpu版orb檢測器,分別對圖片進行特徵點提取及匹配,並對尋獲的特徵點進行了距離篩選,將匹配較為好的特徵點進行展示 二、實現程式碼 我不生產程式碼,我只是程式碼的搬運工和修改工 //main.cpp/

特徵檢測學習_3(Harris演算法)

/* int block_size: 鄰域大小,相鄰畫素的尺寸,就是視窗函式大小 W(x, y); int aperture_size: aperture size for the Sobel(); 因為我們用sobel函式來得到Ix, Iy; double k :

影象區域性特徵學習(筆記1之具有尺度變性的Harris

Harris角點的不變性與侷限性: 由於Harris角點檢測涉及到了影象的一階微分運算,因此Harris角點對影象亮度和對比度具有不變性; 同時角點檢測利用的是二階矩的特徵值,對應於橢圓區域的長軸和短軸的倒數,因此具有旋轉不變性。 但是其不具備尺度不

【學習筆記】SIFT尺度特征 (配合UCF-CRCV課程視頻)

rri cnblogs -o mask 畫出 blocks http ucf 產生 SIFT尺度不變特征 D. Lowe. Distinctive image features from scale-invariant key points, IJCV 2004 -Lect

HarrisShi-Tomasi檢測(轉)

wid fast 進度 -cp 成了 out gif 角點檢測 自定義 一、角點定義 有定義角點的幾段話: 1、角點檢測(Corner Detection)是計算機視覺系統中用來獲得圖像特征的一種方法,廣泛應用於運動檢測、圖像匹配、視頻跟蹤、三維建模和目標識別等領域中。也

jquery ajax success 函數 異步調用方法中能給全局量賦值的原因解決辦法

tex span var getc res syn ucc 解決辦法 asp 在調用一個jquery的ajax方法時我們有時會需要該方法返回一個值或者給某個全局變量賦值,可是我們發現程序執行完後並沒有獲取到我們想要的值,這時很有可能是因為你用的是ajax的異步調用async

MT【145】的平面

angle 運動 delta 向上 del bubuko 平面 wid 相交 (2018,4月學考數學選擇最後一題)如圖,設矩形$ABCD$所在平面與梯形$ACEF$所在平面相交於$AC$. 若$AB=1,BC=\sqrt{3},AF=EF=EC=1,$則下面二面角的平面

Harris cv2.cornerHarris()

角點檢測中要使 E (µ, ν) 的值最大。這就是說必須使方程右側的第二項的取值最大。對上面的等式進行泰勒級數展開然後再通過幾步數學換算這裡 Ix 和 Iy 是影象在 x 和 y 方向的導數。(可以使用函式 cv2.Sobel()計算得到)。 • det(M) = λ1λ2• trace (M)

[機器視覺] SIFT特徵-尺度特徵理解

SIFT特徵-尺度不變特徵理解 簡介 SIFT,即尺度不變特徵變換(Scale-invariant feature transform,SIFT),是用於影象處理領域的一種描述。這種描述具有尺度不變性,可在影象中檢測出關鍵點,是一種區域性特徵描述子。該方法於1999年由David Lowe首先發表於計算機

Harris特徵C實現

1、Harris角點 Harris角點檢測是特徵點檢測的基礎,該檢測子對平移和旋轉魯棒。 Harris角點具有兩個非常重要的性質: 《1》、具有很大的梯度幅值; 《2》、在很小的近鄰內,梯度方向變化尖銳; 故可以通過視窗在小區域內滑動來確定角點位置。 直觀的角點理解:角點既是影象中物體

Harris提取演算法實現

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