• 沒有找到結果。

重建棋子座標

在文檔中 六子棋自動棋譜產生系統 (頁 38-43)

第三章 基於棋子相對位置之定位

3.1 偵測新置放棋子

3.2.2 重建棋子座標

建立起棋子間相對位置後,我們可以把棋子及其關係連線視為一個無向圖形

(Undirected Graph),棋子的質心為頂點(Vertex),關係連線為邊(Edge),但 是由於棋盤上所有棋子不一定只會形成一個連通單元(Connected Component),

擺放較遠的棋子可能會形成“孤島",如圖 3-11 左上方的四顆棋子,於是我們 分為兩階段重建棋子座標。第一階段,由第一手棋子開始進行圖形追蹤(Graph Traversal),建立起所有和第一手棋子連通之棋子的座標;第二階段,針對第一 階段無法建立座標的棋子,利用投影轉換矩陣(Homography)建立其座標。以

上建立起的是棋子相對於棋盤格線的相對座標,最後我們還要將坐標平移,得到

Depth First Search, DFS Breadth First Search, BFS

S S (0,0) S

選擇參考點的原則是四個點不要太靠近,於是我們從已經建立起相對座標的 棋子中,選擇最靠近四個邊緣的四顆棋子當作參考點。實際的作法相當簡單,就 是分別找 x 座標及 y 座標最大及最小的四顆棋子;若是邊緣的棋子不只一顆,則 選擇後下的一顆;若是被選擇的四顆棋子中有重複的,則再選擇次靠近邊緣的一 顆棋子。本例的結果如圖 3-12 所示,圖中填上橘色的即為被選擇當做參考點的 棋子。

圖 3-12 建 投影轉換矩陣的參考點。

我們已知當做參考點的四顆棋子之影像平面的座標,以及相對於棋盤格線的 相對座標,所以可以由 2.3.1 節中介紹的方法,建立這兩個平面的投影轉換矩陣。

再來針對第一階段無法建立座標的棋子 立

,利用該投影轉換矩陣建立其座標。至 此,

3.2.2.3 轉換相對座標為絕對座標

,是相對於棋盤格線的相對座標,以第一手棋子 S 為

我們已經建立起棋盤上所有棋子之相對於棋盤格線的相對座標了,接下來就 要將坐標平移,得到相對於棋盤格線的絕對座標。

剛才我們所建立起來的座標

原點,事實上棋盤格線的座標應該以左上角的端點為原點,所以我們要進行 座標平移,把相對座標轉為相對於棋盤格線的絕對座標。進行座標平移前,有一

件事我們未知,就是 S 的位置,但六子棋有一個很重要的特性,就是第一手棋子 絕大多數是下在中元,也就是棋盤正中間的位置,因此我們預設 S 的座標為 (10,10)。在本例中,第一手棋子也是下在中元,座標平移後的結果如圖 3-13 所 示。當然,我們也可以人工給予第一手棋子 S 的位置,這樣就能保證平移後的位 置與棋盤上真實的位置一致了。介紹到此,我們已經利用棋子間相對位置,定出 所有棋子相對於棋盤格線的座標了。

(a) 第二屆交通大學盃六子棋公開賽決賽之最後畫面

(b) 棋譜最後結果的呈現畫面

圖 3-13 本系統所記錄之棋譜的最後結果。

3.3

在文檔中 六子棋自動棋譜產生系統 (頁 38-43)

相關文件