Profile - TW035


TW035

象聲



Semi-Finals


[print]


Project Paper - view as Preliminary(2010/07/21), Final(2010/11/01), Draft, Latest

1. 設計介紹 (Preliminary Paper)

 一、設計介紹

1.1  設計目的

     互動遊戲的發展是目前相當熱門的應用之一,如:PS3及Xbox3推出的<審判之眼>和<吉他英雄3 搖滾傳奇>…等,在目前市面上的互動遊戲中大多以卡片遊戲為主,經過審慎討論之後,我們決定把象棋這項中國傳統對戰遊戲與影像處理技術相互結合,讓傳統象棋結合數位內容,來達到下棋時也能有視聽享受,使象棋不再只是單純的動腦而已。在玩家下棋吃掉對方棋子的時候,螢幕上可顯示對戰動畫並且播出對戰的聲音,讓玩家不再是無聊的等待下棋。
     本作品影像處理負責辨識擺放在棋盤上的棋子,配合軟體程式中儲存的象棋規則,可精確定位棋子。此外,經由RS-232傳送資訊到PC端來播放Flash動畫於螢幕上,並透過播放SD卡中的音效檔,可以呼叫出各個棋子相對應的角色登場、打鬥和擊敗聲,使遊戲進行時,增添許多緊張刺激的效果。

1.2  作品介紹

    本作品是中國傳統象棋與數位影像處理的結合,並以Altera DE1多媒體平台實現出兩個Nios II軟核處理器系統。系統的重點著重在影像處理硬體電路、象棋規則軟體主程式、多媒體動畫及音效三方面的整合與溝通。
    本系統可分為兩種模式,第一種模式為在DE1多媒體平台上獨立運行影像處理電路和SOPC系統進行遊戲對戰及音效播放,而第二種模式則加上PC端,藉由PC強大的處理能力來實現Flash對戰動畫的呈現,並改由PC將動畫及音效同步播放。本作品在象棋棋盤上方裝設CMOS攝影機,擷取棋盤檯面上的影像,透過影像處理電路判斷棋子的位置與動向,再經由Avalon匯流排橋接器來傳輸棋盤上棋子的資訊,接著軟體主程式接收後以象棋規則判斷玩家棋步是否符合象棋規則。最後,透過喇叭播放當時相對應的對戰音效,並經由RS-232傳送資訊至PC端播放Flash動畫1,以達到多元的視覺及聽覺效果,使對弈過程中增添更多樂趣及緊張的氣氛。

1本作品為了使遊戲過程中,下棋者與觀棋者能夠更能融入對戰氣氛中,在Flash動畫部分特別與國立虎尾科技大學多媒體設計系羅見順老師與陳以軒同學、張惠讌同學、楊尚婕同學、巫宗輯同學、陳坤元同學、陳蓉恩同學合作。

(Revision: 15 / 2010-09-16 23:43:28)

2. 功能描述 (Final Project Paper)

二、功能描述

(1)對戰兩軍勝場數顯示

     第一顆七段顯示器:代表黑軍,以英文字母「A」顯示。

     第二顆七段顯示器:以十六進制顯示黑軍勝場數,最多可顯示至「f

     第三顆七段顯示器:代表紅軍,以英文字母「b顯示。

     第四顆七段顯示器:以十六進制顯示紅軍勝場數,最多可顯示至「f」。

     透過兩軍勝場數電路來實現勝場數的計算,並且將目前的勝場數經過轉換電路正確的顯示在七段顯示器上。

(2)影像處理

     影像處理電路則包含以下;全彩轉灰階、影像二值化、棋盤定位、棋子辨識、移動偵測,皆由純硬體電路實現。故能擁有快速的影像處理速度,並降低系統運作的負擔,使整個系統可實現在DE1多媒體平台上運作。

(3)中國象棋對戰規則判斷

     系統會持續不斷將影像處理後的棋盤資訊傳至主程式,而主程式將資訊使用陣列儲存,比較前後陣列之差異,即可得知目前棋盤上移動棋子的座標與棋子移至目的地的座標,把兩個棋子資訊進行象棋規則判斷,就可得知這一步是否符合象棋規則,隨後送出對戰結果資訊,並以此資訊來播放對戰音效及Flash動畫。

(4)對戰音效播放

     音效播放主要以系統讀取SD卡的音效檔,當沒有棋子移動或吃子的狀況時,會持續地播放背景音樂。而有棋子移動或吃子時,則中斷背景音樂,立即播放戰鬥對應音效。對戰鬥音效播放完畢則會立即回到背景音樂,使遊戲音樂不中斷。

