數字圖像處理筆記(十三):圖像特徵表示和描述

1 - 引言

在我們進行圖像識別的時候,往往是將圖片中的特徵來表示整張圖片讓計算機進行識別,基本上表示一個區域涉及兩種選擇:

  1. 外部特徵
  2. 內部特徵

下一步就是基於所選擇的表示來描述區域

當我們關注的重點是形狀特徵時,可選擇一種外部表示;而當關注的重點是內部屬性如顏色和紋理時,可以選擇一種內部表示。無論哪種情形,選擇用來作爲描繪子的特徵都應儘可能地對大小、平移和旋轉不敏感

2 - 表示

圖像分割技術以沿着邊界或包含在區域中的像素的形式產生原始數據,標準做法是使用某種方案將分割後的數據精簡爲更便於描繪子計算的表示。下面讓我們學習一下各種表示方法

2.1 - 邊界追蹤算法

該算法輸出的是排序後的點序列,我們假設:

  1. 處理的是二值圖像,其目標和背景點分別標位1和0
  2. 圖像已使用值爲0的邊界填充,因而消除了目標與圖像邊界合併的可能性

給定一個二值區域R或其邊界,追蹤R的邊界或給定邊界的算法由如下步驟組成:

  1. 令起始點b0b_0爲圖像中左上角標記爲1的點。使用c0c_0表示b0b_0西側的鄰點。從c0c_0開始按順時針方向考察b0b_0的8個鄰點。令b1b_1表示所遇到的值爲1的第一個鄰點,並直接令c1c_1是序列中b1b_1之前的點。存儲b0b_0b1b_1的位置,以便在步驟5中使用
  2. b=b1b=b_1c=c1c=c_1
  3. 從c開始按順時針方向行進,令b的8個鄰點爲n1,n2,,n8n_1,n_2,\dots,n_8找到標記爲1的第一個nkn_k
  4. b=nkb=n_kc=nk1c=n_{k-1}
  5. 重複步驟3和步驟4
    當算法停止時,所找到的b點的序列就構成了排列後的邊界點的集合

在這裏插入圖片描述

2.2 - 佛雷曼(Freeman)鏈碼

鏈碼用於表示由順次連接的具有指定長度和方向的直線段組成的邊界。這種表示基於這些線段的4連接或8連接。每個線段的方向使用一種數字編號方案編碼,如圖所示,以這種方向性數字序列表示的編碼稱爲佛雷曼(Freeman)鏈碼。
鏈碼的一次差分爲,通過計算鏈碼中分隔兩個相鄰像素的方向變化的數(按逆時針方向計算前一個數字變化到後一個數字所需的步數),其中第一元素是通過使用鏈碼的最後一個元素和第一個元素間的轉變來計算得到的。例如,4方向鏈碼0231,得到的一次差分爲3212,其中3爲1逆時針轉到0需3步;2爲0逆時針轉到2需2步;1爲2逆時針轉到3需1步;2爲3逆時針轉到1需2步。

在這裏插入圖片描述

2.3 - 使用最小周長多邊形的多邊形近似(MPP)

一副圖像我們可以用多邊形擬合它的形狀。
在這裏插入圖片描述
我們的目的就是使用合適的最大可能單元大小,以最少的定點數來生產MPP,並且我們可以發現構成邊界的多邊形每個轉向要麼是一個凸定點,要麼是一個凹頂點。
注意的是凹頂點(黑色)有一個對應的“鏡像”頂點,位於凹頂點的對角處
在這裏插入圖片描述
因此,我們的算法就只需要關注這些頂點

MPP算法

令W(白)和B(黑)分別表示凸頂點鏡像凹頂點
尋找MMP的算法使用兩個“爬行”點:

  • 白色的爬行墊(WcW_c):WcW_c沿凸頂點(w)爬行
  • 黑色的爬行墊(BcB_c):BcB_c沿鏡像凹頂點(B)爬行。

算法首先令Wc=Bc=V0W_c=B_c=V_0v0v_0是一個MPP頂點),VLV_L表示最後一個MPP頂點,VkV_k表示正在考察的當前頂點。
sgn(a,b,c)det(A)sgn(a,b,c)\equiv det(A)
(det(A)是A的行列式)
VL,VkV_L,V_k和兩個爬行點之間存在如下三個條件之一:

  1. VkV_k位於通過VL,Wc(V_L,W_c)的直線的正的一側,即sgn(WL,Wc,Vk)>0sgn(W_L,W_c,V_k)>0
  2. VkV_k位於通過VL,Wc(V_L,W_c)的直線的負的一側,或者VkV_kVL,Wc(V_L,W_c)共線,即sgn(WL,Wc,Vk)0sgn(W_L,W_c,V_k)\leq 0。同時,VkV_k位於通過(VL,Bc)(V_L,B_c)的直線的正的一側,或者VkV_k(VL,Bc)(V_L,B_c)共線,即sgn(VL,Bc,Vk)0sgn(V_L,B_c,V_k)\geq 0
  3. VkV_k位於通過VL,Bc(V_L,B_c)的直線的負的一側,即sgn(VL,Bc,Vk)<0sgn(V_L,B_c,V_k)<0

