• 沒有找到結果。

本節將說明如何分析解分群之Covariance matrix 求得包住各群(clusters)的橢 圓體,及如何對橢圓體細切來求得誤差值較小的解(=改進解)。

由於5D 的橢圓體結構太過複雜,難以分析,將互相之間較獨立的 R、T 分開 計算出covariance matrix ΣR、ΣT,如下(3.1)式

_ _

1

1 n ( )( T

R i R R i R

i

x mean x mean n =

Σ =

− − R) (3.1a)

_ _

1

1 ( )(

n

T

T i T T i T

i

T) x mean x mean n =

Σ =

− − (3.1b)

並求出R、T 各自的 eigenvalues、eigenvectors 及 mean 如下表 3.2。

R ψR θR ωR

mean 37.8616 139.3263 -121.8653 eigenvalue 4.2152 2.4175 0.6472

軸1 軸2 軸3 eigenvector -0.8384 -0.5411 0.066

0.4893 -0.6937 0.5286

-0.2403 0.4754 0.8463

表3.2(a) cluster 的 R mean & eigenvalues & eigenvector

T ψT θT

mean 71.9678 315.8556 eigenvalue 5.2282 1.9846

軸1 軸2

eigenvector -0.9888 0.1491

0.1491 0.9888

表3.2(b) cluster 的 T mean & eigenvalues & eigenvector 接下來計算橢圓體各軸的長短,最長軸半長的長度如下:

the longest axis of ellipsoid = eigenvaluemax cmax (3.2) 其它軸半長的長度依 eigenvalue的比例可得。

其 中 cmax =max{ ci = (ximean)TΣ1(ximean) ,i= ~ }1 n , 為 群 中 各 點 的 Mahalanobis distance 的最大值。

在計算出橢圓體各軸長度後,因為我們比較關心誤差值較小的部份,即是橢 圓體較中間的部份,所以只對橢圓體中間2/3 的部份做細切,細切方法如下:

(a)對 5 軸各自等分成 4 等份,其中每一等份的長度設為(L1 , L2 , L3 , L4 , L5 ) (b)在每軸上取得 5 個等分點:(meani-2Li , meani-Li , meani, meani+Li, meani+2Li) ,

i=1~5

(c)5 軸上每一軸的 5 個值即可搭配得出在橢圓體內部 2/3 的 55組新解,計算出 55組新解的誤差值。

初步細切後,同樣對誤差值較小的前50 名做分群,不過為盡量防止橢圓體退

化而且延橢圓體形狀來分群,所以之後在建立MST 時,其依據改以 5D 的 weighted distance = [(n1i-n1j)2+( n2i-n2j)2+( n3i-n3j)2+( n4i-n4j)2+( n5i-n5j)2],其中 nki = {±1, ±2, 0} , nkj = {±1, ±2, 0} , k=1~5,如下例表 3.3:

num 軸1 軸2 軸3 軸4 軸5

1 2 0 1 -1 1 2 2 -1 1 -1 2 3 -1 -1 1 1 1 4 -1 -2 1 1 2 5 -2 -2 -2 2 1 6 1 0 -2 0 0 7 -2 -1 -1 2 0 8 -2 -1 -2 2 0 9 0 -1 -1 0 1 10 1 0 -1 0 0 11 2 1 2 -1 0 12 -1 0 2 1 0 13 -2 0 0 2 -1 14 0 -2 -2 0 2 15 1 -1 -2 0 1 16 1 1 -1 0 -1 17 -2 1 1 2 -2 18 0 0 0 0 0 19 2 0 2 -1 1 20 0 -2 0 1 2 21 0 0 1 1 0 22 2 -1 0 -1 2 23 0 -1 0 1 1 24 -1 -1 2 1 1 25 -1 -2 0 1 2 26 1 2 0 0 -2 27 -1 1 2 1 -1 28 0 -1 1 1 1 29 1 1 0 0 -1