(5)Flash動畫播放

     系統以RS-232將對戰結果資訊,傳送至PC端來啟動播放象棋對戰Flash動畫,使用者藉由PC的螢幕欣賞目前對戰情形及打鬥動畫。角色圖片則由色鉛筆在紙上作畫後,掃描至電腦裡,再藉由Flash內建的影格功能,以圖與圖連結的方式播放,形成動畫。Flash端接收由主程式傳來的棋盤資訊,依照資訊的內容,播放對應的動畫。

以下圖示列出幾個棋子與動畫角色範例作為代表:

 

 

 

 

 

         2.1、黑-將對應圖                   2.2、黑-馬 對應圖

 

 

 

 

 

         2.3、黑-卒對應圖                    2.4、紅-仕對應圖

 

 

 

 

 

         2.5、紅-象對應圖                                         2.6、紅-兵對應圖

(Revision: 18 / 2010-09-16 23:40:20)

3. 效能參數 (Final Project Paper)

二、功能參數

    本作品在系統效能方面可分為兩部份,第一部分為硬體電路,第二部份則為SOPC。

    在硬體電路部份擁有快速的影像處理能力,影像資料從CMOS攝影機擷取並直接對影像進行處理,完全以純硬體電路實現,因此資料會依序輸入與輸出,做影像即時的處理。另外擷取CMOS攝影機影像像素為640×480,所以使用純硬體的設計方法,數位電路在時脈25MHz之下,其每秒的擷取速度約為81FPS(Frame Per Second)。   

    SOPC部分則使用Nios II雙軟核處理器系統,雙軟核處理器可增加系統效能,並以軟體加速方式達到系統時脈100MHz,使系統可同步執行兩個主程式,使象棋對戰、音效播放和Flash 動畫播放可更快速及有效率的進行。

(Revision: 5 / 2010-09-16 23:39:25)

4. 設計架構 (Preliminary Paper)

四、設計架構

4.1  硬體架構

 

圖4.1、硬體設計方塊圖

 

     為了加強效能,本系統的影像處理採用硬體電路來實現,如圖4.1所示。首先CMOS攝影機負責採集影像資料,再傳送給FPGA,並由FPGA做格式轉換,SDRAM則用於儲存影像資料。當系統啟動時,攝影機配置器(configure)先對CMOS攝影機做初始化設定,接著經由FPGA中的CMOS擷取器(capture)抓取影像資料,而抓取的原始影像資料須轉換為RGB格式,再透過SDRAM控制器將轉換後的影像資料儲存於SDRAM中;同時影像處理器也隨即的將SDRAM儲存的影像資料讀取出,並定位影像中每顆棋子在棋盤上的位置,最後棋盤資訊統整記錄於二維矩陣暫存器中。

     系統的CPU 主要工作是控制周邊硬體電路以及象棋規則的實現,當取得了棋盤資訊後,判斷目前棋盤上棋子的移動是否合法及棋子動作特徵,隨後讀取SD 卡相對應的音效,並於喇叭播放聲音。

4.2   軟體流程圖

     本系統的軟體流程會先收到硬體電路的影像棋盤資訊,並在第一次系統啟動時進行棋盤初始化。且將上一次讀到的Buffer1象棋位置存至Buffer2中,再將目前讀到的的象棋位置存入Buffer1。接下來再進行兩個Buffer象棋位置的比對,如果象棋位置有所變動,則判斷是哪一隻棋子移動。再依象棋規則來判斷移動是否符合規則,若為否,則發出警告聲,並回到一開始讀取象棋位置的程序;若是,則依棋子的動作方式啟動不同的音效。接下來,則是比較兩個Buffer象棋位置移動完是否有棋子被吃。若否,則回到一開始讀取象棋位置的程序。若是,則透過喇叭播放不同棋子被吃的狀態音效,並透過RS-232傳送訊息至PC端來播放Flash動畫,流程圖如圖4.2所示:

 

圖4.2、系統設計方塊圖

4.3  音效播放程式

     針對對每一種棋子,自行定義出其兵種、武器、性別、招式,然後根據它們的屬性剪輯合成出專屬音效檔(*.wav)儲存在SD卡,在影像處理程式沒判斷到有棋子移動時,音效播放程式會持續的播放背景音樂,當影像處理程式判斷到有棋子移動時,會傳送特定訊號給音效播放程式,音效播放程式會根據影像處理程式傳來的訊號去讀取SD卡中對應的音效位址,在以每16bit 為一筆的資料往Audio output 送,使喇叭播出棋子的音效,待棋子音效播完後,程式會自動跳回剛剛中斷的背景音樂位址繼續播放。下圖為音效播放程式的流程圖:

 

圖4.3、音效播放流程圖

 