如果條件1成立,則下一個MPP頂點是WCW_C並且我們令VL=WcV_L=W_c;然後我們令Wc=Bc=VLW_c=B_c=V_L來重新初始化該算法,並在VLV_L之後的下一個頂點繼續執行算法

如果條件2成立,則VkV_k編程一個候選的MPP頂點。在這種情況下,如果VkV_k是凸頂點,則令Wc=VkW_c=V_k;否則,我們置Bc=VkB_c=V_k然後,我們使用列表中的下一頂點繼續執行算法

如果條件3成立,則下一個MPP頂點是BcB_c,並且令VL=BcV_L=B_c;然後我們令Wc=Bc=VLW_c=B_c=V_L來重新初始化該算法,並用VLV_L之後的下一個頂點繼續執行算法

當算法再次到達第一個頂點時,算法結束,此時算法已經處理了多邊形中的所有頂點。

3 - 邊界描繪子

3.1 - 一些簡單的描述子

  1. 邊界的長度
    邊界的長度是最簡的描述子之一。一條邊界上的像素數量可以給出其長度的粗略近似。
  2. 邊界的長軸與短軸
    邊界B的直徑定義爲
    Diam(B)=maxij[D(pi,pj)]Diam(B)=max_{ij}[D(p_i,p_j)]
    pi,pjp_i,p_j是邊界上的點,Dpj,pjD(p_j,p_j)是定義pip_ipjp_j之間的距離。直徑的值和連接組成該直徑兩個端點的直線段(該直線稱爲邊界的長軸)的方向是邊界的有用描述子,邊界的短軸定義爲與長軸垂直的直線,且由邊界與兩個軸相交的4個外部點所組成的方框(該方框稱爲基本矩形),可以全完包圍該邊界
  3. 邊界的偏向率
    長軸與短軸之比成爲邊界的偏心率

3.2 - 形狀數

鏈碼邊界的一次差分取決於起始點。一條基於鏈碼的邊界的形狀數,定義爲最小量級的一次差分,即對鏈碼的一次差分進行循環,得到的值最小的差分碼爲形狀數。

3.3 - 傅里葉描述子

下圖顯示了xy平面內的一個K點數字邊界,從任意點x0y0(x_0,y_0)開始,以逆時針方向在該邊界上行進時,會遇到座標對x0,y0,(x1,y1),(x2,y2),,(xk1,yk1)(x_0,y_0),(x_1,y_1),(x_2,y_2),\dots,(x_{k-1},y_{k-1})這些座標可以表示爲x(k)=xk,y(k)=ykx(k)=x_k,y(k)=y_k的形式,此外,每個座標都可當做一個複數來處理

s(k)=x(k)+jy(k)s(k)=x(k)+jy(k)
式中有k=0,1,2,,K1k=0,1,2,\dots,K-1
s(k)的傅里葉變換爲
a(u)=k=0K1s(k)ej2πuk/Ka(u)=\sum_{k=0}^{K-1}s(k)e^{-j2\pi uk/K}
式中u=0,1,2,,K1u=0,1,2,\dots,K-1復係數a(u)a(u)稱爲邊界的傅里葉描述子。這些係數的傅里葉反變換可恢復s(k)
s(k)=1Ku=0K1a(u)ej2πuk/Ks(k)=\frac{1}{K}\sum_{u=0}^{K-1}a(u)e^{j2\pi uk/K}

然而,假設僅使用前P個傅里葉係數而不使用所有係數,等同於上式中令a(u)=0,u>P1a(u)=0,u>P-1結果s(k)s(k)的如下近似:
s^(k)=1Ku=0P1a(u)ej2πuk/P\hat s(k)=\frac{1}{K}\sum_{u=0}^{P-1}a(u)e^{j2\pi uk/P}

儘管求s^(k)\hat s(k)的每個成分時僅使用了P項,但k的範圍仍然是從0到K-1,也就是說,在近似邊界中存在同樣數量的點,但項數不像在每個點的重建中那麼多

由於高頻成分說明精細細節,而低頻成分決定全局形狀,因此P越小,邊界丟失的細節就越多

在這裏插入圖片描述

3.4 - 統計矩

如圖(a),它顯示了一段邊界,圖(b)顯示了以任意變量rr的一維函數g(r)g(r)描述的線段,該函數是這樣獲得的:先將該線段的兩個端點連接,然後旋轉該直線,直至其爲水平線段,此時所有的點的座標也旋轉同樣的角度

g(r)g(r)歸一化爲單位面積,並把它當作直方圖來處理,換句話說,g(ri)g(r_i)現在作爲值rir_i出現的概率來處理,此時,r爲一個隨機變量,故n階矩爲
un(r)=i=0K1(rim)ng(ri)u_n(r)=\sum_{i=0}^{K-1}(r_i-m)^ng(r_i)
式中,m=i=0K1rig(ri)m = \sum_{i=0}^{K-1}r_ig(r_i)

