今天看3D(時空域) Harris角點的檢測,發現網上關於此的中文內容很少,所以決定寫兩篇文章,分享一下自己的心得。第一篇是關於在空域上的Harris角點檢測。
在我們解決問題時,往往希望找到特征點,“特征”顧名思義,指能描述物體本質的東西,還有一種解釋就是這個特征微小的變化都會對物體的某一屬性產生重大的影響。而角點就是這樣的特征。
觀察日常生活中的“角落”就會發現,“角落”可以視為所有平面的交匯處,或者說是所有表面的發起處。假設我們要改變一個牆角的位置,那么由它而出發的平面勢必都要有很大的變化。所以,這就引出了圖像角點的定義
“如果某一點在任意方向的一個微小變動都會引起灰度很大的變化,那么我們就把它稱之為角點”
由上面定義,我們可以想到算法思路:去檢測圖像像素的灰度變化情況,即求解
,其中,I(x,y)表示像素的灰度值
對於上式,我們希望找到使E的值盡量大的點,則,將上式右邊泰勒展開得:
整理可得:
,進而可以表示為下式
這里考慮進去窗函數,設
於是,Harris整理出Harris算子的公式:
,其中M即為上面的矩陣,但是為什么會有這個算子呢,我試着給一點解釋。
讓我們來重新來考慮矩陣,一切的問題還得回歸到數學上去
,這個矩陣先擺在這里,我們先看一下協方差矩陣。
協方差矩陣的作用為什么比方差和均值要大呢?顯而易見方差和均值只是一維隨機變量的統計值,而協方差就不一樣了,它可以表示多維隨機變量之間的相關性信息。協方差矩陣的一個很出色的應用就是在PCA中,選擇主方向。協方差矩陣的對角線的元素表示的是各個維度的方差,而非對角線上的元素表示的是各個維度之間的相關性,因此,在PCA中,我們盡量將非對角線上的元素化為0,即將矩陣對角化,選特征值較大的維度,去掉特征值較小的維度,來獲得主方向,並且使主方向與其他方向的相關性盡量小。那現在看看這個矩陣M,通過上面對協方差的描述,我們完全可以把這個矩陣看做一個二維隨機分布的協方差矩陣,那么我們要做的就是將其對角化,求矩陣的兩個特征值,然后根據這兩個特征值來判斷是不是角點(兩個特征值都大代表角點)。
而對於Harris算子來說,我們也可以寫成下式的形式:
,單單從這個式子中我們無法與上面聯系起來,上面是說要讓兩個特征值都大的點,而這個式子是要求使R最大的點,而也沒有辦法一眼看出R與兩個特征值之間的單調性關系。
下面我只是去驗證此式的正確性,至於它到底是根據什么構造的,我還不清楚,如果有人知道,請告訴我一下~~
我們這里設,進而可以設
,所以
,現在我們對
求導,整理后可得下式:
,對於k值,我們一般取0.04~0.06,所以對於角點,導數是正的,且隨着特征值的增大,導數呈上升的趨勢。也就是說這個算子是符合上面的理論分析的。
像上面這樣去求解原則上是沒有問題的,可是,眾所周知,原始的Harris角點檢測算法不具有尺度不變性(也就是說如果圖像的尺度發生變化,那么可能原來是角點的點在新的尺度就不是角點了)。
所以,我們在進行運算的開始先將圖像轉化到尺度空間表示,即將原圖像進行尺度變換,而尺度變換的方式就是問題的輸入信號與尺度核函數做卷積運算:
,其中這里的運算為卷積運算,不是乘運算。即
,其中sigma表示尺度。然后,我們就使用L代替原圖像去進行運算,而尺度成了我們運算的參數了。
我們知道Harris角點本身就不受光照,旋轉的影響,現在我們又使其滿足尺度不變性,所以,Harris角點可以作為一個優秀的特征來幫助我們解決問題。
本文只介紹了一下空域上的Harris角點的檢測,但是我們現在需要將Harris角點擴展到時空域中,其實道理都差不多,再續!