1. 程式人生 > >MATLAB中關於影象特徵提取相關內容

MATLAB中關於影象特徵提取相關內容

一、影象的邊緣檢測及edge函式的Prewitt和Ganny運算元

①影象的邊緣:指其周圍畫素灰度急劇變化的那些畫素的集合,他是影象最基本的特徵。邊緣存在於目標,背景和區域之間,所以,它是影象分割所依賴的最重要的依據。由於邊緣是位置的標誌,對灰度的變化不敏感,因此邊緣也是影象匹配的重要特徵。

    邊緣檢測基本思想是先檢測影象中的邊緣點,在按照某種策略將邊緣點連線成輪廓,從而構成分割區域。

②Prewitt運算元是一種一階微分運算元的邊緣檢測,利用畫素點上下、左右鄰點的灰度差,在邊緣處達到極值檢測邊緣,去掉部分偽邊緣,對噪聲具有平滑作用 。其原理是在影象空間利用兩個方向模板與影象進行鄰域卷積來完成的,這兩個方向模板一個檢測水平邊緣,一個檢測垂直邊緣。

對數字影象f(x,y),Prewitt運算元的定義如下:

G(i)=|[f(i-1,j-1)+f(i-1,j)+f(i-1,j+1)]-[f(i+1,j-1)+f(i+1,j)+f(i+1,j+1)]|

G(j)=|[f(i-1,j+1)+f(i,j+1)+f(i+1,j+1)]-[f(i-1,j-1)+f(i,j-1)+f(i+1,j-1)]|

則 P(i,j)=max[G(i),G(j)]或 P(i,j)=G(i)+G(j)

經典Prewitt運算元認為:凡灰度新值大於或等於閾值的畫素點都是邊緣點。即選擇適當的閾值T,若P(i,j)≥T,則(i,j)為邊緣點,P(i,j)為邊緣影象。這種判定是欠合理的,會造成邊緣點的誤判,因為許多噪聲點的灰度值也很大,而且對於幅值較小的邊緣點,其邊緣反而丟失了。

③Ganny邊緣檢測運算元是邊緣檢測運算元中最常用的一種,也是公認的效能優良的邊緣檢測運算元,但它實現起來較為麻煩,Canny運算元是一個具有濾波,增強,檢測的多階段的優化運算元,在進行處理前,Canny運算元先利用高斯平滑濾波器來平滑影象以除去噪聲,Canny分割演算法採用一階偏導的有限差分來計算梯度幅值和方向,在處理過程中,Canny運算元還將經過一個非極大值抑制的過程,最後Canny運算元還採用兩個閾值來連線邊緣。

Canny邊緣檢測演算法

step1: 用高斯濾波器平滑圖象;

step2: 用一階偏導的有限差分來計算梯度的幅值和方向;

step3: 對梯度幅值進行非極大值抑制

step4: 用雙閾值演算法檢測和連線邊緣

相關例題

I=imread('circuit.tif');%讀入影象
BW1=edge(I,'prewitt');%採用prewitt運算元進行邊緣檢測
BW2=edge(I,'canny');%採用canny運算元進行邊緣檢測
subplot(1,2,1),imshow(BW1);%顯示
subplot(1,2,2),imshow(BW2);

二、角點特徵檢測及Harris角點的基本原理

①何謂“角點”:對角點可以從兩個不同的角度定義:角點是鄰域內具有兩個主方向的特徵點。角點所在的鄰域通常也是影象中最穩定的,資訊最豐富的區域,這些領域可能具有某些特徵,如旋轉不變性、尺度不變性、仿射不變性和光照亮度不變性。因此在計算機視覺和數字影象領域,研究角點具有重要的意義。

②Harris角點的基本原理:

人眼對角點的識別通常是在一個區域性的小區域或小視窗完成的。如果在各個方向上移動這個特徵的小視窗,視窗內區域的灰度發生了較大的變化,那麼就認為在視窗內遇到了角點。如果這個特定的視窗在影象各個方向上移動時,視窗內影象的灰度沒有發生變化,那麼視窗內就不存在角點;如果視窗在某一個方向移動時,視窗內影象的灰度發生了較大的變化,而在另一些方向上沒有發生變化,那麼,視窗內的影象可能就是一條直線的線段。

對於影象I(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))2



其中,W(x,y)是以點(x,y)為中心的視窗,w(u,v)為加權函式,它既可是常數,也可以是高斯加權函式。

根據泰勒展開,對影象I(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)Δy



其中,Ix,Iy是影象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]



其中


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]



也就是說影象I(x,y)在點(x,y)處平移(Δx,Δy)後的自相關函式可以近似為二項函式:


c(x,y;Δx,Δy)≈AΔx2+2CΔxΔy+BΔy2



其中


A=∑wI2x,B=∑wI2y,C=∑wIxIy