K是邊界上的點數,un(r)u_n(r)直接與g(r)g(r)的形狀相關。例如,二階矩u2(r)u_2(r)度量曲線關於r的均值擴展程度,而三階矩u3ru_3(r)度量曲線關於均值的對稱性

在這裏插入圖片描述

4 - 區域描述子

4.1 - 簡單的區域描述子

  1. 區域的面積
    區域的面積定義爲該區域中像素的數量
  2. 區域的周長
    區域的周長是其邊界的長度
  3. 緻密性
    緻密性定義爲(周長)2/^2/面積
  4. 圓周率
    圓周率即一個區域的面積與具有相同周長的一個圓(最緻密形狀)的面積之比。周長爲P的一個圓的面積P2/4πP^2/4\pi。因此,圓周率RcR_c由下式給出:
    Rc=4πAp2R_c=\frac{4\pi A}{p^2}
    A是所討論的區域面積,P是其周長
  5. 其他
    用作區域描述子的其他簡單測度包括灰度值的均值和中值,最小灰度值和最大灰度值,以及其高於和低於均值的像素數

4.2 - 拓撲描述子

拓撲學研究未受任何變形影響的圖形的特質,前提是該圖形未被撕裂或粘連。
例如,圖(a)顯示了一個帶有兩個孔洞的區域。如果一個拓撲描述子由該區域內的孔洞數量來定義,那麼這種性質明顯不受拉伸或旋轉變換的影響。
另一個對區域描述有用的拓撲特性是連通分量的數量。如圖4(b)顯示了一個具有3個連通分量的區域。

在這裏插入圖片描述

圖形中孔洞的數量 H 和連通分量的數量 C ,可用於定義歐拉數 E :E = C - H

歐拉數也是一種拓撲特性。例如,圖所示的區域有分別等於 0 和 −1 的歐拉數。
在這裏插入圖片描述

4.3 - 紋理

描繪區域的一種總要方法是量化該區域的紋理內容

出現處理中用於描述區域紋理的三種主要方法是:

  1. 統計方法(平滑、粗糙、粒狀的等紋理特徵)
  2. 結構方法(像元的排列,如基於規則間距平行線的紋理描述)
  3. 頻譜方法(基於傅里葉頻譜特性,主要用於檢測圖像中的全局週期性,方法是識別頻譜中的高能量的窄波峯)

4.3.1 - 統計方法

描述紋理的最簡單方法之一是使用一副圖像或一個區域的灰度級直方圖的統計矩。令Z是表示灰度的一個隨機變量,並令p(zi),i=0,1,2,,L1p(z_i),i=0,1,2,\dots,L-1爲相應的直方圖,其中L是不同灰度級的數量,關於其均值的Z的第n階矩爲
un(z)=i=0L1(zim)np(zi)u_n(z)=\sum_{i=0}^{L-1}(z_i-m)^np(z_i)
m是z的均值(平均灰度)
m=i=0L1zip(zi)m=\sum_{i=0}^{L-1}z_ip(z_i)

注意u0=1,u1=0u_0=1,u_1=0二階矩[方差σ2(z)=uz(z)\sigma^2(z)=u_z(z)]在紋理描述中特別重要。它是灰度對比度的度量,可用於建立相對平灰度的描述子,例如度量
R(z)=111+σ2(z)R(z)=1-\frac{1}{1+\sigma^2(z)}
對於恆定灰度區域爲0(該區域方差爲0),而對於較大的sigma2(z)sigma^2(z)值,其接近於1,因爲對灰度級圖像方差值增大而增大的。

三階矩是直方圖偏斜度的度量,而四階矩是直方圖相對平坦度的度量,五階矩和更高階矩不容易與直方圖形狀聯繫起來,但它們的確提供了紋理內容的進一步量化辨別。

在這裏插入圖片描述

使用直方圖計算得到的紋理度量不懈怠像素彼此之間的相對位置的信息,但是這個信息很重要,所以我們使用一種方法叫共生矩陣

令Q是定義兩個像素彼此相對位置的一個算子,並考慮一副具有L個可能灰度級的圖像f,令G爲一個矩陣,其元素gijg_{ij}是灰度爲ziz_izjz_j的像素對出現在f中有Q所指定的位置處的次數,按照這種方法形成的矩陣成爲灰度共生矩陣

在這裏插入圖片描述

在這裏插入圖片描述

4.3.2 - 結構方法

結構法的基本思想是,一個簡單的“紋理基元”可藉助一些規則用於形成更復雜的紋理模式,這些規則限制基元(或這些基元)的可能排列的數量。

4.3.3 - 頻譜方法

對紋理描述有用的傅里葉頻譜的三個特徵:

  1. 頻譜中突出的尖峯給出紋理模式的主要方向;
  2. 頻率平面中尖峯的位置給出模式的基本空間週期;
  3. 採用濾波方法消除任何週期成分而留下非週期性圖像元素,然後採用統計技術來描述。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章