31 0 -2 -1 1 2 32 0 1 -1 0 -1 33 1 -2 -2 0 2 34 -2 1 0 2 -2 35 0 0 -1 0 0 36 -1 -1 2 2 1 37 0 -2 -1 0 2 38 -2 0 -1 2 -1 39 0 1 2 1 -1 40 2 -1 2 -1 2 41 1 -1 2 -1 2 42 1 -2 0 1 2 43 0 0 -2 0 0 44 1 0 2 -1 1 45 2 2 -1 0 -2 46 1 2 1 0 -2 47 -1 -2 -2 2 1 48 1 -1 1 -1 2 49 0 0 2 1 0 50 -1 -1 -2 2 0

表3.3 細切之後前 50 名解的 weighted code

分群後,計算ΣR、ΣT,如果橢圓體退化(即最小的 eigenvalue 接近 0),則不再 繼續細切,以目前最佳解為中心執行全域搜尋法,如果橢圓體沒退化,則算出橢 圓體各軸長度,並再次細切。

第 4 章 搜尋全域性正解的離散值

本章將說明如何以第 3 章的改進解為中心,在附近範圍以 Golden Section Search(GSS)演算法來找到更加精確的外部參數解,前提條件為正解位在以改進 解為中心的某特定範圍內。

以改進解為中心,將5D 的相機參數空間(camera parameter space)分成 3D 旋 轉空間(Rotation space)及 2D 位移空間(Translation space ),進而再用橢圓體的各 軸長及方向定義三個參數空間:1D rotation eigen-space +2D rotation eigen-space +2D translation eigen-space,並以橢圓體各軸所對應的 eigen values 大小來決定 5 個維度在最佳化搜尋時的搜尋順序。

接著使用以GSS 為基礎進行 5D 空間的最佳解搜尋,以期找出具全域最小誤 差值的最佳解。

4.1 黃金切割搜尋法(Golden Section Search)

Golden Section Search(GSS)是在一維空間中進行最佳解的搜尋,與 Binary Search 不同的是 GSS 每次以黃金比例數值 γ≒0.382 當做切割比例,可以幾何速 率找到最佳解,但GSS 僅適用於 unimodal function,表示在搜尋範圍中僅有一個 極大或極小值的情況,GSS 才能找到準確的值。若尋找的非一維空間或是非 unimodal function,GSS 就無法適用,因此在下一節,解決不能使用在多維空間 的方法是將5D 全域依 eigenvalue 大小依序在各單一維度上進行 GSS 以找到全域 最佳解,而且本節也將提出改良後的GSS 以適用在非 unimodal function 的情況。

傳統GSS 的演算法如下述:

圖4.1 Golen section search(GSS)示意圖

如圖4.1,點 a 及點 c 為已知 2 點,其誤差值為 及 ,我們要用GSS 在 ac 之間找到一極小值。步驟如下:

Fa Fc

Step 1:

c b2

b1

a α

F(α)

1 unimodal,我們需對 GSS 稍做修改來符合目前的情況,主要想法有二:(1)原本 在比較內部2 點的誤差值大小後,下一階段沒有選到的範圍會被捨棄不再細看,

但在非unimodal 的情況下無法保證沒有選到的範圍絕對不會有更小誤差值的 點,如圖4.2,所以我們在兼顧準確度及效率下從要捨棄的範圍中多選出一點來 觀察;(2)如果 2 端點的誤差值比內部選出 2 點的誤差值還小,則端點到選擇點之 間的範圍可能會有區域極小值,所以這段範圍要紀錄下來,之後執行GSS。

圖4.2(a) GSS 改進步驟(1)

Case 1:如果F a( )≥F b( )2 ,則照原來做法繼續對( , )b c1 執行GSS。

Case 2:如果 ,則認為 可能有區域極值,分別對 ,

執行GSS。

( ) ( )2

F aF b ( , )a b1 ( , )a b1 ( , )b c1

改進前,GSS 的複雜度計算如下:

假設為±4 度的範圍,精確度到 0.01 度,則800*0.618n ≤ , 1

