關于矩陣知識的一點補充:好長時間沒看過線性代數的話,這一段比較難理解。可以看到M是實對稱矩陣,這里簡單溫習一下實對稱矩陣和二次型的一些知識點吧。
1. 關于特征值和特征向量:
特征值的特征向量的概念忘了就自己查吧,這里只說關鍵的。對于實對稱矩陣M(設階數為n),則一定有n個實特征值,每個特征值對應一組特征向量(這組向量中所有向量共線),不同特征值對應的特征向量間相互正交;(注意這里說的是實對稱矩陣,不是所有的矩陣都滿足這些條件)
2. 關于對角化:
對角化是指存在一個正交矩陣Q,使得 Q’MQ 能成為一個對角陣(只有對角元素非0),其中Q’是Q的轉置(同時也是Q的逆,因為正交矩陣的轉置就是其逆)。一個矩陣對角化后得到新矩陣的行列式和矩陣的跡(對角元素之和)均與原矩陣相同。如果M是n階實對稱矩陣,則Q中的第 j 列就是第 j 個特征值對應的一個特征向量(不同列的特征向量兩兩正交)。
3. 關于二次型:
對于一個n元二次多項式,f(x1,x2.。。.xn) = ∑ ( aij*xi*xj ) ,其中 i 和 j 的求和區間均為 [1,n] ,
可將其各次的系數 aij 寫成一個n*n矩陣M,由于 aij 和 aji 的對稱等價關系,一般將 aij 和 aji 設為一樣的值,均為 xi*xj 的系數的二分之一。這樣,矩陣M就是實對稱矩陣了。即二次型的矩陣默認都是實對稱矩陣
4. 關于二次型的標準化(正交變換法):
二次型的標準化是指通過構造一個n階可逆矩陣 C,使得向量 ( x1,x2.。.xn ) = C * (y1,y2.。.yn),把n維向量 x 變換成n維向量 y ,并代入f(x1,x2.。。.xn) 后得到 g(y1,y2.。.yn),而后者的表達式中的二次項中不包含任何交叉二次項 yi*yj(全部都是平方項 yi^2),也即表達式g的二次型矩陣N是對角陣。用公式表示一下 f 和 g ,(下面的表達式中 x 和 y都代表向量,x‘ 和 y’ 代表轉置)
f = x‘ * M * x ;
g = f = x’ * M * x = (Cy)‘ * M * (Cy) = y’ * (C‘MC) * y = y’ * N * y ;
因此 C‘MC = N。正交變換法,就是直接將M對角化得到N,而N中對角線的元素就是M的特征值。正交變換法中得到的 C 正好是一個正交矩陣,其每一列都是兩兩正交的單位向量,因此 C 的作用僅僅是將坐標軸旋轉(不會有放縮)。
OK,基礎知識補充完了,再來說說Harris角點檢測中的特征值是怎么回事。這里的 M 是
將M對角化后得到矩陣N,他們都是2階矩陣,且N的對角線元素就是本文中提到的 α 和 β。
本來 E(x,y) = A*x^2 + 2*C*x*y + B*y^2 ,而將其標準后得到新的坐標 xp和yp,這時表達式中就不再含有交叉二次項,新表達式如下:
E(x,y) = Ep (xp,yp) = α*xp^2 + β*yp^2,
我們不妨畫出 Ep (xp,yp) = 1 的等高線L ,即
α*xp^2 + β*yp^2 = 1 ,
可見這正好是(xp,yp)空間的一個橢圓,而α 和 β則分別是該橢圓長、短軸平方的倒數(或者反過來),且長短軸的方向也正好是α 和 β對應的特征向量的方向。由于(x,y)空間只是 (xp,yp)空間的旋轉,沒有放縮,因此等高線L在(x,y)空間也是一個全等的橢圓,只不過可能是傾斜的。
現在就能理解下面的圖片中出現的幾個橢圓是怎么回事了,圖(a)中畫的正是高度為 1 的等高線,(其他”高度“處的等高線也是橢圓,只不過長短軸的長度還要乘以一個系數)。其他的幾幅圖片中可以看到,“平坦”區域由于(高度)變化很慢,等高線(橢圓)就比較大;而”邊緣“區域則是在一個軸向上高度變化很快,另一個與之垂直的軸向上高度變化很慢,因此一個軸很長一個軸很短;“角點”區域各個方向高度都變化劇烈,因此橢圓很小。我們人眼可以直觀地看到橢圓的大小胖瘦,但如何讓計算機識別這三種不同的幾何特征呢?為了能區分出角點、邊緣和平坦區域我們現在需要用α 和 β構造一個特征表達式,使得這個特征式在三種不同的區域有明顯不同的值。一個表現還不錯的特征表達式就是:
(αβ) - k(α+β)^2
表達式中的 k 的值怎么選取呢?它一般是一個遠小于 1 的系數,opencv的默認推薦值是 0.04(=0.2的平方),它近似地表達了一個閾值:當橢圓短、長軸的平方之比(亦即α 和 β兩個特征值之比)小于這個閾值時,認為該橢圓屬于“一個軸很長一個軸很短”,即對應的點會被認為是邊緣區域。
對于邊緣部分,(假設較大的特征值為β)由于 β》》α且α《kβ,因此特征式 :
(αβ) - k(α+β)^2 ≈ αβ - kβ^2 《 (kβ)β - kβ^2 = 0
即邊緣部分的特征值小于0 ;
對于非邊緣部分,α 和 β相差不大,可認為 (α+β)^2 ≈ 4αβ,因此特征式:
(αβ) - k(α+β)^2 ≈ αβ - 4kαβ = ( 1 - 4k ) * αβ
由于 k 遠小于1,因此 1 - 4k ≈ 1,這樣特征式進一步近似為:
(αβ) - k(α+β)^2 ≈ αβ
在角點區域,由于α 和 β都較大,對應的特征式的值也就很大;而在平坦區域,特征式的值則很小。
因此,三種不同區域的判別依據就是: 如果特征表達式的值為負,則屬于邊緣區域;如果特征表達式的值較大,則屬于角點區域;如果特征表達式的值很小,則是平坦區域。
最后,由于αβ和(α+β)正好是M對角化后行列式和跡,再結合上面補充的基礎知識第2條中提到的行列式和跡在對角化前后不變,就可以得到 (αβ) - k(α+β)^2 = det(M) - k*Tr(M)^2,這就是Harris檢測的表達式。
評論
查看更多