通常意義上來(lái)說(shuō),角點(diǎn)就是極值點(diǎn),即在某方面屬性特別突出的點(diǎn),是在某些屬性上強(qiáng)度最大或者最小的孤立點(diǎn)、線段的終點(diǎn)。對(duì)于圖像而言,其是物體輪廓線的連接點(diǎn)。
算法的核心是利用局部窗口在圖像上進(jìn)行移動(dòng),判斷灰度是否發(fā)生較大的變化。如果窗口內(nèi)的灰度值(在梯度圖上)都有較大的變化,那么這個(gè)窗口所在區(qū)域就存在角點(diǎn)。
這樣就可以將 Harris 角點(diǎn)檢測(cè)算法分為以下三步:
1,當(dāng)窗口(局部區(qū)域)同時(shí)向 x (水平)和 y(垂直) 兩個(gè)方向移動(dòng)時(shí),計(jì)算窗口內(nèi)部的像素值變化量 E(x,y);
2,對(duì)于每個(gè)窗口,都計(jì)算其對(duì)應(yīng)的一個(gè)角點(diǎn)響應(yīng)函數(shù) R;
3,然后對(duì)該函數(shù)進(jìn)行閾值處理,如果 R>threshold,表示該窗口對(duì)應(yīng)一個(gè)角點(diǎn)特征。
2
建立數(shù)學(xué)模型
第一步是通過(guò)建立數(shù)學(xué)模型,確定哪些窗口會(huì)引起較大的灰度值變化。讓一個(gè)窗口的中心位于灰度圖像的一個(gè)位置(x,y),這個(gè)位置的像素灰度值為I(x,y),如果這個(gè)窗口分別向 x和 y 方向移動(dòng)一個(gè)小的位移u和v,到一個(gè)新的位置 (x+u,y+v),這個(gè)位置的像素灰度值就是I(x+u,y+v)。|I(x+u,y+v)?I(x,y)|就是窗口移動(dòng)引起的灰度值的變化值。
設(shè)w(x,y)為位置(x,y)處的窗口函數(shù),表示窗口內(nèi)各像素的權(quán)重,最簡(jiǎn)單的就是把窗口內(nèi)所有像素的權(quán)重都設(shè)為1,即一個(gè)均值濾波核。當(dāng)然,也可以把 w(x,y)設(shè)定為以窗口中心為原點(diǎn)的高斯分布,即一個(gè)高斯核。
如果窗口中心點(diǎn)像素是角點(diǎn),那么窗口移動(dòng)前后,中心點(diǎn)的灰度值變化非常強(qiáng)烈,所以該點(diǎn)權(quán)重系數(shù)應(yīng)該設(shè)大一點(diǎn),表示該點(diǎn)對(duì)灰度變化的貢獻(xiàn)較大;而離窗口中心(角點(diǎn))較遠(yuǎn)的點(diǎn),這些點(diǎn)的灰度變化比較小,于是將權(quán)重系數(shù)設(shè)小一點(diǎn),表示該點(diǎn)對(duì)灰度變化的貢獻(xiàn)較小。
則窗口在各個(gè)方向上移動(dòng)(u,v)所造成的像素灰度值的變化量公式如下:
若窗口內(nèi)是一個(gè)角點(diǎn),則E(u,v)的計(jì)算結(jié)果將會(huì)很大。為了提高計(jì)算效率,對(duì)上述公式進(jìn)行簡(jiǎn)化,利用泰勒級(jí)數(shù)展開(kāi)來(lái)得到這個(gè)公式的近似形式。
對(duì)于二維的泰勒展開(kāi)式公式為:
T(x,y)=f(u,v)+(x?u)fx(u,v)+(y?v)fy(u,v)+....
則I(x+u,y+v) 為:
I(x+u,y+v)=I(x,y)+uIx+vIy
其中Ix和Iy是I的微分(偏導(dǎo)),在圖像中就是求x 和 y 方向的梯度圖:
Ix=?I(x,y)/?x
Iy=?I(x,y)/?y
將I(x+u,y+v)=I(x,y)+uIx+vIy代入E(u,v)可得:
提出 u 和 v ,得到最終的近似形式:
其中矩陣M為:
最后是把實(shí)對(duì)稱(chēng)矩陣對(duì)角化處理后的結(jié)果,可以把R看成旋轉(zhuǎn)因子,其不影響兩個(gè)正交方向的變化分量。經(jīng)對(duì)角化處理后,將兩個(gè)正交方向的變化分量提取出來(lái),就是 λ1 和 λ2(特征值)。
這里利用了線性代數(shù)中的實(shí)對(duì)稱(chēng)矩陣對(duì)角化的相關(guān)知識(shí),有興趣的同學(xué)可以進(jìn)一步查閱相關(guān)資料。
3
角點(diǎn)響應(yīng)函數(shù)R
現(xiàn)在我們已經(jīng)得到E(u,v)的最終形式,別忘了我們的目的是要找到會(huì)引起較大的灰度值變化的那些窗口。
灰度值變化的大小則取決于矩陣M,M為梯度的協(xié)方差矩陣。在實(shí)際應(yīng)用中為了能夠應(yīng)用更好的編程,所以定義了角點(diǎn)響應(yīng)函數(shù)R,通過(guò)判定R大小來(lái)判斷像素是否為角點(diǎn)。
計(jì)算每個(gè)窗口對(duì)應(yīng)的得分(角點(diǎn)響應(yīng)函數(shù)R定義):
其中 det(M)=λ1λ2是矩陣的行列式,trace(M)=λ1+λ2是矩陣的跡。λ1和 λ2是矩陣M的特征值,k是一個(gè)經(jīng)驗(yàn)常數(shù),在范圍 (0.04, 0.06) 之間。R的值取決于M的特征值,對(duì)于角點(diǎn)∣R∣很大,平坦的區(qū)域∣R∣很小,邊緣的R為負(fù)值。
4
角點(diǎn)判定
根據(jù) R 的值,將這個(gè)窗口所在的區(qū)域劃分為平面、邊緣或角點(diǎn)。為了得到最優(yōu)的角點(diǎn),我們還可以使用非極大值抑制。
注意:Harris 檢測(cè)器具有旋轉(zhuǎn)不變性,但不具有尺度不變性,也就是說(shuō)尺度變化可能會(huì)導(dǎo)致角點(diǎn)變?yōu)檫吘?。想要尺度不變特性的話,可以關(guān)注SIFT特征。
因?yàn)樘卣髦?λ1 和 λ2 決定了 R 的值,所以我們可以用特征值來(lái)決定一個(gè)窗口是平面、邊緣還是角點(diǎn):
平面:該窗口在平坦區(qū)域上滑動(dòng),窗口內(nèi)的灰度值基本不會(huì)發(fā)生變化,所以∣R∣ 值非常小,在水平和豎直方向的變化量均較小,即 Ix和 Iy都較小,那么 λ1 和 λ2 都較小;
邊緣:∣R∣值為負(fù)數(shù),僅在水平或豎直方向有較大的變化量,即 Ix和Iy只有一個(gè)較大,也就是 λ1>>λ2 或 λ2>>λ1;
角點(diǎn):[公式] 值很大,在水平、豎直兩個(gè)方向上變化均較大的點(diǎn),即 Ix和 Iy都較大,也就是 λ1 和 λ2 都很大。
如下圖所示:
Harris 角點(diǎn)檢測(cè)的結(jié)果是帶有這些分?jǐn)?shù) R 的灰度圖像,設(shè)定一個(gè)閾值,分?jǐn)?shù)大于這個(gè)閾值的像素就對(duì)應(yīng)角點(diǎn)。
編輯:黃飛
-
圖像處理
+關(guān)注
關(guān)注
27文章
1272瀏覽量
56496 -
閾值
+關(guān)注
關(guān)注
0文章
122瀏覽量
18443 -
Harris
+關(guān)注
關(guān)注
0文章
9瀏覽量
8192
原文標(biāo)題:圖像處理-harris角點(diǎn)檢測(cè)
文章出處:【微信號(hào):機(jī)器視覺(jué)沙龍,微信公眾號(hào):機(jī)器視覺(jué)沙龍】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論