Transcript Document
第七章
紋理描述與分類
1
內容
7.1 前言
7.2 鍊碼
7.3 多邊形估計
7.3.1 PA-#
7.3.2 PA-ε
7.4 對稱軸偵測
7.5 細化
7.6 同現矩陣
7.7 支持向量式的紋理分類
7.8 Adaboost分類法
2
7.1 前言
描述一張影像內物體的形狀和其紋理。影
像的形狀和紋理描述在影像資料庫的檢索
和圖形識別上都直接的影響其方法的適用
性。
3
7.2 鍊碼
鍊碼(Chain Codes)用來描述影像中物體的外圍。
常用的方位有四方位和八方位。
1
2
3
2
0
1
0
4
7
5
3
圖7.2.1 四方位鍊碼
6
圖7.2.2 八方位鍊碼
4
差分鍊碼
差分鍊碼上的第 i 個碼為原先鍊碼上之第 i 個碼減去第 (i-1) 個碼。
形狀數(Shape Number)
將差分鍊碼看成環型,針對每一個碼將環型鍊碼剪開,比較每一
個鍊碼的大小,最小的鍊碼謂之。
2
0
7
1
6
6
2
1
6
2
S
一個例子:
八方位鍊碼的字串為212120766665533
差分鍊碼為771716770007060
形狀數為000706077171677
6
3
5
3
5
圖7.2.3
一個鍊碼的例子
5
7.3. 多邊形估計
7.3.1 PA-#
問題定義
只允許用最少量的連續線段來表示該物體的外緣,但必需滿足
事先設定的誤差。這個多邊形估計的問題叫PA-#問題。
誤差量度
區域平方累積誤差(Local Integral Square Error),簡稱LISE。
Pi+1
Pi
Pj-1
Pj
LISE也可以看成所有,i 1 k j 1,到直線 PP
的距離平方和。
i j
6
假設在二維空間上有n個點形成的物體外緣,我們以集
合{Pk = (xk , yk), k = 1, 2, 3,…, n} 代表之。令LISE為
j 1
d ij d 2 ( Pk , Pi Pj )
k i 1
7
(a) = 10,#=27
(b) = 20,#=19
圖 7.3.1.2 PA-#的實作結果
8
7.3.2 PA-ε
問題定義
在事先設定的線段數量下,找出一個多邊形估計以便達到最小
誤差的要求。這個問題叫PA-問題。
實驗結果
圖 7.3.2.1
PA-的實作結果
(a) #=6 , = 650.6
(b) #=11, = 70
9
7.4 對稱軸偵測
梯度方向柱狀圖(Gradient Orientation Histogram)
利用得到的 x f 和 y f 二個梯度量,合成大小為
m ( x f )2 ( y f )2
夾角為
tan
1
y f
x f
, 0 2
針對每一個 ,它代表物體表面的走勢。將 0,2 分割成
若干份,找到 對應的角度 x 。
10
對稱軸偵測
圖7.4.1所示物體在 α 角度和 β 角
度有二個對稱軸。
定義一得分函數
S ( x ) h( x ) h( x )
0
h(x)以 2 為週期循環
h( x) h( x 2n )
圖7.4.1 一物體的二個對稱軸
n N {0}
0 x 2
針對每一個x,求出其得到的S(x)。
若將 0,2 分成1024份,可得S(0)、S(1)、…和S(1023) 共1024
個數,從這1024個分數中,挑出最高的二個分數,其對應的
角度就是我們要的 α 和 β 。
11
圖7.4.3
梯度方向柱狀圖
圖7.4.2 輸入的影像
圖7.4.4
所得對稱軸
12
7.5 細化
細化(Thinning):找物體的骨架(Skeleton)。
骨架的定義
物體 O 的外圍輪廓為 B 。在O內,若能找到一個像素 t 且在 B
上能找到二個邊點,e1 和 e2,使得 d(t,e1) = d(t,e2),則 t 就可
為 O 的骨架中之一個元素。這裡距離函數 d(t,ei),1i2,表
示像素 t 和邊點 ei 的距離。
圖7.5.2 輸入之影像
圖7.5.3 細化後的結果
13
細化
考慮黑白影像的O ,以圖7.5.1為例
N(Z5) :Z5鄰近非零像素個數
N(Z5)=5
T(Z5):灰階由0(1)變到1(0)的個數
T(Z5)=2
當N(Z5)=0或1時,Z5可能為孤立點或最外圍的端點,Z5不必改為0。
以東南方的方向進行細化:
以東南方的方向進行細化:
(1) 2 N(Z5) 6
(1) 2 N(Z5) 6
(2) T(Z5) = 1
(2) T(Z5) = 1
(3) Z2Z6Z8 = 0
(3) Z4Z6Z8 = 0
(4) Z2Z4Z6 = 0
(4) Z2Z4Z8 = 0
(7.5.1)
(7.5.2)
0
Z1
0
Z2
1
Z3
1
Z4
Z5
1
Z6
1
Z7
0
Z8
1
Z9
圖7.5.1 3×3子影像
利用(7.5.1)式和(7.5.2)式在物體
O的外圍不斷地進行細化工作,
直到無法再細化為止。
14
範例1:給定如下所示的小影像
0
1
1
1
1
1
1
0
1
0
0
0
試問上述小影像中間的兩個像素經細化後可否被移除?
解答:先檢查下面的3×3子影像
0
1
1
1
1
1
1
0
0
N (Z 5 ) 5
T (Z 5 ) 2
15
由於 T (Z 5 ) 2 1,3×3子影像中的 Z5 1 不可改為 Z 5 0 。
我們檢查下面的3×3子影像
1
1
1
N (Z 5 ) 4
T (Z 5 ) 1
1
1
0
Z 2 Z 6 Z8 0
0
0
0
Z 2 Z 4 Z6 0
由於滿足移除的四個條件,所以上述的3×3子影像中的
Z 5 1 可改為 Z 5 0。
解答完畢
16
7.6 同現矩陣
同現矩陣(Co-occurrence Matrix):表示紋理的方法。
Co矩陣可表示為Co[i, j, d, ],i 和 j 代表灰階值;d代表 i 和 j 的
距離而 表示 i 到 j 的角度。
圖7.6.1 輸入的影像
d=1和=0時的Co矩陣
d=1和=90時的Co矩陣
Co矩陣可描述出影像中有等距離且呈某種角度走向的規則紋理。
17
7.7 支持向量式的紋理分類
利用支持向量(Support Vector Machine, SVM)的方法來進行紋理
分類(Texture Classification)。
給二張訓練用紋理影像如圖7.7.1(a)和圖7.7.1(b)所示。
(a) A類
(b)B類
圖7.7.1 訓綀用的二類影像
18
首先在訓綀用的二張影像上,將其分割成L份,假設每份的訓綀
小模組爲一張 M M 的子影像,則可先將其轉換成
( X i , yi ) R M 1, i 1,, L 。
N
M
N
M
圖7.7.2 抽樣
19
接著,我們將這些為數L個的小模組代入下列的二次數學規劃的
問題(Quadratic Programming Problem)上以解得係數
1 , 2 , , L 。
L
1 L
Max D( ) i i j yi y j ( X i X j )
2 i , j 1
i 1
滿足
L
y
i 1
i
i
0 , 0 i C
這些解出的正係數所對應的小模組向量集也稱作Support Vectors。
L'
L'
令 f ( x) sgn( yi i X i X b) ,若 f(x)>0,則 x 代表+1那類
i 1
否則 x 代表-1那類。這裡 x 為待測小模組。
20
圖7.7.3 分類後的結果
(a)中值法後的分類結果
(b) 二類的分割結果
圖7.7.4 後處理的結果
21
7.8 Adaboost分類法
Adaboost分類法是一種機器學習法,這個分類法常與其他的機器
學習法混合著使用,有時候也稱作meta分類法。以下我們以血管
識別為例。
首先,我們輸入 m 個訓練樣本 ( F1, y1 ),( F2 , y2 ),...,( Fm , ym ),令 Fi 代
表第 i 個訓練樣本的特徵,此特徵可以是一個 n 維的向量,n 的
大小取決於我們在像素點上取了多少種特性,以
Fi [ fi (1) fi (2) ... fi (n) ]T 表示之。若 Fi 為血管上的特徵,則令 yi 1;
m
反之,則令 yi 1。
f1(1) f 2(1) f m (1)
f f f
1(2) 2(2) ... m (2)
圖7.8.1
f
f
f
1( n ) 2( n ) m ( n ) m 個訓練樣本
F1
F2
Fm
22
在Adaboost分類法中,我們首先設定疊代次數。令疊代數為 K ,
每經過一次疊代後,我們將會得到一個弱分類器(Weak Classifier),
符號定義為 h )。完成 K 次疊代後,即可將此 K 個弱分類器組成
一個強分類器(Strong Classifier,符號定義為 H ),並透過所得到
的強分類器來判斷輸入之像素是否為一血管上的像素。
令 Wi k 為第 k, 1≦k≦K,次疊代中第 i 個訓練樣本的權重。
首先我們初始化 m 個訓練樣本 F1 , F2 , , Fm 的權重分別為
Wi1
1
, i 1, 2,
m
, m
(7.8.2)
23
在 m 個向量 F1 , F2 , , Fm 中,令 j 為分別從每個向量取出第 j 個
元素之集合,即 j fi ( j ) | i 1, 2,..., m ,其中 j 1,2,..., n。把 j 中
的元素進行排序後,可得到排序後的結果 V j v1( j ) , v2( j ) ,..., vm。
( j)
經過 n 次的排序後,我們可得到 V1,V2 , ,Vn ,如圖7.8.2所示:
接下來利用下述的門檻值進行粗略的分類
vx ( j ) vx 1( j )
TV j t x
| x {1, 2,..., m 1}
2
k 1
(7.8.3)
m
F1
F2
Fm
圖7.8.2 排序後的向量
排序為
V1
排序為
V2
...
f1(1) f 2(1) f m (1)
f f f
1(2) 2(2) ..... m (2)
f1( n ) f 2( n ) f m ( n )
排序為
Vn
24
把門檻值與 j 中的元素進行比較,可以得到比較後的結果
Rtkx , j htkx ( f i ( j ) ) | fi ( j ) j , i 1, 2,
, m
1, if fi ( j ) tx
其中 h ( fi ( j ) )
, j {1, 2,..., n}
1, otherwise
k
tx
(7.8.4)
上式中,我們可以得知當 fi ( j ) 小於等於 t x,就認定 fi ( j ) 是血管上
之特徵並定義 htkx ( fi ( j ) ) 1;反之,則 並非為血管上之特徵並定
義 htk ( fi ( j ) ) 1。另外,由式(7.8.3)可以得知,每一個 j 可以產
x
生出 m 1 個門檻值。因此,針對 j 而言,我們可以得到 m 1
個比較後的結果,即為
Rtk1 , j , Rtk2 , j , Rtk3 , j ,
, Rtkm1 , j 。
25
得到 m-1 個結果後,分別計算出每個結果的錯誤率:
kj exk ( Rtk , ) | x 1, 2, , m 1 , t x TV
x
其中 e ( R
k
x
k
t x , j
j
(7.8.5)
m
) ik ( Rtkx , j ) ,
i 1
k
k
if
h
W
,
i
t x ( f i ( j ) ) yi
k
k
i ( Rtx , j )
,
otherwise
0,
j
htkx ( fi ( j ) ) Rtkx , j
而後,透過下式得知針對每個特徵向量第 j 個元素之
最佳門檻值 t k 及其所對應之錯誤率 E k :
j
O( j)
t Ok ( j ) arg min exk ( Rtkx , j )
t x TV j
E kj min kj
(7.8.6)
其中 j {1, 2,..., n} 。
26
求得 n 個最佳門檻值後,我們將可以求得此次疊代的弱分類器
k
Rtk , 及其對應的錯誤率 :
k
O ( )
Rtkk
,
O ( )
htkk ( f i ( ) ) | f i ( ) , i 1, 2,
O ( )
k min E k | j 1, 2,
, n
j
, m
(7.8.7)
E k 。
其中 arg min
j
而後每一次的疊代會透過弱分類器的錯誤率來更新權重:
j
Wi
k 1
( f i ( ) ) yi
Wi exp( )
O ( )
k
k
k
Z
exp(
)
if
h
( f i ( ) ) yi
k
tO
( )
k
k
其中 ht
k
k
O ( )
( fi ( ) ) Rtkk
O ( )
if htkk
k
,
,
(7.8.8)
1
ln((1 k ) / k ) ,而 Z k
2
為所有的權重
m
和(即 Z Wi k )。
k
i 1
27
當完成 K 次疊代後,我們將可得到 K 個弱分類器。最後根據求
得的弱分類器進行權重重組以得到一個強分類器,其公式如下:
K
H ( Fi ) sign( k htkk ( fi ( ) ))
k 1
O ( )
(7.8.9)
Adaboost分類法的演算流程圖表示於圖7.8.3中。
28
初始化權重 W11
把訓練資料以維度( n 1, 2,..., N )排序,可得
V1 ,V2 ,
,Vn
使用門檻值進行粗略的分類
TV j tx | x {1, 2,..., m 1} 及計算出錯誤率
kj exk ( Rtk , ) | x 1, 2, , m 1 , t x TV
x
j
j
最佳門檻值 t Ok ( j ) 及其所對應之錯誤率 E kj
t Ok ( j ) arg min exk ( Rtkx , j )
t x TV j
E kj min kj
此次疊代的弱分類器 Rtkk
O ( )
更新權重 Wi k 1
,
及其對應的錯誤率 k
疊代完成?
圖7.8.3 Adaboost流程圖
否
是
強分類器為
K
H ( Fi ) sign( k htkk ( fi ( ) ))
k 1
O ( )
29
(a)
(b)
圖7.8.4 兩張待測影像
(a)
(b)
圖7.8.5 實驗結果
30