图像处理理论(六)——Harris, Eigenface
Harris
角點
角點是圖像很重要的特征,對圖像圖形的理解和分析有很重要的作用。角點在保留圖像圖形重要特征的同時,可以有效地減少信息的數據量,使其信息的含量很高,有效地提高了計算的速度,有利于圖像的可靠匹配,使得實時處理成為可能。角點在三維場景重建運動估計,目標跟蹤、目標識別、圖像配準與匹配等計算機視覺領域起著非常重要的作用。
下面有兩幅不同視角的圖像,通過找出對應的角點進行匹配。
我們可以直觀的概括下角點所具有的特征:
輪廓之間的交點;
對于同一場景,即使視角發生變化,通常具備穩定性質的特征;
該點附近區域的像素點無論在梯度方向上還是其梯度幅值上有著較大變化;
角點匹配(corner matching)是指尋找兩幅圖像之間的特征像素點的對應關系,從而確定兩幅圖像的位置關系。
角點匹配可以分為以下四個步驟:
提取檢測子:在兩張待匹配的圖像中尋找那些最容易識別的像素點(角點),比如紋理豐富的物體邊緣點等。
提取描述子:對于檢測出的角點,用一些數學上的特征對其進行描述,如梯度直方圖,局部隨機二值特征等。檢測子和描述子的常用提取方法有:sift, harris, surf, fast, agast, brisk, freak, brisk,orb等。
匹配:通過各個角點的描述子來判斷它們在兩張圖像中的對應關系。常用方法如flann。
去外點:去除錯誤匹配的外點,保留正確的內點。常用方法有Ransac, GTM。
這里我們只介紹最常用的Harris算子。
Harris Corner Detector
Harris Corner Detector是Chris Harris和Mike Stephens于1988年提出的算子。
論文:
《A Combined Corner and Edge Detector》
如上圖所示。人眼對角點的識別通常是在一個局部的小區域或小窗口完成的。如果在各個方向上移動這個特征的小窗口,窗口內區域的灰度發生了較大的變化,那么就認為在窗口內遇到了角點。如果這個特定的窗口在圖像各個方向上移動時,窗口內圖像的灰度沒有發生變化,那么窗口內就不存在角點;如果窗口在某一個方向移動時,窗口內圖像的灰度發生了較大的變化,而在另一些方向上沒有發生變化,那么,窗口內的圖像可能就是一條直線的線段。
對于圖像I(x,y)I(x,y),當在點(x,y)處平移(Δx,Δy)(Δx,Δy)后的自相似性,可以通過自相關函數給出:
c(x,y;Δx,Δy)=∑(u,v)∈W(x,y)w(u,v)(I(u,v)–I(u+Δx,v+Δy))2c(x,y;Δx,Δy)=∑(u,v)∈W(x,y)w(u,v)(I(u,v)–I(u+Δx,v+Δy))2
其中,W(x,y)W(x,y)是以點(x,y)為中心的窗口,w(u,v)w(u,v)為加權函數,它既可是常數,也可以是高斯加權函數。
根據泰勒展開,對圖像I(x,y)I(x,y)在平移(Δx,Δy)(Δx,Δy)后進行一階近似:
I(u+Δx,v+Δy)=I(u,v)+Ix(u,v)Δx+Iy(u,v)Δy+O(Δx2,Δy2)≈I(u,v)+Ix(u,v)Δx+Iy(u,v)ΔyI(u+Δx,v+Δy)=I(u,v)+Ix(u,v)Δx+Iy(u,v)Δy+O(Δx2,Δy2)≈I(u,v)+Ix(u,v)Δx+Iy(u,v)Δy
其中,Ix,IyIx,Iy是圖像I(x,y)I(x,y)的偏導數,則自相關函數可簡化為:
c(x,y;Δx,Δy)≈∑w(Ix(u,v)Δx+Iy(u,v)Δy)2=[Δx,Δy]M(x,y)[ΔxΔy]c(x,y;Δx,Δy)≈∑w(Ix(u,v)Δx+Iy(u,v)Δy)2=[Δx,Δy]M(x,y)[ΔxΔy]
其中:
M(x,y)=∑w[Ix(x,y)2Ix(x,y)Iy(x,y)Ix(x,y)Iy(x,y)Iy(x,y)2]=[∑wIx(x,y)2∑wIx(x,y)Iy(x,y)∑wIx(x,y)Iy(x,y)∑wIy(x,y)2]=[ACCB]M(x,y)=∑w[Ix(x,y)2Ix(x,y)Iy(x,y)Ix(x,y)Iy(x,y)Iy(x,y)2]=[∑wIx(x,y)2∑wIx(x,y)Iy(x,y)∑wIx(x,y)Iy(x,y)∑wIy(x,y)2]=[ACCB]
即:
c(x,y;Δx,Δy)≈AΔx2+2CΔxΔy+BΔy2c(x,y;Δx,Δy)≈AΔx2+2CΔxΔy+BΔy2
其中:
A=∑wI2x,B=∑wI2y,C=∑wIxIyA=∑wIx2,B=∑wIy2,C=∑wIxIy
二次項函數本質上就是一個橢圓函數。橢圓的扁率和尺寸是由M(x,y)的特征值λ1,λ2λ1,λ2決定的,軸向是由M(x,y)的特征矢量決定的,如下圖所示,橢圓方程為:
[Δx,Δy]M(x,y)[ΔxΔy]=1[Δx,Δy]M(x,y)[ΔxΔy]=1
橢圓函數特征值與圖像中的角點、直線(邊緣)和平面之間的關系如下圖所示。共可分為三種情況:
圖像中的直線。一個特征值大,另一個特征值小,λ1?λ2λ1?λ2或λ2?λ1λ2?λ1。自相關函數值在某一方向上大,在其他方向上小。
圖像中的平面。兩個特征值都小,且近似相等;自相關函數數值在各個方向上都小。
圖像中的角點。兩個特征值都大,且近似相等,自相關函數在所有方向都增大。
根據二次項函數特征值的計算公式,我們可以求M(x,y)矩陣的特征值。但是Harris給出的角點差別方法并不需要計算具體的特征值,而是計算一個角點響應值R來判斷角點。R的計算公式為:
R=detM?α(traceM)2R=detM?α(traceM)2
式中,detMdetM為矩陣M=[ABBC]M=[ABBC]的行列式;traceMtraceM為矩陣M的直跡;αα為經驗常數,取值范圍為0.04~0.06。事實上,特征是隱含在detMdetM和traceMtraceM中,因為,
detM=λ1λ2=AC?B2detM=λ1λ2=AC?B2
traceM=λ2+λ2=A+CtraceM=λ2+λ2=A+C
Harris角點的性質
增大αα的值,將減小角點響應值R,降低角點檢測的靈性,減少被檢測角點的數量;減小αα值,將增大角點響應值R,增加角點檢測的靈敏性,增加被檢測角點的數量。
Harris角點檢測算子對亮度和對比度的變化不敏感。這是因為在進行Harris角點檢測時,使用了微分算子對圖像進行微分運算,而微分運算對圖像密度的拉升或收縮和對亮度的抬高或下降不敏感。換言之,對亮度和對比度的仿射變換并不改變Harris響應的極值點出現的位置。
Harris角點檢測算子使用的是角點附近的區域灰度二階矩矩陣。而二階矩矩陣可以表示成一個橢圓,橢圓的長短軸正是二階矩矩陣特征值平方根的倒數。當特征橢圓轉動時,特征值并不發生變化,所以判斷角點響應值R也不發生變化,由此說明Harris角點檢測算子具有旋轉不變性。
Harris角點檢測算子不具有尺度不變性。如下圖所示,當右圖被縮小時,在檢測窗口尺寸不變的前提下,在窗口內所包含圖像的內容是完全不同的。左側的圖像可能被檢測為邊緣或曲線,而右側的圖像則可能被檢測為一個角點。
為了解決尺度不變性問題,可以使用多尺度Harris角點算法,將Harris角點檢測算子與高斯尺度空間表示相結合,使其具有尺度不變性:
M=μ(x,σI,σD)=σ2Dg(σI)?[L2x(x,σD)LxLy(x,σD)LxLy(x,σD)L2y(x,σD)]M=μ(x,σI,σD)=σD2g(σI)?[Lx2(x,σD)LxLy(x,σD)LxLy(x,σD)Ly2(x,σD)]
參考
http://blog.csdn.net/lwzkiller/article/details/54633670
Harris角點檢測原理詳解
http://www.cnblogs.com/ronny/p/4009425.html
Harris角點
https://blog.csdn.net/davebobo/article/details/52598850
檢測并匹配興趣點
https://blog.csdn.net/songzitea/article/details/17969375
角點匹配方法
Eigenface
Eigenface是M. Turk和A. Pentland于1991年提出的人臉識別算法。
Matthew A. Turk,Virginia Tech本科(1982)+CMU碩士(1984)+MIT博士(1991)。UCSB教授。
Alex Paul “Sandy” Pentland,1952年生,MIT博士(1982)。MIT教授。
論文:
《Face recognition using eigenfaces》
計算Eigenface
Step 1:假設有M張訓練照片I1,…,IMI1,…,IM,每張照片的尺寸為NxN,將照片IiIi轉換成1維vector ΓiΓi。顯然,ΓiΓi的大小是N2N2。
Step 2:計算均值vector ΨΨ(也就是常說的平均臉(average face/mean face)):
Ψ=1M∑i=1MΓiΨ=1M∑i=1MΓi
Step 3:計算圖片與均值的差:
Φi=Γi?ΨΦi=Γi?Ψ
Step 4:計算協方差矩陣:
C=1M∑n=1MΦnΦTn=AAT(N2×N2matrix)C=1M∑n=1MΦnΦnT=AAT(N2×N2matrix)
Step 5:計算的AATAAT特征向量uiui。然而,AATAAT太大了,我們只能退而求其次計算ATA(M×Mmatrix)ATA(M×Mmatrix)的特征向量vivi。
那么uiui和vivi到底有什么關系呢?我們首先根據特征向量的定義,給出下式:
ATAvi=μiviATAvi=μivi
其中,μiμi是ATAATA的特征值。
ATAvi=μivi?AATAvi=μiAvi?CAvi=μiAviATAvi=μivi?AATAvi=μiAvi?CAvi=μiAvi
令ui=Aviui=Avi,則:
Cui=μiuiCui=μiui
可見μiμi同時也是AATAAT的特征值,而對應的特征向量則是AviAvi。
實際上,ATAATA的M個特征值,就是AATAAT的前M大的特征值。
Step 6:從中選出K個最大的特征向量供后續使用。
使用Eigenface
Step 1:給定圖片ΓΓ,計算:
Φ=Γ?ΨΦ=Γ?Ψ
Step 2:將ΦΦ映射到K維特征向量空間:
Ω=[w1,…,wK]TΩ=[w1,…,wK]T
Step 3:計算與圖片l的距離:
er=‖Ω?Ωl‖er=‖Ω?Ωl‖
當er<Trer<Tr時,就認為是同一張人臉。
這里的距離可以是歐氏距離,但作者指出使用馬式距離效果更佳。
綜上,Eigenface實際上就是PCA在人臉識別上的應用。
Eigenface的缺點
1.訓練圖片中人臉需要對齊,且圖片大小一致。
2.Eigenface對于大數據集的計算效率不佳。在Eigenface出現的年代,數字圖片尚不多見,因此,數據集普遍較小。但現在即便是mini數據集也動輒上萬張圖片,甚至M>N2M>N2的情況也不罕見。而對超大矩陣進行SVD分解,是個很吃計算量的事情,這也限制了Eigenface的應用。
參考
http://blog.csdn.net/smartempire/article/details/21406005
特征臉方法(Eigenface)
http://vision.jhu.edu/teaching/vision08/Handouts/case_study_pca1.pdf
Eigenfaces for Face Detection/Recognition
http://www.cnblogs.com/little-monkey/p/8118938.html
人臉識別算法——EigenFace、FisherFace、LBPH
LBP
LBP(Local Binary Patterns)算法是Matti Kalevi Pietik?inen于1994年提出的方法,后來被用到了人臉識別領域。
Matti Kalevi Pietik?inen,University of Oulu博士(1982)、教授。
Timo Ojala,Pietik?inen的博士生?,F亦為University of Oulu教授。
論文:
《Face Recognition with Local Binary Patterns》
LBP特征提取
最初的LBP是定義在像素3x3鄰域內的,以鄰域中心像素為閾值,將相鄰的8個像素的灰度值與其進行比較,若周圍像素值大于中心像素值,則該像素點的位置被標記為1,否則為0。這樣,3x3鄰域內的8個點經比較可產生8位二進制數(通常轉換為十進制數即LBP碼,共256種),即得到該鄰域中心像素點的LBP值,并用這個值來反映該區域的紋理信息。如下圖所示:
即:
LBP(xc,yc)=∑p=0P?12ps(ip?ic)LBP(xc,yc)=∑p=0P?12ps(ip?ic)
其中,c表示中心元素,p表示領域內的其它元素。
s(x)={1,0,if?x≥0elses(x)={1,if?x≥00,else
總結
以上是生活随笔為你收集整理的图像处理理论(六)——Harris, Eigenface的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 图像处理理论(五)——SIFT
 - 下一篇: 图像处理理论(七)——LBP, Fish