第八章圖形識別、匹配與三維影像重建
Download
Report
Transcript 第八章圖形識別、匹配與三維影像重建
第八章
圖形識別、匹配與三維影像重
建
1
8.1 前言
8.2 統計圖形識別
8.3 影像間的匹配對應
8.3.1 Harris角點偵測法
8.3.3 點集合匹配法
8.3.2 SIFT關鍵點偵測法
8.4匹配演算法原理
8.4.1 動態規劃式的BSSC解法
8.4.2 KMP演算法
8.5三維影像重建
8.6.1 稠密式視差估測
8.6.2 相機校正
8.6 二維影像的深度計算
2
8.2 統計圖形識別
貝氏決策理論
假設有二類木頭,A和B,A佔P(A)的比例而B佔P(B)的比
例, P( A) P( B) 1 。已知 P( A) P( B) 。利用木頭的紋理 X
來評估該木頭的種類。
當 X = X 時,P( X | A) P( X | B) ,
我們說該木頭為A類,仍會犯誤
判的風險,畢竟 P( X | B) 仍有機
率值。
P( X | A)
機
率
值
P( X | B)
X
圖8.2.1 P(X|A)和P(X|B)的分佈圖
X
3
我們有興趣的是給一個X值,該木頭屬於A或B的機率為何?
依據貝氏法則,
P( A X ) P( X | A) P( A)
P( A | X )
P( X )
P( X )
此處 P( X ) P( X | A) P( A) P( X | B) P( B) 。
透過貝氏法則,P( A | X ) 這個事後機率就可由事前機率P(A)、P(B)、
P( X | A) 和 P( X | B) 求得。
當 X = X,P( A | X ) P( B | X ),
這時可判斷該木頭為 A,畢竟
冒的風險較低,也就是
P(error | X ) P( B | X ) 。去掉
P( A | X ) 和 P( B | X ) 的 P(X ) 項,
當 P( X | A) P( A) P( X | B) P( B)
時,我們判斷該木頭為A。
P( A | X )
機
率
值
P( B | X )
X
圖8.2.2 P(A|X)和P(B|X)的分佈圖
X
4
識別器
將紋理由一維擴充到 d 維而將木頭的種類由2種擴充到 t 種。
令第 i 類的識別器為 gi ( X ) P( X | Ti ) P(Ti ),此處紋理向量
X ( x1, x2 , , xd ) 而 Ti 代表第 i 類木頭, 1 i t 。
作用單調遞增函數於上,得
gi ( X ) log P( X | Ti ) log P(Ti )
g1 ( X )
如果 g j ( X ) 為最大值,
該木頭分類為 Tj
g2 (X )
MAX
X
Tj
gct ((XX))
圖8.2.3 識別器示意圖
5
8.3 影像間的匹配對應
8.3.1 Harris 角點偵測法
視窗在影像上的移動,可得到強度變化情形:
(1)平面:往任何方向移動僅造成小變化
(2)含一條邊:與邊平行的變化量小;反之則大
(3)含角點或獨立點:往任何方向變化皆大
(1)
(2)
(3)
6
令
x f f (1,0,1) x
y f f (1,0,1)t y
利用高斯函數來平滑雜訊的影響,令
C x y G
B 2y G
A 2x G
綜合灰階梯度變化之影響可表示為
A C x
Ax By 2Cxy ( x y)
C
B
y
( x y)M ( x y)t E
2
2
7
函數E是一種局部自我關聯的函數,矩陣M就是函數E的代表。
矩陣M的兩個特徵值代表:
1 和2皆很小:代表視窗內為平滑區
1 和2中,一大一小:代表含一邊的區域
1 和2皆很大:代表含角點的區域
圖8.3.1.1 矩陣M的特徵值所代表的意義
8
影響值 R=det(M)-k×(trace(M))2決定是否小區域內有角點,
判斷的準則為
R 0 且 R 0 :代表平滑區
R 0:代表含一邊的區域
0:代表有角點的區域
R
利用以上方法可以將所有角點找出來。
(a)原始影像
(b)找出的角點集
9
8.3.2 SIFT關鍵點偵測法
將影像進行縮減取樣 n 次,例如n=2可分成3個影像尺度,進一
步利用 m 個不同標準差的高斯函數,例如m=4,高斯函數標準
差分別是 , k , k 2 , k 3,將不同高斯函數與3個影像尺度作迴積
運算:
L( x, y, k t ) G( x, y, k t )* I ( x, y)
接著對兩相鄰的尺度做DOG:
D( x, y, k t ) (G( x, y, k t 1 ) G( x, y, k t ))* I ( x, y)
L( x, y, k t 1 ) L( x, y, k t )
10
圖8.3.2.1 DOG金字塔
11
考慮每個像素與周圍8個像素及上下層同位置周圍9個像素
做比較,如果該像素為極值,則設為候選關鍵點。
圖8.3.2.2 DOG金字塔找極值
12
以每個候選關鍵 X 點當原點,算出
DT (0)
1 T 2 D(0)
D( X ) D(0)
X X
X
2
X
2
X
其中 X ( x, y, )T 的三維座標,令座標
DT (0) 2 D(0)
X
X 2
時有極值點D( )。
0
1
D (0) D(0)
2
X
X
代表一個極值點,如果 內的三個座標值都小於0.5; 若大於0.5
則依照該方向來內插出新的候選關鍵整數點,繼續用新的候選關
鍵點計算二階泰勒展開式求值。
若 | D( ) | 0.03,代表此區域的對比較低,應移除此關鍵點。
2
T
13
除掉邊上的候選關鍵點,先求出赫斯矩陣
Dxx Dxy Dxx Dxy
H
D
D
D
D
yy xy
yy
yx
H的特徵值 1 和 2 可計算如下:
Dxx
Dxy
det( H I ) det
Dxy
D
yy
2 (Dxx Dyy ) (Dxx Dyy Dxy 2 ) 0
可得
1 2 Dxx Dyy trace(H )
12 Dxx Dyy Dyy 2 det(H )
14
令 1 2 且1 2 ,得到
(trace( H ))2 (1 2 )2 (2 2 )2 ( 1)2
2
det( H )
12
2
得判斷式
(trace( H ))2 ( ' 1)2
<
det( H )
'
令 ' 10,若判斷式成立,移除邊上的候選關鍵點。
15
以剩餘關鍵點為中心的區塊,計算區塊內每個像素的梯度值
m( x, y) 與梯度方向 ( x, y )
m( x, y)
L( x 1, y) L( x 1, y) L( x, y 1) L( x, y 1)
2
2
( x, y) tan1 (L( x, y 1) L( x, y 1)) / (L( x 1, y) L( x 1, y))
關鍵點的旋轉不變性(Rotation Invariant)。
16
圖8.3.2.3 決定關鍵點的特徵向量
17
找出DOG金字塔中的極值
移除在對比較低區域裡的候選關鍵點
移除位於邊上的候選關鍵點
配置關鍵點的主要方向
產生特徵向量
圖8.3.2.4 SIFT流程圖
18
(a) 輸入的腦血管影像
(b) SIFT演算法選取到的關鍵點
圖8.3.2.5
19
8.3.3 點集合匹配法
另一種作法是尋找轉移矩陣 T ,使 ToF 與 F 有最小誤差。
令 di (T ),1 i m ,代表 F 中的 f i 與 F 中的 fi 之距離
m
p(d1 (T ), d 2 (T ),
, d m (T ) | T ) p(di (T ))
i 1
引入最大可能(Maximum-likelihood)的觀念,得
L(T ) ln p(d1 (T ), d 2 (T ),
m
, d m (T ) | T ) ln p(di (T ))
i 1
其中 p(d) 為一常態分佈(Normal Distribution)。
匹配的精神就是找一個 T 使得上式有最大值。
20
8.4 匹配演算法原理
8.4.1 動態規劃式的BSSC解法
BSSC(Banded String-to-String Correction)之目的為在樣本和正本
之間找出最大的匹配點與匹配點的位置。
給一個例子如下:
樣本= PP
1 2 P3 P4 P5 P8 P9 P10
正本= TT
1 2T3T4T5 T8T9T10
將 Pj 和 Ti 想像成特徵值。因為視差
的關係,Pj 只能與 Ti 範圍內的特
徵匹配到。
圖8.4.1.1的搜尋範圍就是黑色粗邊
框住的範圍而得到的最佳匹配就是
鋸齒形的路徑上之黑圓點集。
P1 P2 P3 P4 P5 P6 P7 P8 P9 P10
T1
T2
T3
T4
T5
T6
T7
T8
T9
T10
| 3 |
圖8.4.1.1 匹配結果
21
匹配算子
a b,R(a)=b的花費定為1
取代算子R a = b,R(a)=b的花費定為0
刪除算子D D(a)= 的花費定為1
插入算子I I( )=a的花費定為1
圖8.4.1.1一共含有下列十四個運算
(1) I( )=P1
(6) I()=P4
(2)R(T1)=P2
(3)R(T2)=P3
(7)R(T5)=P5
(8)R(T6)=P6
(4)D(T3)= (5)D(T4)=
(9)D(T7)= (10)D(T8)=
(11)I( )=P7 (12) I( )=P8 (13)R(T9)=P9 (14)R(T10)=P10
22
動態規劃核心式子
Edit[i, j] min(Edit[i 1, j] edit(Ti , ),
Edit[i, j 1] edit(, Pj ), Edit[i 1, j 1] edit(Ti , Pj ))
表示將T[1…i]轉換成P[1…j]的花費。
T [1...i] T1T2 ...Ti
P[1... j] P1 P2 ...Pj
Edit[0, k]=k
Edit[k, 0]=k
edit(Ti, Pj)表示R(Ti)=Pj的花費
)表示D(Ti)= 的花費
edit( , Pj)表示I()=Pj的花費
edit(Ti,
BSSC的時間複雜度為 (n)
n為正本長度, 為視差
23
8.4.2 KMP演算法
樣本先進行事前處理
利用樣本中子字串(Substring)與前置字串(Prefix String)的吻合度,
並記錄其吻合的長度於陣列 J [ ]中。
i 1 2 3 4 5 6 7 8 9 10
P[3]=a=P[1] J[3]=1
P [i] a c a c a a a c a c
P[3…5]=aca=P[1…3] J[5]=3
P[7…10]=acac=P[1…4] J[10]=4 J [i] 0 0 1 2 3 1 1 2 3 4
KMP字串匹配演算法
T [ ]=cccacacaaacaccaa
T[i] P[i],1 i 3。T[4…13] = P[1…10]。
T[5] P[1],T[6] = P[1] T[6…8] = P[1…3]
T[9] P[4],J [4]=2 P[1…J [4]-1]=P[1]=T[9- J[4]+1…8]=T[8]
陣列J [ ]提供了一個跳躍的機制,讓匹配動作可一直往右前進。
KMP的時間複雜度為O(m + n)
24
8.5 三維影像重建
8.5.1 稠密式視差估測
(Dense Disparity Estimation)
問題定義
稠密式視差估測是在L上的所有
像素中和R上的所有像素中找到
一個對應。
P
二階段式的分割與克服方法
左影像 (L)
Y
OL
Z
右影像 (R)
Y
X
'
OR
X'
Z'
圖 8.5.1.1 稠密視差估測示意圖
25
第一階段的分割與克服方法
1. 利用Marr-Hildreth測邊法得到主要特徵像素集:
L上第 N/2 列中的主要特徵集可表示為:
S LN 2 S LN 2 1 S LN 2 2
S LN 2 N N 2
,1 NN 2 N
R上第 N/2 列中的主要特徵集可表示為:
S RN 2 S RN 2 1 S RN 2 2
N 2
N 2
2. SL 和 SR 的匹配工作
S
S RN 2 N N 2 , 1 N N 2 N
C SLN 2 v , S RN 2 ( w) min Cmatch S LN 2 v , S RN 2 w , Crightocc S LN 2 v , S RN 2 w ,
Cleftocc
N 2
L
v , S RN 2 w
其中 Cleftocc S LN 2 v , S RN 2 w C S LN 2 v , S RN 2 w 1 COcc
Crightocc S LN 2 v , S RN 2 w C S LN 2 v 1 , S RN 2 w COcc
Cmatch S LN 2 v , S RN 2 w C S LN 2 v 1 , S RN 2 w 1 CS N 2 v ,S N 2 w
L
R
26
S LN / 2
S LN / 2 1 S LN / 2 2
~
~
S RN / 2 1
S RN / 2 2
CS N 2 v , S N 2 w 2 * l1 l2
L
~
~
取代算子:
S LN / 2 m N / 2
S LN / 2 w
R
~
~
其中
S RN / 2
S RN / 2 v
l1 SLN 2 v SLN 2 v 1
~
~
l2 SRN 2 w SRN 2 w 1
S RN / 2 n N / 2
N 2
圖 8.5.1.2 SLN 2 和 SR
的匹配
11 l
1 l
mean p1 1 I L S LN 2 v 1 p q21 I R S RN 2 w 1 q
2 l1
l2
2
2
1 1 l1
1 l2
N 2
N 2
I
S
v
1
p
mean
I
S
w
1
q
mean
L L
R R
2 l1 p 1
l2 q 1
2
27
f
A
X
D
C
X
2*thr
B
(a) 右遮蔽花費
(b) 左遮蔽花費
thr
圖 8.5.1.3 右遮蔽花費和左遮蔽花費示意圖
COCC k f
2
1
22 / 2; thr
0
thr
2
1
22 / 2
3. 加入消去法則
若兩兩匹配位置的差,形成之序列為 5, 2,5,6,5 ,則 -2
的視差偏移不太正常,可以予以去除。假設在 N 2 k 列時
的平均視差偏移序列為 5,5,6, 4 。若新進來的視差偏移序
列為 5,7,3,16, 4 ,則 16 的視差偏移可予以去除。
28
三維物體
第二階段的分割與克服方法
A
B
C
1. 在二段匹配的子區間中,
再進一步找出個別的像素配對
2. 利用平均視差偏移量d,
可將第二階段的工作轉
1
成BSSC問題的解決上
SLN/2
1
SLN/2
1
SLN/2
1 N
圖8.5.1.4 二子區間匹配
R算子: C ' S LN 2 v vˆ, S RN 2 w wˆ
W 2
x , y W 2
N/ 2
2
1(1) SSRNLN/2
1
1(3)NN
(2)
SSLNRN/2
11 SSRNL 2
I L N 2 x, S LN 2 v vˆ y I R N 2 x, S LN 2 w wˆ y
W為事前定義好的小視窗
D算子:類似於前面定義的左遮蔽花費
I 算子:類似於前面定義的右遮蔽花費
29
圖8.5.1.5 對應的BBSC搜尋空間
30
圖8.5.1.6 輸入的二張影像
(a) 影像L
(b) 影像R
圖8.5.1.7
得到的視差圖
圖8.5.1.8
重建後的三維
五角大廈圖
31
8.5.2 相機校正
我們有三個座標系統,世界座標系統(World Coordinate
System) 、相機座標系統(Camera Coordinates System)和二維的
影像系統(Image System) 。
x
xw
y R y T
w
z
zw
r1
R r4
r7
r2
r5
r8
r3
r6
r9
Tx
T Ty
Tz
根據三角比例關係,可得
Xt f
x
z
Yt f
y
z
其中 f 為焦距長。
32
影像平面
鏡心
圖 8.5.2.1 相機座標系統和影像座標系統
理論上 ( X t , Yt ) 為( x, y ) 投射到影像座標系統的理想位置。
因為透鏡輻射效應,( x, y ) 實際投射到的影像座標系統的位置應
為 ( X a , Ya )。 滿足下式
X a Ex X t
Ya Ey Yt
33
上兩式中的誤差項 Ex 和 Ey 可表示成
Ey Ya (1r 2 2r 4 )
Ex X a (1r 2 2r 4 )
r
X a2 Ya2
在光學透鏡的輻射失真(Radial Distortion)的影響下,內部參數滿足
2
1,我們令 2 0,只關心 1 的求解。
前面所提的 ( X a , Ya ) 為實數,但在數位影像的座標系統一般皆為
整數座標 ( X I , YI )。假設感應器(Sensor)的 X (Y ) 方向共有 S x (S y ) 個感應
器。N x 是影像在x方向的解析度。令
d x' d x
Sx
Nx
34
而 (Cx , Cy ) 為影像的中心座標。( X a , Ya ) 和 ( X I , YI ) 的關係可表示如下
X I Cx s
Xa
d 'x
YI C y s
其中 s 為待解的放大係數。
Ya
dy
已知 ( x, y ) 投影到影像座標系統的理想位置為 ( X t , Yt ) f , f
進而得到
同理可得
且
( X Cx )d 'x
x
f X a Ex I
Ex
z
s
( X I C x )d 'x ( X I C x )d 'x 1r 2
s
s
X d 'x X d 'x 1r 2
s
s
d y Y d y Y 1r 2 f
2
x
z
y
。
z
y
z
2
Xd 'x
Xd 'x
2
2
r
(d y (YI Cy ))
(d y Y )
s
s
35
再利用三維世界座標系統和二維影像座標系統的關係可得
Xd 'x Xd 'x 1r 2
r x r x r x T
f 1 w 2 w 3 w x
s
s
r7 xw r8 xw r9 xw Tz
d y Y d y Y1r f
2
r4 xw r5 xw r6 xw Ty
r7 xw r8 xw r9 xw Tz
旋轉矩陣 R 分別對 x 軸、 y 軸和 z 軸達到任一角度的旋轉,可寫成
下式
cos cos
R sin cos cos sin cos
sin sin cos sin cos
sin cos
cos cos
cos sin sin sin cos
sin
cos sin
cos cos
至此,已經六個外部參數(Extrinsic Parameters)分別為 、、、Tx、Ty
和 Ty 及五個內部參數(Intrinsic Parameters)分別為 f、 s、1、Cx 和 C y。
接下來要利用數值的方法求解這些參數。
36
先解出五個外部參數,在二維影像座標上取一經過原點的向量
( X a , Ya ) ,且在相機座標上取一平行的向量 ( x, y ) ,所以得
( X a , Ya ) ( x, y) 0
X a y Ya x 0
X a (r4 xw r5 xw r6 xw Ty ) Ya (r1 xw r2 xw r3 xw Tx )
令 Z w 0 則我們得到
Ya xw
Ya yw Ya
X a xw
Ty1r1
1
Ty r2
X a yw Ty1Tx X a
1
Ty r4
T 1r
y 5
再利用五組世界座標 ( xw , yw , zw ) 和五組底片上的真實座標 ( X a , Ya ) 就
可解出 Ty1r1、Ty1r2、Ty1Tx、Ty1r5 、Ty1r4 。
37
令
r1
C
r4
則旋轉矩陣可改寫成
r2 Ty1r1 Ty1r2
1
1
T
r
T
r5 y 4
y r5
rT
1 y
R r4Ty
r
7
r2Ty
r5Ty
r8
r3
r6
r9
利用 R 中每一行向量與列向量為單位長,可得下式
rT
1 y
R
r4Ty
12
2
2
2
1 Ty (r1 r4 )
2
2
2
1 T (r1 r2 )
12
2
2
1 Ty2 (r4 r5 )
(1 MTy2 )1 2
2
y
r2Ty
r5Ty
12
2
2
2
1 Ty (r2 r5 )
2
2
12
2
其中 M r1 r2 r4 r5 。
38
因為 R 為正交矩陣,任兩行的內積必為零。將 R 的第一行和第二行
做內積,可以得到
(r1 r5 r2 r4 )2 Ty4 MTy2 1 0
此等式可解得 Ty2 的兩個解,如下
12
M M 4(r1 r5 r2 r4 )
T
2(r1 r5 r2 r4 )2
2
2
2
y
前面曾推導過
d y Y d y Y1r f
2
r4 xw r5 yw r6 zw Ty
r7 xw r8 yw r9 zw Tz
暫時將 1 和 Z w 設為零,得
dyY f
r4 xw r5 yw Ty
r7 xw r8 yw Tz
39
令 t1 r4 xw r5 yw Ty 且 t2 r7 xw r8 yw 上式可改寫成
t1
f
d y Y t2 d y Y
Tz
再利用兩組以上的世界座標 ( xw , yw , zw ) 和真實座標 ( X a , Ya )
解出 f 和 Tz 。然後以此 f 和 Tz 及令 1 0 為初始值來解線性方程式
t1
d y Y d y Y1r f
t2 Tz
2
如此即可透過數值的解法求得 ( f , Tz , 1 ) 的逼近解。
40
8.6 二維影像的深度計算
A
物體上一點
Epipolar面
Epipolar線
左影像
左邊相機
焦點中心
E
B
Stereo底線
右影像
F
C
圖8.6.1 Epipolar面
右邊相機
焦點中心
41
範例1:已知兩部相機的焦距[參見式(1.3.1)]相同且均為 f,假設左邊
的Epipolar線之長度為 xl 而右邊的Epipolar線之長度為 xr。已知物件
上的一點 A( x, y, z ),試問 z 之值為何?
解答:
根據給定條件,圖8.6.2為對應的示意圖,圖中的B和C代表左相機和
右相機。利用圖8.6.2中, BFG BDA 和 CHI CEA ,透過兩
相似三角形的邊比例關係,可得到
D
E
A( x, y, z)
x xl
z f
x b xr
z
f
xr
F
xl
f
H
G
B
b
I
C
圖8.6.2 利用兩平行相機求z值
42
在上式中,我們假設兩不相機相距b,座標系統的原點設在B點。可
進一步推得
zxl
x
f
x ( zxr bf ) f
再利用 zxl zxr bf ,可得到深度為
bf
z
xl xr
解答完畢
43