4.4  控制動畫程式

     DE1經由RS-232 傳送目前的棋子位置資料給電腦,主程式接收並比對新舊陣列之異同,判斷目前是移動或吃掉對方棋子,由下列兩個函式sprintf()與m_Flash Player.SetVariable()傳送數值給Flash端程式進行動畫播放,播放動畫之程式流程如以下所示:

 

4.4動畫播放流程圖

(Revision: 14 / 2010-09-16 23:39:02)

5. 設計方法 (Final Project Paper)

五、設計方法

5.1  硬體電路設計

        硬體電路設計主要分為硬體周邊電路與影像處理演算法兩部份,硬體周邊設計如下:

(1)   CMOS攝影機擷取影像傳送至影像處理器。

(2)   對弈記分電路。

(3)   CPU處理器硬體建置。

 
  5.1、影像處理設計流程圖

    而影像處理演算法的設計流程如圖5.1所示,其中包括:

(1)   棋盤定位:9×10棋盤的座標位置定位。

(2)   棋子辨識:辨識紅色及黑色棋子目前的座標位置,所得到的棋盤資訊以三種數值分別表示,0代表無棋子、1為黑色棋子與2為紅色棋子。

(3)   影像差異:比較上一次與目前的棋盤資訊是否改變。

(4)   移動偵測:進一步判斷是否下棋離手。

 

5.1.1  影像擷取

  5.2、影像擷取架構圖

     圖5.2為影像擷取架構圖,虛線框內為FPGA 的電路設計,其餘的為外部元件。CMOS 攝影機負責採集影像資料,而FPGA 對CMOS 攝影機抓取影像資料及格式轉換,SDRAM 則用於儲存影像資料。當系統啟動時,CMOS 攝影機配置器(configure)先對CMOS 攝影機做初始化設定,接著經由CMOS 擷取器(capture)抓取640×480影像大小的資料,而抓取的原始影像資料須轉換為RGB 格式,最後透過SDRAM 控制器將轉換後的影像資料儲存於SDRAM 中。而影像處理器會依序從SDRAM 中將影像資料讀取出,並進一步偵測棋盤的動態資訊。

5.1.2  影像處理

     彩色影像的每一個像素值是由紅、藍、綠元素構成的,經前置電路將每筆像素資料由SDRAM 讀入影像處理器,每筆讀入的像素點會利用水平計數器(H_count)及垂直計數器(V_count)來記錄座標位置。以下小節針對圖5.3各區塊電路作介紹。

 
  5.3、影像處理架構圖
 

A.棋盤定位

     由於CMOS攝影機是架設在棋盤中心位置的正上方60公分處,而CMOS 攝影機擷取之棋盤影像不會任意變動。因此本系統以固定參數來定位9×10的棋盤座標,並以定位的座標位置為中心,製造出一個邊長為40個像素點的正方形遮罩。如圖5.4所示,黃色區塊為可能出現棋子的範圍,在處理影像時會以此範圍的像素點來進行。

     經觀察拍攝的棋盤影像,出現在黑色與紅色棋子的像素點,紅色像素與綠色像素值會有明顯變化,因此棋盤定位電路會將每一點的紅色與綠色像素值加總取平均,再找出每一個遮罩的最低平均值。最後每張影像讀取完成時,這些9×10的最低值則會被更新。

 
  5.4、棋盤定位結果

B.棋子辨識

     當棋盤定位找出每一個遮罩的最低值時,棋子辨識電路則會讀取這些數值,並各別加上255來設為遮罩的門檻值,接著使用這些門檻值來判斷9×10的遮罩中是否出現棋子。以下步驟介紹圖5.5棋子辨識的過程。

 
  圖 5.5、棋子辨識流程

(1)   清除列表:首先將R、G、N列表清除為0。

(2)   直方圖統計:若目前判斷的像素點為遮罩範圍內,且紅色與綠色像素值加總小於門檻值,則進一步比較紅色與綠色像素值的大小。若紅色像素值大於綠色像素值,則對R 列表的遮罩位置加1;否則對G 列表的遮罩位置加1。當一張影像處理完成後則跳至下一步驟。

(3)   辨識棋子:R 列表與G 列表相同的位置進行比較,若目前處理的位置,R 列表統計的次數大於G 列表,且次數大於設定值,則此位置為紅色棋子;若R 列表統計的次數小於G 列表,且次數大於設定值,則此位置為黑色棋子;以上兩者皆不成立,則代表此位置無棋子。

