郭曉峰,王耀南,周顯恩,尹阿婷,趙輝平,劉磊
(1. 湖南大學(xué) 電氣與信息工程學(xué)院,湖南 長沙 410082; 2. 機(jī)器人視覺感知與控制技術(shù)國家工程實(shí)驗(yàn)室,湖南長沙 410082)
隨著社會(huì)的不斷發(fā)展和科技的不斷進(jìn)步,以中國象棋機(jī)器人為代表的娛樂服務(wù)型機(jī)器人,逐漸成為機(jī)器人研究領(lǐng)域的熱點(diǎn)之一。
中國象棋機(jī)器人研究開始于21世紀(jì)初,2004年上海交通大學(xué)黃立波等[1]利用開放式控制器,成功開發(fā)了國內(nèi)第一臺(tái)中國象棋對(duì)弈機(jī)器人,同期多種對(duì)弈機(jī)器人相繼誕生[2]。早期的中國象棋機(jī)器人棋子的定位與識(shí)別采用非視覺方式,如特制不同電阻值[3-4]或光敏電阻[5]的棋子與設(shè)計(jì)電子棋盤的方式進(jìn)行棋子的定位與識(shí)別,類似地還可采用射頻[6]等方法。這些非視覺的識(shí)別法都有:系統(tǒng)需特殊設(shè)計(jì)定制,適應(yīng)性不強(qiáng)等缺點(diǎn)。隨著機(jī)器視覺技術(shù)的發(fā)展,棋子的定位與識(shí)別也逐漸采用機(jī)器視覺的方法。
在棋子定位問題上:大多依靠棋盤間接定位,例如,許豐磊[7]對(duì)棋盤內(nèi)90個(gè)小區(qū)域進(jìn)行輪廓跟蹤與提取,進(jìn)而判斷棋子位置;肖克先等[8-9]、杜俊俐等[10-11]通過對(duì)棋盤十字交點(diǎn)處進(jìn)行檢測。以上棋子定位方法均依靠棋盤直線檢測或交點(diǎn)檢測,無法做到脫離棋盤定位,且定位精度不高。
在棋子識(shí)別問題上:棋子識(shí)別實(shí)質(zhì)就是字符識(shí)別,其研究相對(duì)比較成熟,但目前字符識(shí)別研究和應(yīng)用最多的領(lǐng)域是汽車車牌的識(shí)別[12-13]。與傳統(tǒng)字符識(shí)別不同,象棋棋子識(shí)別具有旋轉(zhuǎn)任意性,目前針對(duì)中國象棋棋子字符的識(shí)別研究不多。馮元華[14]和莫妙桃[15]使用文字連通數(shù)、字符年輪統(tǒng)計(jì)等特征進(jìn)行字符識(shí)別,但其需要預(yù)先對(duì)棋子字符進(jìn)行特征統(tǒng)計(jì),步驟繁瑣且正確率基本在83%左右。隨著計(jì)算機(jī)硬件和機(jī)器學(xué)習(xí)的發(fā)展,更多人嘗試使用BP神經(jīng)網(wǎng)絡(luò)[16]、深度學(xué)習(xí)[17-18]等進(jìn)行棋子識(shí)別。但機(jī)器學(xué)習(xí)或深度學(xué)習(xí)需要的訓(xùn)練樣本大,訓(xùn)練時(shí)間長,實(shí)時(shí)性不強(qiáng),更換棋子后同樣需要重新訓(xùn)練,步驟復(fù)雜繁瑣。
針對(duì)上述棋子定位中存在的依靠棋盤定位、定位精度不高等問題,本文提出了一種基于最小外接圓二次定位棋子定位方法,能夠快速高精度實(shí)現(xiàn)棋子定位。針對(duì)當(dāng)前傳統(tǒng)文字識(shí)別方法識(shí)別率低,而基于機(jī)器學(xué)習(xí)的字符識(shí)別方法,存在訓(xùn)練時(shí)間長、實(shí)時(shí)性不強(qiáng)的問題,本文提出了一種旋轉(zhuǎn)差分識(shí)別算法,實(shí)現(xiàn)棋子快速精準(zhǔn)識(shí)別。
我們自主搭建了象棋機(jī)器人的硬件平臺(tái),其結(jié)構(gòu)示意圖如圖1所示。系統(tǒng)主要由URAM四軸機(jī)械臂及相連的攝像機(jī)、計(jì)算機(jī)、象棋棋盤和輔助光源組成,該系統(tǒng)可實(shí)現(xiàn)兩個(gè)功能:1)開局階段自動(dòng)擺棋功能;2)人機(jī)對(duì)弈功能。該系統(tǒng)有兩個(gè)工作區(qū)域:擺棋區(qū)域和棋盤區(qū)域。本文以擺棋區(qū)域內(nèi)棋子的定位與識(shí)別進(jìn)行研究。
圖 1 象棋機(jī)器人系統(tǒng)結(jié)構(gòu)示意Fig. 1 Sketch map of chess robot system
本文算法整體流程圖如圖2所示。
圖 2 算法整體流程圖Fig. 2 The whole flow chart of the algorithm
一次定位與預(yù)處理整體流程如圖3所示。
圖 3 一次定位與預(yù)處理流程圖Fig. 3 first positioning and pretreatment flow chart
首先對(duì)擺棋區(qū)域進(jìn)行圖像采集,本系統(tǒng)使用普通家用網(wǎng)絡(luò)攝像頭,圖像分辨率為:1 280像素×720像素,測試所用棋子的直徑為15 mm。
1)圓檢測一次粗定位
棋子定位問題就是圓檢測問題。圓檢測算法主要有:最小二乘法[19-20]、多隨機(jī)圓擬合度評(píng)估[21]等擬合方法。這類方法圓檢測準(zhǔn)確度高,運(yùn)算量少,但其對(duì)噪聲敏感,且不能一次檢測多個(gè)圓。還有Hough變換[22]等投票(聚類)方法。這類方法將樣本點(diǎn)映射到參數(shù)空間,用累加器或者類聚的方法來檢測圓。這類方法對(duì)噪聲不敏感,且可以一次檢測多個(gè)圓,但其計(jì)算量大運(yùn)算時(shí)間長。
本系統(tǒng)運(yùn)行背景較復(fù)雜,有外界因素影響,因此需要圓檢測具有較強(qiáng)的魯棒性,且需要一次性檢測出多個(gè)圓形。系統(tǒng)對(duì)于棋子的定位精度和識(shí)別準(zhǔn)確度要求很高,但對(duì)于運(yùn)行時(shí)間要求不高,因此綜合以上考慮,本文使用Hough變換進(jìn)行棋子一次粗定位。
對(duì)采集到圖像進(jìn)行Hough變換的粗定位,定位效果圖如圖4所示,并可得到粗定位圓心坐標(biāo)。
圖 4 一次定位圖像Fig. 4 First positioning effect image
2)棋子分割
隨后根據(jù)該定位坐標(biāo)基于區(qū)域的圖像分割將棋子前后景分離和棋子分割。
3)顏色識(shí)別
將RGB模型圖片轉(zhuǎn)換為HSV模型,隨后對(duì)HSV模型中的各個(gè)值進(jìn)行統(tǒng)計(jì),尋找紅、黑顏色的特征。
經(jīng)過實(shí)驗(yàn)后得到:本文所使用棋子,紅色H(H:hue)值范圍為170~180;黑色H值范圍為103~106,利用紅色和黑色顏色的色調(diào)不同取值,就可將紅色和黑色的棋子圖像進(jìn)行識(shí)別。
4)字符分割
由棋子圖像的灰度直方圖:由圖5可知,棋子圖像的灰度分布具有很大離散性,即棋子背景灰度值較集中為一種灰度值,黑色或紅色字符集中為另一灰度值,且兩者相差較大。
圖 5 棋子圖片直方圖Fig. 5 The histogram of chess image
因此采用均值閾值分割進(jìn)行二值化處理,首先計(jì)算圖像像素灰度均值:T之后根據(jù)均值選定閾值進(jìn)行分割:
式中K為比例系數(shù)。通過實(shí)驗(yàn)確定K取0.75時(shí),字符分割效果較好。
系統(tǒng)工作環(huán)境較為復(fù)雜,干擾多,且所用棋子較小(僅為15 mm),成像分辨率低。因此粗定位效果,部分棋子定位效果較差如圖6所示。需要對(duì)棋子進(jìn)行定位修正以確保定位精準(zhǔn)。
圖 6 定位效果Fig. 6 Positioning effect
本文提出的一種基于字符最小外接圓的定位修正方法的流程圖如圖7所示。
圖 7 二次定位流程圖Fig. 7 The flow chart of second positioning
二次定位算法步驟:
1)圖片載入及預(yù)處理。由一次粗定位得到原始字符圖如圖8(a),及粗定位圓心如圖8中紅色圓點(diǎn)表示。預(yù)處理得二值化字符如圖8(b)。
圖 8 二次定位中間過程圖Fig. 8 Process image of second positioning
2)尋找最大輪廓。對(duì)二值化字符進(jìn)行形態(tài)梯度運(yùn)算如圖8(c)。對(duì)形態(tài)梯度圖進(jìn)行輪廓提取,依次遍歷所有輪廓并計(jì)算輪廓面積,保留面積最大的輪廓,如圖8(d)所示。
3)尋找輪廓外接圓。由于圓具有穩(wěn)定性和唯一性,因此尋找字符最大輪廓的最小外接圓如圖8(e),外接圓圓心如圖中綠色圓點(diǎn)所示。
4)修正圓心。由最小外接圓,重新截取字符圖片如圖8(f),保證字符位于圖像中心位置,為后續(xù)識(shí)別工作做準(zhǔn)備。同時(shí)由兩次圓心坐標(biāo)對(duì)比可得定位誤差,并對(duì)粗定位圓心坐標(biāo)進(jìn)行修正,從而得到棋子精確的圓心坐標(biāo)。
棋子識(shí)別本質(zhì)上就是字符識(shí)別,但不同于傳統(tǒng)的字符識(shí)別,在擺放過程中棋子可能旋轉(zhuǎn)任意角度,而造成字符傾斜,而傳統(tǒng)基于像素的模板匹配識(shí)別不具有旋轉(zhuǎn)不變性。如何克服圓形棋子的旋轉(zhuǎn)特性是中國象棋棋子識(shí)別的難點(diǎn)。本文提出了一種旋轉(zhuǎn)差分識(shí)別算法,其具體流程圖如圖9所示。
圖 9 旋轉(zhuǎn)差分識(shí)別算法流程Fig. 9 Flow chart of recognition algorithm
載入已制備模板圖,將待識(shí)別圖與其做像素差分如圖10所示,并保留差分值。隨后,將模板旋轉(zhuǎn)a°后重復(fù)上述操作,直至360°旋轉(zhuǎn)完畢為止。統(tǒng)計(jì)各個(gè)旋轉(zhuǎn)角度的像素差分值,保留其中的最小值,記為Bn(n為模板序號(hào),為1, 2,···,7)。
然后再和第2個(gè)模板進(jìn)行上述操作。依次和所有7個(gè)模板進(jìn)行上述操作后,則最小的Bn對(duì)應(yīng)的字符,即為待識(shí)別棋子的識(shí)別結(jié)果,隨即可得其對(duì)應(yīng)的棋盤的位置。識(shí)別效果如圖10所示。
圖 10 識(shí)別效果Fig. 10 Recognition effect image
本系統(tǒng)硬件平臺(tái)如圖11所示,攝像機(jī)為普通家用網(wǎng)絡(luò)攝像頭,分辨率為:1 280像素×720像素。象棋棋子直徑為:15 mm。計(jì)算機(jī) CPU 為intel core i5—4 200 M,主頻 2.5 GHz,通過軟件開發(fā)平臺(tái)Visual Studio 2012和Open CV2.4.9編寫C + +程序,對(duì)棋子進(jìn)行了定位與識(shí)別算法驗(yàn)證。
圖 11 中國象棋機(jī)器人系統(tǒng)硬件平臺(tái)Fig. 11 Hardware platform of Chinese chess robot system
利用本系統(tǒng)采集4張擺棋區(qū)域的圖像,每張圖片中包含32個(gè)棋子,共128個(gè)棋子。隨后對(duì)每張棋子圓心進(jìn)行人工標(biāo)定,將檢測定位坐標(biāo)和標(biāo)定坐標(biāo)對(duì)比,得到定位誤差,如表1 所示。
表 1 定位結(jié)果Table 1 Location result
兩次定位誤差為歐氏距離D,單位為像素(pixel)。定義誤差修正率:
該參數(shù)可以反映定位精度的提升程度。由式(2)可知,定位精度提升均在40%以上,大部分在60%或70%以上,最高可達(dá)80%。
本系統(tǒng)使用棋子直徑為15 mm,通過比例換算,可以得到最終實(shí)際定位誤差。實(shí)驗(yàn)結(jié)果表明:棋子定位精度均在0.50 mm以上,最高定位精度達(dá)到0.11 mm,定位精準(zhǔn)。棋子的平均定位時(shí)間為2.61 ms,定位快速,滿足象棋機(jī)器人快速精準(zhǔn)定位的要求。
各個(gè)字符定位精度存在差異:” 將”、“帥”、“炮”等的定位精度較高達(dá)到0.1 mm級(jí)別;而“士”、“車”的定位精度較低,僅為0.5 mm左右。因?yàn)橄啾扔凇皩ⅰ?、“帥”等左右結(jié)構(gòu)分布的文字,“士”、“車”等為一體的豎長結(jié)構(gòu),造成其最大輪廓外接圓穩(wěn)定性不足,定位存在較大偏差。
定位時(shí)間存在差異,“士”、“仕”定位時(shí)間短達(dá)到1.5 ms左右;而“馬”、“炮”等字符定位時(shí)間長為3.0 ms左右,這是因?yàn)椋骸笆俊?、“仕”等字符的筆畫較少的文字,“馬”、“炮”等較多,進(jìn)行輪廓提取后字符輪廓數(shù)量多,輪廓遍歷時(shí)遍歷的次數(shù)多,而造成定位時(shí)間長。
本文采用旋轉(zhuǎn)差分識(shí)別算法,因此棋子識(shí)別率和差分時(shí)模板每次旋轉(zhuǎn)角度a密切相關(guān),且算法的運(yùn)算時(shí)間也與其直接相關(guān),a越小,即識(shí)別率越高但運(yùn)算效率越差。如何平衡識(shí)別率和運(yùn)算效率,是該算法要解決的關(guān)鍵問題。
采集20副圖像共640個(gè)棋子進(jìn)行測試,在0°~45°區(qū)間內(nèi)分別設(shè)定了不同的差分旋轉(zhuǎn)角度a°進(jìn)行11次實(shí)驗(yàn),如表2 所示。注:運(yùn)算時(shí)間為單個(gè)棋子的全流程平均運(yùn)算時(shí)間,包括定位與識(shí)別。
表 2 識(shí)別結(jié)果Table 2 Recognition result
由表2可以得到棋子識(shí)別率和運(yùn)算時(shí)間與差分旋轉(zhuǎn)角度a的關(guān)系圖,如圖12和圖13所示。
圖 12 識(shí)別準(zhǔn)確率Fig. 12 Recognition accuracy
圖 13 運(yùn)算時(shí)間Fig. 13 Operation time
對(duì)圖12、13進(jìn)行分析,從識(shí)別率來看,當(dāng)旋轉(zhuǎn)角度在1°~21°變化時(shí),系統(tǒng)均保持較高的準(zhǔn)確率,達(dá)到98%。當(dāng)角度超過21°以后,準(zhǔn)確率開始下降并且下降速率越來越快。
從運(yùn)算時(shí)間來看,角度為1°時(shí)處理一個(gè)棋子平均耗時(shí)75.6 ms。但隨著角度不斷增大,運(yùn)算時(shí)間迅速減小,為5°時(shí),運(yùn)算時(shí)間已減小到18.7 ms。隨后減小速率不斷放緩。
綜合識(shí)別率和運(yùn)算時(shí)間分析,該系統(tǒng)差分識(shí)別算法的旋轉(zhuǎn)角度選擇10°~15°較為適宜。在此角度范圍內(nèi),棋子識(shí)別率較高為98%左右,全流程運(yùn)算時(shí)間為10 ms左右,滿足象棋機(jī)器人系統(tǒng)的要求。
選定旋轉(zhuǎn)差分角a=13°,對(duì)20幅圖片中各個(gè)字符識(shí)別情況分別統(tǒng)計(jì)如表3所示。其中錯(cuò)誤識(shí)別為:“炮”錯(cuò)誤識(shí)別為“相”;“馬”和“兵”之間錯(cuò)誤識(shí)別;“車”和“卒”之間錯(cuò)誤識(shí)別。字符之間相互錯(cuò)誤識(shí)別的原因和如何進(jìn)一步提升算法的識(shí)別準(zhǔn)確率是下一步研究的重點(diǎn)。
將本文在旋轉(zhuǎn)差分角度設(shè)定在13°情況下的實(shí)驗(yàn)數(shù)據(jù)與文獻(xiàn)[17]的實(shí)驗(yàn)數(shù)據(jù)進(jìn)行對(duì)比,得到結(jié)果如表4所示。
表 3 旋轉(zhuǎn)差分角為13°時(shí)的識(shí)別結(jié)果Table 3 Recognition results when the angle is 13 degrees
表 4 對(duì)比測試結(jié)果Table 4 Comparison of test result
從表4可知,本象棋棋子定位與識(shí)別系統(tǒng)棋子定位誤差0.5 mm略低于文獻(xiàn)[17]的0.8 mm,識(shí)別準(zhǔn)確率98.8%略高于文獻(xiàn)[17]的98%,該兩項(xiàng)指標(biāo)相差不大。但本系統(tǒng)棋子全流程運(yùn)算時(shí)間僅為9.3 ms,遠(yuǎn)遠(yuǎn)小于文獻(xiàn)[17]的最短識(shí)別時(shí)間49 ms。
本文使用的攝像機(jī)為普通網(wǎng)絡(luò)攝像頭分辨率為1 280像素×720像素,文獻(xiàn)[17]使用的是工業(yè)高清相機(jī)分辨率為1 000像素×1 000像素;本文使用的棋子為直徑15 mm,文獻(xiàn)[17]使用的棋子直徑為28 mm;且文獻(xiàn)[17]的測試環(huán)境較為簡單,為測試平臺(tái)箱內(nèi)部,本文的測試環(huán)境較為復(fù)雜。因此,本文的綜合測試效果優(yōu)于文獻(xiàn)[17],具有良好的應(yīng)用前景。
本文針對(duì)中國象棋機(jī)器人中棋子視覺定位與識(shí)別問題,提出了一種基于最小外接圓二次定位的定位方法和一種旋轉(zhuǎn)差分識(shí)別算法。實(shí)驗(yàn)結(jié)果表明該定位方法能夠?qū)崿F(xiàn)棋子的快速高精度定位,定位精度達(dá)到0.5 mm,平均定位時(shí)間為2.6 ms;能夠快速精準(zhǔn)地識(shí)別棋子,在保證棋子識(shí)別準(zhǔn)確度達(dá)到98%以上的情況下,單棋子全流程運(yùn)算時(shí)間為10 ms左右,完全滿足現(xiàn)有象棋機(jī)器人的指標(biāo)要求。
目前該算法在個(gè)別字符定位誤差和識(shí)別準(zhǔn)確度、棋子定位時(shí)間、棋子全流程運(yùn)算時(shí)間等方面存在進(jìn)一步優(yōu)化空間,這將是下一步研究的重點(diǎn)。