二次項函式本質上就是一個橢圓函式。橢圓的扁率和尺寸是由M(x,y)的特徵值λ1、λ2決定的,橢賀的方向是由M(x,y)的特徵向量決定的,如下圖所示,橢圓方程為:


[Δx,Δy]M(x,y)[ΔxΔy]=1

橢圓函式特徵值與影象中的角點、直線(邊緣)和平面之間的關係如下圖所示。共可分為三種情況:
影象中的直線。一個特徵值大,另一個特徵值小,λ1?λ2或λ2?λ1。自相關函式值在某一方向上大,在其他方向上小。
影象中的平面。兩個特徵值都小,且近似相等;自相關函式數值在各個方向上都小。
影象中的角點。兩個特徵值都大,且近似相等,自相關函式在所有方向都增大。

根據二次項函式特徵值的計算公式,我們可以求M(x,y)矩陣的特徵值。但是Harris給出的角點差別方法並不需要計算具體的特徵值,而是計算一個角點響應值R來判斷角點。R的計算公式為:

R=detM?α(traceM)2

式中,detM為矩陣M=[ABBC]的行列式;traceM為矩陣M的直跡;α為經常常數,取值範圍為0.04~0.06。事實上,特徵是隱含在detMtraceM中,因為,

detM=λ1λ2=AC?B2 traceM=λ2+λ2=A+C

③Harris角點的性質:

1. 引數α對角點檢測的影響

假設已經得到了矩陣M的特徵值λ1λ20,令λ2=kλ1,0k1。由特徵值與矩陣M的直跡和行列式的關係可得:

detM=iλitraceM=iλi

從而可以得到角點的響應

R=λ2λ2=α(λ2+λ2)2=λ2(k?α(1+k)2)

假設R0,則有:

0αk(1+k)20.25

對於較小的k值,Rλ2(k?α),α<k

由此,可以得出這樣的結論:增大α的值,將減小角點響應值R,降低角點檢測的靈性,減少被檢測角點的數量;減小α值,將增大角點響應值R,增加角點檢測的靈敏性,增加被檢測角點的數量。

2. Harris角點檢測運算元對亮度和對比度的變化不敏感

這是因為在進行Harris角點檢測時,使用了微分運算元對影象進行微分運算,而微分運算對影象密度的拉昇或收縮和對亮度的擡高或下降不敏感。換言之,對亮度和對比度的仿射變換並不改變Harris響應的極值點出現的位置,但是,由於閾值的選擇,可能會影響角點檢測的數量。

3. Harris角點檢測運算元具有旋轉不變性

Harris角點檢測運算元使用的是角點附近的區域灰度二階矩矩陣。而二階矩矩陣可以表示成一個橢圓,橢圓的長短軸正是二階矩矩陣特徵值平方根的倒數。當特徵橢圓轉動時,特徵值並不發生變化,所以判斷角點響應值R也不發生變化,由此說明Harris角點檢測運算元具有旋轉不變性。

4. Harris角點檢測運算元不具有尺度不變性

如下圖所示,當右圖被縮小時,在檢測視窗尺寸不變的前提下,在視窗內所包含影象的內容是完全不同的。左側的影象可能被檢測為邊緣或曲線,而右側的影象則可能被檢測為一個角點。

相關例題

I=imread('pout.tif');%確定待檢測的影象區域並顯示
I=I(1:150,1:120);
subplot(1,2,1);
imshow(I);
title('輸入影象');
CM=cornermetric(I);%對影象進行Harris角點提取
corner_peaks=imregionalmax(CM);%查詢矩陣中最大值並顯示
corner_idx=find(corner_peaks==true);
[r g b]=deal(I);
r(corner_idx)=255;
g(corner_idx)=255;
b(corner_idx)=0;
RGB=cat(3,r,g,b);
subplot(1,3,3);
imshow(RGB);
title('影象中的角點');


三、SURF特徵提取簡介

計算機視覺中,引入尺度不變的特徵,主要的思想是每個檢測到的特徵點都伴隨著對應的尺寸因子。當我們想匹配不同影象時,經常會遇到影象尺度不同的問題,不同影象中特徵點的距離變得不同,物體變成不同的尺寸,如果我們通過修正特徵點的大小,就會造成強度不匹配。為了解決這個問題,提出一個尺度不變的SURF特徵檢測,在計算特徵點的時候把尺度因素加入之中。SURF與SIFT演算法相似,SIFT演算法比較穩定,檢測特徵點更多,但是複雜度較高,而SURF要運算簡單,效率高,運算時間短一點。

為了實現尺度不變性的特徵點檢測與匹配,SURF演算法則先利用Hessian矩陣確定候選點,然後進行非極大抑制,計算複雜度降低多了。整個演算法由以下幾個部分組成。

Hessian黑森矩陣構建

尺度空間生成

利用非極大值抑制初步確定特徵點和精確定位特徵點

選取特徵點主方向確定

⑸構造SURF特徵點描述運算元