C.影像差異

     此電路將會針對每張影像的辨識結果,比較上一次與目前的棋盤資訊是否有變化。以下介紹圖5.6辨識棋盤變化的過程。

     首先會將上一次讀取的棋盤資訊儲存至舊的棋盤資訊,接著目前輸入的棋盤資訊寫入至新的棋盤資訊。再將rChange 清除為0後,開始判斷新舊的棋盤資訊是否有變化,若有則將rChange 設為1。當此張畫面處理結束時,則將rChange 的結果送至輸出暫存器。

 
 圖 5.6、影像差異流程

D.移動偵測

     利用影像差異電路偵測的結果,取得拍攝影像中棋盤是否有變化,再透過移動偵測電路進一步判斷。先使用一計時器,由0開始計數,在時間未超過設定的500毫秒內,棋盤發生變動時,則代表玩家正在移動棋子,並且再將計時器重新計時;若時間超過500毫秒,棋盤未發生變動,則表示玩家已經下棋離手。最後棋子辨識及移動偵測的結果會一併傳送至系統CPU 做象棋規則的判斷

5.1.2  對弈記分

     此電路會接收SOPC 系統中象棋兩軍對戰最終結果,並以四個七段顯示來呈現兩軍勝場數。因勝場數是以十六進制顯示,故當勝場數顯示超過「f」時,必須將此軍的七段顯示器勝場數顯示歸「0」,流程圖如下:

 
 圖 5.7、對弈計分流程

5.1.3  SOPC

     本作品以Nios II雙軟核處理器來實現SOPC系統,兩個處理器分別獨立運作。可由圖5.8中了解本系統區塊,CPU1裡的主程式負責接收影像輸出的陣列資料,而當下棋者在移動棋子照成的影像異動期間,則會以LED發亮來表示,當異動結束後LED則會熄滅。並且將每一步棋完成後的資訊以UART輸出至PC端播放動畫,同時也以PIO輸出特定訊號至CPU2來進行音效播放。CPU2則是負責讀取SD卡的音樂檔進行播放,當CPU2接收到CPU1傳送來的特定訊號時便會依照對戰結果來進行對戰音效的播放,當CPU1尚未傳來特定訊號時,便會持續播放遊戲背景音樂。

 圖 5.8、雙軟核處理器區塊圖

(Revision: 6 / 2010-09-16 23:38:32)

6. 設計特點 (Preliminary Paper)

六、設計特點

本作品共有下列特點:

(a)   影像處理電路

    將CMOS攝影機擷取到的原始影像資料轉換為RGB格式依序儲存至SDRAM,透過影像處理電路將SDRAM裡的影像資料陸續取出做前後比對,即可定位出棋子在棋盤上位置,最後將棋盤資訊儲存至暫存器中,供象棋規則程式做判斷。

(b)   對戰音效播放

    象棋規則程式的執行結果,會判斷出目前棋盤上的哪顆棋子是被移動或被吃掉的,同時會傳送特定訊號給音效播放電路,根據此訊號,電路會從SD卡中讀取相對應的音效檔,透過DE1上的Audio晶片將聲音從喇叭播放。

(c)    象棋規則設計

    象棋規則程式及音效播放程式皆以C語言撰寫,用來讀取硬體暫存器中的棋盤影像資訊,判斷玩家移動棋盤上的哪顆棋子及移動棋子的位置是否符合規則,程式完成判斷後會傳送訊號通知硬體電路播放相對應的音效。

(d)   棋盤設計

    如圖6.1所示為整個棋盤系統的外型,棋盤材質為乳白色壓克力,表面繪製象棋格線,可對折收納,使棋子放上去會與棋盤顏色互為對比色,目的為加強影像辨識,棋盤上方平台為擺放CMOS攝影機所用,中間的溝槽是為了方便調整CMOS攝影機拍攝位置所設計,材質亦為壓克力。

(e)    PC動畫呈現

    系統以RS-232將對戰結果資訊,傳送至PC端來啟動播放象棋對戰Flash動畫,使用者藉由PC的螢幕欣賞目前對戰情形及打鬥動畫。

圖6.1、作品外觀

(Revision: 17 / 2010-09-16 23:38:15)

7. 總結 (Final Project Paper)

 七、總結

     感謝友晶科技提供一個良好的競賽平台,除了讓我們能實現自己的作品,更可藉此機會觀摩它校設計團隊的傑作。當作品雛形完成後,便開始採納老師跟同學們的建議,將系統優化、增加功能、讓音效呈現的效果更震撼,為了能再增加對弈時的緊張與刺激感,特別與本校多媒體設計系合作,加入Flash動畫播放,在這過程中,不僅學會分工合作,也使得我們對於軟硬體協同設計有更深入的了解與運用,最後能設計出一套具有影像辨識、多媒體動畫及遊戲音效的遊戲平台。

(Revision: 5 / 2010-09-16 23:44:09)