計算次數 = iteration 數 * 每個 iteration 的計算次數 = n * 1 = 14(每個維度) 改進後,GSS 的複雜度計算如下:

假設為±4 度的範圍,精確度到 0.01 度,則800*0.618n ≤ , 1

計算次數 = iteration 數 * 每個 iteration 的計算次數 +後來增加的步驟

= n * 1 + 3 = 17(每個維度)

4.2 5 度空間最佳解搜尋法

由圖 4.3 可稍微了解整個解空間的複雜,其中會有許多的區域極值(local trap),一般的搜尋法限於各種因素很難找到最佳解,所以我們採用 5 度空間的最 佳化搜尋,另外,由於每一維度的error surface 分佈並不一致,在某些維度上的 分佈較單純,甚至近乎unimodal function,較適合 GSS 的使用;某些維度的分佈 則過於複雜,無法順利地使用GSS。因此接下來將針對五度空間該以如何的方式 進行切割做相關的探討。

由於2D 空間的 T,和 3D 空間的 R 之間關係較獨立,所以可以分開計算。但 是在T 的 2D 空間中就有兩種可能的先後執行順序,先固定 ψT 再求 θT 的區域 最小值,或是先固定 θT 再求 ψT 的區域最小值。另一方面,在 3D 空間上的 R 則有六種不同的先後執行順序,與T 結合則有 12 種可能。

經過觀察,在eigenvalue 較小的維度上,由 error surface 可看到等高線較密 而error 的變化較大,比較可能有唯一的 local minimum,linear search 也較容易 找到最低點,所以先搜尋eigenvalue 較小的維度能得到較正確的 value 值,並可 以提供給之後的搜尋的維度,減少因error surface 過於複雜導致 GSS 誤判,進而 無法準確找到最佳解。

舉例說明,當ψR 的 eigenvalue 最小,而 θR 及 ωR 的 eigenvalue 差不多時,

在ωR 與 θR 所構成的 error surface(如圖 4.3 所示),可以看出其 error surface 較為 複雜。而在由ψR 與 θR 所構成的 error surface(如圖 4.4 所示),可以看出 error surface 較為單純,較容易使用GSS 來計算最佳解。

圖4.3 error surface(水平軸為 ωR,垂直軸為 θR)

圖4.4 error surface(水平軸為 θR,垂直軸為 ψR)

求解較有利,三個參數空間的參數設定如圖4.5,1D rotation eigen-space 設為 Rlast,2D rotation eigen-space 設為(Rhor,R ),2D translation eigen-space 設為ver (Thor,Tver)。

R-3D

圖4.5 三個參數空間的參數設定為Rlast、(Rhor,R )、(ver Thor,Tver)

實際執行時,如圖4.6,Rlast維度最後搜尋,因此在Rlast維度上以GSS 找出的 最佳解即為全域最佳解,而要執行GSS 則必須能計算出Rlast維度上任一點的誤 差值。

Rlast維度上任一點的誤差值即是固定Rlast維度為某一值,在2D rotation eigen space 的Rhor維度上以GSS 找出的最小值,舉例說明,Rlast= r3這一點的誤差值為 在Rlast= r3的情形下,用GSS 尋找Rhor維度上的最小值,同樣的道理,要執行GSS 則必須能計算出Rhor維度上任一點的誤差值,如圖4.6 上 r2這一點的誤差值即為 固定Rlast= r3Rhor= r2,並在R 維度上以 GSS 找出最小值。 ver

同理,如圖4.6R 維度上一點 rver 1的誤差值為固定R 的 3D 旋轉空間為(r1,r2 ,r3) 的情形下,在2D translation eigen-space 中找出的最小值。依序搜尋,在 維度 上t2點的誤差值為固定4D 的角度(r1 ,r2 , r3,t2),並在 維度上以GSS 找出的最 小值。

Thor

Tver

