本發(fā)明涉及人機(jī)交互領(lǐng)域,特別是一種四連棋棋盤圖像處理方法、系統(tǒng)及人機(jī)對(duì)弈系統(tǒng)。
背景技術(shù):
傳統(tǒng)的機(jī)器人在與人類對(duì)弈玩游戲時(shí)都是采用利用pc計(jì)算得出結(jié)果,然后人類幫助實(shí)施具體動(dòng)作,或者是采用虛擬的機(jī)器人模擬器在手機(jī)、電腦或電視等媒介上進(jìn)行對(duì)弈的方式,這些方式在游戲?qū)闹薪换バ圆粡?qiáng),不能給游戲玩家真實(shí)的對(duì)弈體驗(yàn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明旨在提供一種四連棋棋盤圖像處理方法、系統(tǒng)及人機(jī)對(duì)弈系統(tǒng),在真實(shí)環(huán)境下與人實(shí)時(shí)人機(jī)對(duì)弈玩四連棋游戲,讓游戲玩家有真實(shí)的對(duì)弈體驗(yàn)。
為解決上述技術(shù)問題,本發(fā)明所采用的技術(shù)方案是:一種四連棋棋盤圖像處理方法,包括以下步驟:
1)將獲取到的包含棋盤和背景的整體圖像由bgr顏色空間轉(zhuǎn)換到hsv顏色空間,對(duì)s通道的整體圖像進(jìn)行濾波處理,分割出只包含棋盤的二值圖像和所述二值圖像的棋盤輪廓,所述棋盤輪廓即感興趣區(qū)域;
2)對(duì)所述感興趣區(qū)域進(jìn)行子區(qū)域劃分,每一個(gè)所述子區(qū)域?qū)?yīng)一個(gè)棋格;
3)在所述整體圖像的h通道對(duì)棋子的任一顏色進(jìn)行固定閾值分割,獲取所述子區(qū)域內(nèi)有灰度值的所有輪廓,在任一子區(qū)域內(nèi),若閾值分割出來的輪廓面積大于所述子區(qū)域面積的一半,則判定該子區(qū)域?qū)?yīng)的棋格內(nèi)有該顏色棋子;
4)利用下述方法將棋盤局勢轉(zhuǎn)換為二維矩陣:若棋格內(nèi)的棋子顏色為第一色,則將該棋格對(duì)應(yīng)的二維矩陣的元素設(shè)置為i;若棋格內(nèi)的棋子顏色為第二色,則將該棋格對(duì)應(yīng)的二維矩陣的元素設(shè)置為j;若棋格內(nèi)沒有棋子,則將該棋格對(duì)應(yīng)的二維矩陣的元素設(shè)置為0;
5)利用所述二維矩陣計(jì)算最佳下棋位置。
借由上述圖像處理方法可以準(zhǔn)確判斷出最佳下棋位置,給游戲玩家更加真實(shí)的對(duì)弈體驗(yàn)。
步驟5)之后,還包括:將所述最佳下棋位置發(fā)送給智能機(jī)器人,方便機(jī)器人獲取最佳下棋位置。
步驟1)中,采用高斯濾波方法對(duì)所述整體圖像進(jìn)行濾波處理,然后用固定閾值的分割方法獲取只包含棋盤的二值圖像,用形態(tài)學(xué)的膨脹和腐蝕算法對(duì)二值圖像進(jìn)行處理,獲取二值圖像中的棋盤輪廓。預(yù)處理過程簡單,進(jìn)一步提高圖像處理精度。
步驟5)中,采用人工智能領(lǐng)域的minimax算法對(duì)二維矩陣進(jìn)行判斷,計(jì)算出最佳下棋位置。實(shí)現(xiàn)過程簡單。
相應(yīng)地,本發(fā)明還提供了一種四連棋棋盤圖像處理系統(tǒng),其包括:
預(yù)處理單元:用于將獲取到的包含棋盤和背景的整體圖像由bgr顏色空間轉(zhuǎn)換到hsv顏色空間,對(duì)s通道的整體圖像進(jìn)行濾波處理,分割出只包含棋盤的二值圖像和所述二值圖像的棋盤輪廓,所述棋盤輪廓即感興趣區(qū)域;子區(qū)域劃分單元:用于對(duì)所述預(yù)處理單元輸出的感興趣區(qū)域進(jìn)行子區(qū)域劃分,每一個(gè)所述子區(qū)域?qū)?yīng)一個(gè)棋格;
分割單元:用于在整體圖像的h通道對(duì)棋子的任一顏色進(jìn)行固定閾值分割,獲取所述子區(qū)域內(nèi)有灰度值的所有輪廓,在任一子區(qū)域內(nèi),若閾值分割出來的輪廓面積大于所述子區(qū)域面積的一半,則判定該子區(qū)域?qū)?yīng)的棋格內(nèi)有該顏色棋子;
二維矩陣獲取單元:用于利用下述方法將棋盤局勢轉(zhuǎn)換為二維矩陣:若棋格內(nèi)的棋子顏色為第一色,則將該棋格對(duì)應(yīng)的二維矩陣的元素設(shè)置為i;若棋格內(nèi)的棋子顏色為第二色,則將該棋格對(duì)應(yīng)的二維矩陣的元素設(shè)置為j;若棋格內(nèi)沒有棋子,則將該棋格對(duì)應(yīng)的二維矩陣的元素設(shè)置為0;
計(jì)算單元:用于根據(jù)所述二維矩陣獲取單元輸出的二維矩陣計(jì)算最佳下棋位置。
所述預(yù)處理單元包括:
轉(zhuǎn)換單元:用于將獲取到的包含棋盤和背景的整體圖像由bgr顏色空間轉(zhuǎn)換到hsv顏色空間;
濾波單元:用于對(duì)轉(zhuǎn)換單元輸出的hsv顏色空間s通道的整體圖像進(jìn)行濾波處理;
二值圖像獲取單元:用于根據(jù)濾波單元輸出的濾波后的整體圖像,用固定閾值的分割方法分割出只包含棋盤的二值圖像;
棋盤輪廓獲取單元:用于根據(jù)所述二值圖像獲取單元輸出的二值圖像,利用形態(tài)學(xué)的膨脹和腐蝕算法對(duì)所述二值圖像進(jìn)行處理,獲取二值圖像的棋盤輪廓,即感興趣區(qū)域。
上述系統(tǒng)還包括通信單元,用于將所述計(jì)算單元輸出的最佳下棋位置發(fā)送給智能機(jī)器人。
對(duì)應(yīng)地,本發(fā)明的人機(jī)對(duì)弈系統(tǒng)包括雙臂機(jī)器人和上述四連棋棋盤圖像處理系統(tǒng);所述智能機(jī)器人的手臂上安裝有用于采集整體圖像的攝像頭;所述智能機(jī)器人控制系統(tǒng)在接收到通信單元發(fā)送的最佳下棋位置后,控制智能機(jī)器人手臂抓取并放置棋子到所述最佳下棋位置。
或者,本發(fā)明的人機(jī)對(duì)弈系統(tǒng)包括智能機(jī)器人、攝像頭和上述四連棋棋盤圖像處理系統(tǒng);所述攝像頭采集包含棋盤和背景的整體圖像,并將所述整體圖像傳輸給預(yù)處理單元;所述智能機(jī)器人的控制系統(tǒng)在接收到通信單元發(fā)送的最佳下棋位置后,控制智能機(jī)器人手臂抓取并放置棋子到所述最佳下棋位置。
與現(xiàn)有技術(shù)相比,本發(fā)明所具有的有益效果為:本發(fā)明的棋盤圖像處理方法可以準(zhǔn)確地判斷出最佳下棋位置,從而使得人機(jī)對(duì)弈系統(tǒng)具備在真實(shí)環(huán)境下玩四連棋游戲的能力,讓游戲玩家有真實(shí)的對(duì)弈體驗(yàn),極大地提高了人機(jī)對(duì)弈的交互性。
附圖說明
圖1為本發(fā)明二維矩陣數(shù)據(jù)結(jié)構(gòu)圖;
圖2為本發(fā)明人機(jī)對(duì)弈實(shí)現(xiàn)流程圖。
具體實(shí)施方式
四連棋的游戲規(guī)則是在棋盤的行或列或?qū)欠较蛏铣霈F(xiàn)同一顏色4棋子相連的情況則游戲結(jié)束,持該顏色方為贏家。四連棋的棋盤結(jié)構(gòu)是6行7列,即高為6行,寬為7列,總共42個(gè)棋格,寬方向的7列為下棋入口。雙臂機(jī)器人事先記錄好7個(gè)下棋入口位置與抓取棋子的位置,然后調(diào)用機(jī)器人左臂的攝像頭獲取包含棋盤和背景的整體圖像并進(jìn)行分析判定該下哪一步棋。在調(diào)用機(jī)器人左臂的攝像頭時(shí)注意觀察獲取到的圖像,盡量使圖像中棋盤的位置不傾斜。圖像處理相關(guān)算法都是采用opencv的算子,算法部分的具體步驟為:(1)提取棋盤目標(biāo):首先將獲取到的整體圖像由bgr顏色空間轉(zhuǎn)換到hsv顏色空間,單獨(dú)對(duì)s通道的圖像進(jìn)行高斯濾波處理,然后用固定閾值的分割方法獲取只包含棋盤的二值圖像,接著用形態(tài)學(xué)的膨脹和腐蝕算法對(duì)二值圖像進(jìn)行處理,然后獲取二值圖像的棋盤輪廓,該棋盤輪廓就是我們需要提取的棋盤目標(biāo),稱之為感興趣區(qū)域。(2)對(duì)感興趣區(qū)域進(jìn)行子區(qū)域劃分:因?yàn)槠灞P實(shí)物的棋格分布是6行7列共42個(gè)棋格,因此在圖像中我們也要進(jìn)行相似劃分,即將感興趣區(qū)域也進(jìn)行6行7列的劃分,分出42個(gè)子區(qū)域?qū)?yīng)42個(gè)棋格。如果棋盤實(shí)物中42個(gè)棋格內(nèi)沒有棋子,那么在感興趣區(qū)域中對(duì)應(yīng)的42個(gè)子區(qū)域也為空,圖像中顯示為白色;如果在棋盤實(shí)物中某個(gè)棋格有棋子,那么在感興趣區(qū)域中相對(duì)應(yīng)的子區(qū)域內(nèi)也會(huì)顯示有灰度值。(3)分割棋子位置:兩種棋子和棋盤的顏色差別都要比較大,這樣在視覺上才能全部區(qū)分。一般棋盤顏色都采用藍(lán)色,而棋子顏色基本采用紅色、黃色或綠色。而紅黃綠藍(lán)這四種顏色在圖像中的h通道都有特定的取值范圍,因此能進(jìn)行準(zhǔn)確的顏色區(qū)分。以棋子為紅色和黃色為例,如若在某個(gè)棋格內(nèi)有紅色的棋子,用h通道的圖像對(duì)紅色進(jìn)行固定閾值分割后,在圖像感興趣區(qū)域中表現(xiàn)為相對(duì)應(yīng)的子區(qū)域里會(huì)有灰度值,獲取有灰度值的所有輪廓,如果在某個(gè)子區(qū)域內(nèi),分割出來的輪廓面積大于子區(qū)域面積的一半(因?yàn)樽訁^(qū)域?qū)嶋H包含了整個(gè)棋子及包容棋子的棋格邊緣,采用輪廓面積大于子區(qū)域面積的一半這種方式能避免造成誤判),則認(rèn)為該子區(qū)域?qū)?yīng)的棋格內(nèi)有紅色棋子。將該子區(qū)域的位置和內(nèi)容做好標(biāo)記保存起來;分割黃色的棋子也是采用同樣的邏輯。(4)將棋盤局勢轉(zhuǎn)為二維矩陣:前面已經(jīng)將棋子的位置和內(nèi)容都記錄好了,需要再將棋盤局勢轉(zhuǎn)為二維矩陣才能進(jìn)行下棋判斷。棋盤局勢和二維矩陣的對(duì)應(yīng)關(guān)系是:位置是一一對(duì)應(yīng)的,紅色棋子對(duì)應(yīng)二維矩陣?yán)锏臄?shù)字1,黃色棋子對(duì)應(yīng)二維矩陣?yán)锏臄?shù)字2,如果某個(gè)棋格內(nèi)沒有棋子,那么在二維矩陣?yán)锵鄬?duì)應(yīng)位置的內(nèi)容為0。(5)計(jì)算最佳下棋位置:獲取到與棋盤局勢相對(duì)應(yīng)的二維矩陣后,就采用人工智能領(lǐng)域的minimax算法對(duì)二維矩陣進(jìn)行判斷,計(jì)算出最佳下棋位置。(6)發(fā)送結(jié)果:將最佳下棋位置發(fā)送給雙臂機(jī)器人,雙臂機(jī)器人就會(huì)執(zhí)行下棋動(dòng)作。
如圖1所示,本發(fā)明二維矩陣共有6行7列,總共42格。圖中的數(shù)字0代表該處無棋子;數(shù)字1代表該處有紅色棋子;數(shù)字2代表該處有黃色棋子。
本發(fā)明人機(jī)對(duì)弈流程見圖2,雙臂機(jī)器人控制機(jī)器人左臂調(diào)用攝像頭觀測棋盤局勢,然后將圖像信息傳送到圖像處理單元(對(duì)應(yīng)圖2中的pc端),圖像處理單元返回最佳下棋位置給雙臂機(jī)器人,雙臂機(jī)器人控制系統(tǒng)控制機(jī)器人右臂實(shí)現(xiàn)棋子抓取和放置動(dòng)作。
游戲玩家和機(jī)器人各持不同顏色的棋子輪流下棋,雙臂機(jī)器人通過調(diào)用機(jī)器人左臂的攝像頭獲取包含四連棋棋盤和背景的圖像,并將整體圖像發(fā)送給圖像處理系統(tǒng),由圖像處理系統(tǒng)做出響應(yīng)和判斷,將結(jié)果返回給雙臂機(jī)器人單元,讓雙臂機(jī)器人控制機(jī)器人右臂去實(shí)現(xiàn)抓取和正確放置棋子的動(dòng)作。這種方式能使游戲玩家有代入感,真實(shí)地感覺是在與機(jī)器人實(shí)時(shí)對(duì)弈。