從前面定義可知, 的維度eigen value 較小,其 error surface 上的等高線較 密而誤差值變化較大,比較可能有唯一的極小值,找出的值比較準確可信,也因 此在 上做GSS 搜尋時所依據每一點的誤差值是可靠的,以此層遞上去,最後 才對

Tver

Thor

Rlast維度執行GSS 搜尋。

T-2D

R-2D

T T

v

R R

veverr veerr

R R

lalasstt

T T

hhoorr

R R

hohorr

圖4.6 全域搜尋法執行順序流程 全域搜尋的詳細演算法如下說明:

begin initialize

[ ]

until GSS stopping criterion until

Thor

hor

hor T Range

T = + until GSS stopping criterion

+

=

) (Rlast,Rhor,Rver,Thor_min,Tver_min Err

find minimum Rver_min until GSS stopping criterion until

Rhor

hor

hor R Range

R = +

do GSS alone Rhor axis with error function Err(Rlast,Rhor,Rver_min,Thor_min,Tver_min)

find minimum Rhor_min until GSS stopping criterion

until

Rlast

last

last R Range

R = +

do GSS alone Rlast axis with error function Err(Rlast,Rhor_min,Rver_min,Thor_min,Tver_min)

find minimum Rlast_min until GSS stopping criterion return Rlast_min

end

第 5 章實驗結果

在本論文的研究中,對最後求出來的全域解結果影響最大的因素為error surface 的變化,究其根源即是一開始對應點的雜訊大小,所以實驗分成 3 個方 面,前2 項為模擬實驗,第 3 項為實拍影像的結果,而模擬實驗又分成半雜訊實 驗及全雜訊實驗。

半雜訊實驗中,第2 張影像中至少有一半的對應點完全沒有雜訊,我們可以 確實掌握正解的位置(ground truth),以此來驗證最佳解搜尋法所求出的 5D 解和 正解在解空間中是否相近,而全雜訊實驗則是模擬真實的情況,在第2 張影像中 所有的對應點都會加入雜訊,但因為正解的確實位置難以得知,最後以全域最佳 解重建3D 物體,觀察重建物體的邊長及角度來和原物體比較,以得知解的好壞。

實驗以一個立方體(cube)當做 3D 物體,對應點編號定義如下圖 5.1:

圖5.1 在立方塊(cube)可見的 3 個面上的對應點編號

模擬實驗的雜訊假設為高斯分布(Gaussian distribution),雜訊大小參考立方體 (cube)在 2D 的投影邊長,將立方體(cube)在 2D 投影的最大邊長的 n%設定為 3σ,

以下圖5.2 為例,cube 在 2D 上最大邊長為 p p1 13(= 289 pixels),取其 3%(=8.659 pixels)為雜訊高斯分布的 3σ(mean = 0, 標準差= σ)。

圖5.2 立方體(cube)在 2D 上的影像

P PJJJJK JJJJJK

P P

P PJJJJK JJJJK

P PJJJJK JJJJJK

image 1 (cube 最大邊長=)

image 2 image3

image 4 image 5 image 6

image 7 image 8 image 9

image 10

表5.1 實驗所使用的 10 張模擬影像

5.1 半雜訊實驗

實驗的主要步驟如下:

(1) 選取要實驗的 2 張影像

(2) 參考第 2 張影像中 cube 的最大邊長(取 3%為 3σ 的雜訊),分別產生 9 個 x、y 座標的高斯雜訊(mean = 0, 標準差= σ),並隨機加入第 2 張影像中的 9 個對應 點。

(3) 在 19 組對應點中隨機選取 10 組對應點來計算出外部參數解,以 LMedS 的方 法產生4000 組相機外部參數解當作初解。

(4) 分析有前 50 個最小誤差值的解,建立其 Minimum Spanning Tree(MST) (5) 對 MST 做分群(Clustering),求各群 Covariance matrix 橢圓體之 eigen values 及

eigen vectors

(6) 對各群橢圓體細切,得到初解的改進(refinement),直至橢圓體退化(至少一個 eigen value 為 0)。

(7) 啟用 Golden section search(GSS)搜尋相機外部參數的最佳解:(a)轉換 5D Camera parameter space 為 3D Rotation space 與 2D translation space,(b)進而 再用橢圓體eigen values 及 eignen vectors 定義三個參數空間:1D rotation eigenspace +2D rotation space +2D translation space,(c)使用 Golden section line search 連環搜尋相機外部參數的最佳解

(8) 以找到的最佳外部參數解重新建立 3D 點,計算重建 3D 後 cube 的邊長長度 和ground truth 對應邊長差的絕對值的平均及標準。

以下為實驗詳細過程及結果:

實驗一:使用合成影像資料,並於部份特徵對應點加入雜訊。

輸入兩張解析度為1024(水平)x768(垂直)的影像 Imgae1 及 Image2,影像中各有 19 點特徵對應點,如下圖所示。其中對 View2 的特徵點中的 9 點加入雜訊。

View 1 (Imgae1) View 2(Image2) View 1 及 View 2 之間正確的外部參數設定如下:

R T

0.6124 -0.7803 -0.1268 0.4411

0.6597 0.416 0.6258 -0.8894 -0.4356 -0.4669 0.7696 0.1203 將正確的外部參數轉成以5D 的表示法:

ψR θR ω ψT θT

39.6843 101.4559 -46.9876 83.0882 296.3790

在此實驗中,設定雜訊為normal distribution (mean = 0, 標準差= σ),雜訊的 大小是以cube 在影像中投影的最大邊長(約 300 pixels)的 3%為三個標準差 (3σ 約等於 9.8324 個 pixels)。View 2 的 19 個特徵點當中加入雜訊後的結果如下表 所示。

特徵點編號在X 軸方向的雜訊大小在 X 軸方向的雜訊大小

1 -3.72704 -4.4568

2 0 0

3 0 0

4 0 0

5 0.424926 2.168381 6 -0.86687 -4.00717

7 0 0

8 0.037143 -2.13098 9 -3.26928 4.424792

10 3.759026 -2.25978

11 0 0

12 0 0

13 0 0

14 0 0

15 -1.092 -2.78659

16 -1.80507 -2.79693

17 0 0

18 -2.8215 -3.96807

19 0 0

利用LMEDS 計算後的最佳 50 個的解資料如下:

n distance 1 37.5531 99.8379 -45.9876 84.8507 295.4805 3.7591 3.4748 2 36.0189 98.1725 -44.4523 84.5594 294.7667 3.9509 5.9504 3 34.2524 98.9948 -44.8329 88.6701 295.9604 4.1066 8.4581 4 34.2524 98.9948 -44.8329 88.6701 295.9604 4.1066 8.4581 5 41.2622 101.9975 -46.919 82.9204 296.2237 4.2725 1.6853 6 34.297 99.0591 -44.8852 88.7017 295.9782 4.4058 8.4178 7 38.4302 100.2002 -46.0319 82.9454 295.7285 4.7959 2.1229 8 42.6694 102.7989 -48.2871 81.3871 296.8592 4.9876 3.9405 9 37.9832 100.8055 -46.1263 85.7353 296.3444 5.1658 3.3267 10 37.9856 101.4448 -46.9422 85.262 296.6763 5.2509 2.7752 11 39.0285 102.4825 -47.6271 85.1247 297.2173 6.3983 2.5968 12 37.1346 98.3514 -44.7518 83.4899 294.4052 6.4641 5.0195 13 36.7468 100.8538 -46.1187 87.6357 296.6693 6.8248 5.5237 14 40.9361 101.3863 -46.3703 83.1226 295.6708 6.83 1.5671 15 37.9234 100.0645 -45.4888 86.5125 295.7134 7.3285 4.4105 16 41.836 99.0254 -45.587 81.7029 293.4182 7.704 4.815 17 33.7608 101.5377 -45.7873 84.3183 298.3971 7.7908 6.4901 18 37.7916 100.6108 -46.0085 81.8255 296.3045 7.9153 2.6182 19 40.2755 101.4804 -46.5675 79.43 296.0941 7.9743 3.7403 20 39.034 102.1562 -47.1281 85.59 296.9954 8.0272 2.7517 21 43.0691 105.5251 -49.7908 81.4445 299.102 8.0621 6.7815 22 43.7877 101.4997 -47.5225 79.625 295.1069 8.1503 5.5442 23 35.3524 101.5015 -45.9431 82.5251 297.7128 8.26 4.6856 24 38.7429 98.4797 -45.5841 83.59 294.1984 8.3243 4.0891 25 38.0458 103.2024 -47.4385 84.4089 298.4583 8.4548 3.465 26 40.3055 101.4212 -46.8773 79.5141 296.0962 8.461 3.6405 27 40.4335 102.1987 -47.1764 84.4869 296.8915 8.8006 1.8352 28 39.1469 98.6854 -45.8275 84.2113 294.2206 9.0006 3.9026 29 39.2479 102.6772 -47.6295 85.8929 297.5577 9.1633 3.369 30 38.4597 100.6116 -46.405 82.8523 296.2495 9.2038 1.62 31 41.1537 100.7348 -46.0954 79.4781 295.3784 9.3482 4.1844 32 40.4995 100.0858 -45.2736 79.661 294.933 9.3832 4.395

33 37.8155 99.4717 -45.4176 81.8303 295.3497 9.4327 3.5406 34 40.3305 101.4924 -46.6713 81.1709 296.5068 9.617 2.0521 35 39.7327 99.2624 -46.3051 84.7055 294.5661 9.799 3.344 36 35.7458 101.6899 -46.2794 88.629 297.6977 9.9243 6.9648 37 43.52 103.6721 -48.8987 80.9707 297.532 10.1068 5.3934 38 38.1212 100.6823 -45.5551 87.3407 295.9162 10.2978 4.8365 39 36.1849 100.4142 -46.2364 86.0084 296.2496 10.3609 4.7371 40 41.4011 101.8832 -47.0462 80.0084 296.5861 10.498 3.5582 41 38.611 102.1176 -46.8123 86.9478 297.2641 10.591 4.1594 42 40.6352 101.7184 -46.7316 79.3856 296.346 10.6395 3.8404 43 39.9681 102.0977 -47.3653 85.8105 296.649 10.7301 2.8494 44 42.2912 102.8843 -48.4694 84.4834 297.0423 10.7593 3.6631 45 40.2495 99.0221 -46.7412 84.3908 293.9635 10.804 3.7196 46 39.6722 98.4493 -46.0531 83.5563 293.5848 10.8583 4.2356 47 39.4335 102.2773 -47.2754 83.3435 297.4144 10.9246 1.3991 48 37.9033 103.3648 -47.8614 86.2076 298.3001 11.0188 4.5827 49 39.7422 102.4623 -47.7064 86.5921 296.9656 11.0297 3.7622 50 40.2511 101.8242 -47.812 81.3859 296.2698 11.1722 2.0115 其中的median error 定義如下:

median error = median of 19 對應特徵點的 error

以LMEDS 的 median error 前 50 名所建立的 MST 如下圖所示:

LMEDS 初始解的最小值為 3.7591,對這 50 點進行細切割,先分別對 R, T 進行 計算橢圓體的長短軸相關資訊。如下所示:

R ψR θR ωR

mean 39.7412 101.3659 -46.6089 eigenvalue 1.1996 0.9086 0.2333

軸1 軸2 軸3 eigenvector -0.6952 -0.6875 0.21

0.5798 -0.3635 0.7292 -0.425 0.6287 0.6513

T ψT θT

mean 83.7217 296.6401 eigenvalue 2.951 0.5204

軸1 軸2

eigenvector -0.9922 -0.1244

-0.1244 0.9922

R 橢圓體最長軸的半長 = Cmax eigenvaluemax = 2.8900

R 橢圓體最長軸的半長 = Cmax eigenvaluemax = 2.8900

相關文件