朱一峰
(朝陽(yáng)師范高等專(zhuān)科學(xué)校 教務(wù)處,遼寧 朝陽(yáng) 122000)
機(jī)器人技術(shù)是人工智能、模式識(shí)別、機(jī)械、仿生學(xué)等多學(xué)科的交叉學(xué)科產(chǎn)物。娛樂(lè)機(jī)器人的研究已成為機(jī)器人研究的重要方向。象棋機(jī)器人是娛樂(lè)機(jī)器人的研究方向之一,視覺(jué)系統(tǒng)是象棋機(jī)器人研究的關(guān)鍵部分。筆者基于計(jì)算機(jī)視覺(jué)和模式識(shí)別技術(shù),研究了象棋機(jī)器人視覺(jué)算法,針對(duì)對(duì)弈的實(shí)際狀況,采用彩色空間變換、閾值分割、形態(tài)學(xué)骨架化及Hough 變換等圖像處理技術(shù)對(duì)棋局中的棋子進(jìn)行檢測(cè)、定位和分割。通過(guò)提取棋子旋轉(zhuǎn)不變的徑向像素點(diǎn)數(shù)作為特征,克服了棋子方向隨意性帶來(lái)的識(shí)別問(wèn)題。
象棋機(jī)器人對(duì)弈時(shí)的實(shí)時(shí)性要求非常高,而采用各種預(yù)處理及Hough 變換抗噪性強(qiáng)時(shí)必然要犧牲運(yùn)算時(shí)間。對(duì)于開(kāi)局初始化時(shí),有足夠多的時(shí)間進(jìn)行初始化;但是對(duì)于對(duì)弈進(jìn)行中時(shí),運(yùn)算時(shí)間就變得很重要。因此在對(duì)弈時(shí),采取前后兩幀圖像相減的方法進(jìn)行了冗余信息剔除,從而大大節(jié)省了運(yùn)算時(shí)間,而且能夠保證處理結(jié)果的準(zhǔn)確性。所以,在本研究中將整個(gè)算法流程劃分為開(kāi)局初始化和對(duì)弈進(jìn)行中兩個(gè)步驟。
利用人為的從棋盤(pán)字符圖中切割出圖像的單個(gè)灰度字符作為實(shí)驗(yàn)對(duì)象,對(duì)幾種二值化方法進(jìn)行對(duì)比,找到規(guī)律與影響效果的因素,如圖1所示。
圖1 單個(gè)棋子的二值化結(jié)果
通過(guò)比較,可以看出幾種方法各有各的適宜條件,主要依賴(lài)于圖像質(zhì)量。
1)對(duì)于由數(shù)碼相機(jī)拍攝、光照均勻、圖像質(zhì)量好的圖片,固定閾值法與大津法都可以取得良好的二值效果,它們之間的不同在于大津法二值化的線條要比固定閾值法粗。而此時(shí)局部閾值法(3×3 窗口)易出現(xiàn)偽影現(xiàn)象,局部閾值法(5×5窗口)基本可以進(jìn)行正確的分割,但是它的二值字符線條較細(xì),容易產(chǎn)生不連續(xù)。
2)大津法[1]與動(dòng)態(tài)大津法[2]的區(qū)別:動(dòng)態(tài)大津法在處理字符線條的直線性方面優(yōu)于大津法,如圖1 中(e)、(f)圖中第3 條橫線處。但是由于動(dòng)態(tài)大津法是基于分塊的方法,在某一塊內(nèi)需要包含有目標(biāo)與背景像素,而且目標(biāo)與背景各自?xún)?nèi)部的灰度變化范圍不大。如果在某一塊中,只有背景或者含有極少的目標(biāo)的情況下,這時(shí)動(dòng)態(tài)大津法就會(huì)出現(xiàn)分割錯(cuò)誤,將整個(gè)背景區(qū)域都作為目標(biāo)提取出來(lái)。
在實(shí)際中根據(jù)棋子的位置來(lái)選擇二值化方法。當(dāng)棋子位置位于圖像左右兩端時(shí)采用大津法二值化,其余位置用固定閾值法。
Hough 變換[3]是檢測(cè)圓的有效方法。改進(jìn)的原因是Hough 變換檢測(cè)圓所需的時(shí)間比較長(zhǎng)。本研究采取了徑向和縱向取點(diǎn)的方法取得了3 個(gè)點(diǎn)。具體算法為:
1)獲取圖像中任意一亮點(diǎn)A。
2)沿A 點(diǎn)的徑向方向相距一定距離的位置開(kāi)始搜索下一亮點(diǎn),直至找到滿足條件點(diǎn)B。
3)同理,沿縱向方向求取另一點(diǎn)C。
4)根據(jù)A、B、C 3 點(diǎn)的坐標(biāo)求取出圖像中圓的圓心及其半徑。
5)重復(fù)1),2),3),4)步,直到對(duì)圖像搜索完畢。
當(dāng)圖像比較清晰、特征比較明顯時(shí),可以求取出這樣的點(diǎn)。實(shí)驗(yàn)結(jié)果如圖2 和圖3 所示。
圖2 預(yù)處理后圖像
圖3 使用改進(jìn)的Hough 變換求取的圓心
但是在實(shí)際的圖像處理過(guò)程中,準(zhǔn)確找到3 個(gè)點(diǎn)不是一件容易的事情。考慮到噪聲的影響,可以找出更多的點(diǎn),提高魯棒性[4],從而保證處理結(jié)果正確。對(duì)圖4 進(jìn)行Hough 變換所獲取的結(jié)果和改進(jìn)后的Hough 變換獲取的結(jié)果如表1 所示。
圖4 棋子圖像
表1 傳統(tǒng)Hough 變換和改進(jìn)后的Hough 變換結(jié)果比較
從表1 可見(jiàn)采用改進(jìn)后的Hough 變換方法,圓心坐標(biāo)與傳統(tǒng)Hough 幾乎一致,但是計(jì)算時(shí)間遠(yuǎn)遠(yuǎn)小于傳統(tǒng)Hough 變換。
由于棋盤(pán)初始化過(guò)程有較為充裕的時(shí)間,故而筆者對(duì)采集的圖像采用傳統(tǒng)Hough 變換進(jìn)行初始化處理。這樣能夠提高所獲取初始數(shù)據(jù)的準(zhǔn)確性。而在對(duì)弈進(jìn)行的時(shí)候,采用改進(jìn)的Hough 變換,既能保證準(zhǔn)確性,又能提高識(shí)別速度,以滿足時(shí)間上的需要。
像素點(diǎn)是結(jié)合提取出的圓心以及細(xì)化前后的二值圖像進(jìn)行處理的,處理后能夠以圓心所處位置進(jìn)行附近圓域內(nèi)像素點(diǎn)統(tǒng)計(jì),本研究取統(tǒng)計(jì)半徑為棋子內(nèi)邊界半徑的0. 95 倍。所使用的圖像如圖5 所示。
圖5 原始圖像
沒(méi)有進(jìn)行細(xì)化的像素點(diǎn)個(gè)數(shù)統(tǒng)計(jì)結(jié)果如表2。
對(duì)圖像進(jìn)行預(yù)處理[5],并且求取細(xì)化后的像素點(diǎn)個(gè)數(shù)見(jiàn)表3。其中包含棋子的坐標(biāo)及圖像的S(飽和度)圖像像素統(tǒng)計(jì)。表中3 中的“行”為棋子行坐標(biāo);“列”為棋子列坐標(biāo);“ S ”為HIS 圖像的S 分量圖像大于某一閾值的像素點(diǎn)數(shù)量;“點(diǎn)”為二值圖像細(xì)化后,對(duì)圓域內(nèi)亮點(diǎn)的統(tǒng)計(jì)數(shù)。第1個(gè)值代表圖5 最上面第1 行的紅色棋子“車(chē)”,第2個(gè)值代表第1行第2個(gè)棋子“兵”,……,以此類(lèi)推。
表2 未經(jīng)細(xì)化所求取的像素?cái)?shù)結(jié)果
表3 細(xì)化后所求取的統(tǒng)計(jì)像素的結(jié)果
由表中S 值可見(jiàn),紅色“車(chē)”的S 值為0,而黑色“車(chē)”的S 值為327,所以利用S 分量能夠很好地將棋子顏色分開(kāi)。 S 圖像的特征可以正確分析出棋子的顏色。在S 圖像中識(shí)別出來(lái)顏色后,分別對(duì)黑色和紅色棋子進(jìn)行分類(lèi),提高了識(shí)別率。因此采用統(tǒng)計(jì)棋子像素的方法獲取棋子特征對(duì)棋子識(shí)別。
在各種識(shí)別算法中最簡(jiǎn)單、計(jì)算速度最快的識(shí)別方法是線性分類(lèi)器,線性判別函數(shù)是形式最簡(jiǎn)單的判別函數(shù),它具有計(jì)算簡(jiǎn)單、在一定條件下能實(shí)現(xiàn)最優(yōu)分類(lèi)的性質(zhì),因此得到了廣泛應(yīng)用。在線性分類(lèi)器的基礎(chǔ)上,用分段線性分類(lèi)器可以實(shí)現(xiàn)更為復(fù)雜的分類(lèi)。在實(shí)際應(yīng)用中有很多模式識(shí)別問(wèn)題并不是線性可分的,這時(shí)就需要采用非線性分類(lèi)器。比如當(dāng)兩類(lèi)樣本分布具有多峰性質(zhì)并互相交錯(cuò)時(shí),簡(jiǎn)單的線性判別函數(shù)往往會(huì)帶來(lái)較大的分類(lèi)錯(cuò)誤。這時(shí),樹(shù)分類(lèi)器作為一種分段線性分類(lèi)器,能有效地應(yīng)用于這種情況。近鄰法[6]也是一種分段線性分類(lèi)器。分段線性判別函數(shù)的極端情況,就是將各類(lèi)中全部樣本都作為“代表點(diǎn)”,這時(shí)的決策方法稱(chēng)為近鄰法。最初的近鄰法是于1968 年由Cover 和Hart 提出的,由于對(duì)該方法在理論上分析較為深入,直到現(xiàn)在依然是模式識(shí)別非參數(shù)法中最重要的方法之一。因此本研究選擇了最近鄰分類(lèi)器進(jìn)行識(shí)別。
開(kāi)局初始化的最大優(yōu)勢(shì)是時(shí)間充分,同時(shí)初始化的正確性,對(duì)對(duì)弈的整個(gè)進(jìn)程都有決定性的意義,因此必須保證初始化的正確性。所以筆者利用時(shí)間充分的條件,設(shè)計(jì)了開(kāi)局初始化算法[7-8]。
初始化算法如下:獲取到24 位真彩色圖像,這里由攝像頭采集進(jìn)來(lái)的圖像僅僅是數(shù)據(jù)并不是BMP 格式的圖像,故而還要對(duì)圖像進(jìn)行一些轉(zhuǎn)換,將所獲取的圖像數(shù)據(jù)填充到空白的BMP 格式的圖像文件中,從而得到了可處理的BMP 格式圖像文件。將BMP 圖像作為處理的依據(jù),開(kāi)始進(jìn)行信息獲取。首先將真彩色圖像進(jìn)行灰度變換獲取灰度圖像,然后進(jìn)行RGB 色系到HIS 色系的轉(zhuǎn)換,獲取到S 圖像。對(duì)灰度圖像進(jìn)行仿射變換并進(jìn)行中值濾波,獲取新的灰度圖像,對(duì)新獲得灰度圖像進(jìn)行適當(dāng)增強(qiáng),突出棋子前景。對(duì)灰度圖像進(jìn)行二值化,使圖像中棋子前景和棋盤(pán)背景明顯地區(qū)分開(kāi)。通過(guò)二值化獲取到的二值圖像含有少量噪聲,對(duì)含有噪聲圖像進(jìn)行去噪處理,消除空穴,同時(shí)也能去掉非常大的反光噪聲。然后對(duì)圖像進(jìn)行填充,得到包含所有棋子的圓域。對(duì)所獲取的圖像進(jìn)行邊緣檢測(cè)就可以獲得僅僅包含棋子圓邊界的圖像,這樣就可以為Hough 變換求取圓心創(chuàng)造良好的條件。通過(guò)Hough 變換求取僅僅包含圓心的圖像,并對(duì)該圖像圓心進(jìn)行歸一化處理。對(duì)灰度圖像采用Ostu 二值化方法進(jìn)行處理,得到字體細(xì)節(jié)更為明顯的圖像,以便細(xì)化獲取更好的統(tǒng)計(jì)結(jié)果。通過(guò)像素統(tǒng)計(jì)可以得到棋子的像素特征向量,從而為識(shí)別做好準(zhǔn)備。單一的像素點(diǎn)個(gè)數(shù)作為特征向量,對(duì)32 個(gè)棋子進(jìn)行識(shí)別難度不算太大,但是對(duì)棋子圖像的顏色進(jìn)行分類(lèi),可以保證識(shí)別的正確性更高。所以,本研究利用獲得圓心的圖像和圖像HIS 中的S 分量圖像,進(jìn)行類(lèi)似的像素點(diǎn)統(tǒng)計(jì),就可以獲得到棋子顏色的信息,從而可以對(duì)像素點(diǎn)個(gè)數(shù)的特征向量在更少的棋子中進(jìn)行分類(lèi)。此時(shí)就可以使用不變矩對(duì)細(xì)化圖像中分割出來(lái)的字體進(jìn)行分類(lèi),進(jìn)一步提高識(shí)別結(jié)果的可靠性。開(kāi)局的初始化算法如圖6 所示。
圖6 開(kāi)局的初始化算法
獲取棋子的圓形實(shí)驗(yàn)結(jié)果如圖7 所示。
圖7 原始圖像和求取的圓心坐標(biāo)
對(duì)弈進(jìn)行中的算法[9-10]從一定程度上來(lái)看是棋局初始化的重復(fù),但不可能完全重復(fù),因?yàn)檫@一過(guò)程不具備初始化時(shí)的一個(gè)重要條件:充裕的運(yùn)行時(shí)間。故而對(duì)該算法做出一定的調(diào)整是必須的。鑒于此,設(shè)計(jì)了去掉冗余信息的方法使運(yùn)行時(shí)間縮減,同時(shí)又保證了運(yùn)行的正確性。對(duì)弈中算法如圖8 所示。
圖8 對(duì)弈中的算法流程圖
對(duì)弈中所獲取的實(shí)驗(yàn)結(jié)果如圖9 所示。
圖9 對(duì)弈進(jìn)行中所獲取實(shí)驗(yàn)結(jié)果
棋子識(shí)別主要利用了兩個(gè)特征:飽和度和文字像素點(diǎn)數(shù)。使用Hough 變換檢測(cè)到圓心后,即可以對(duì)圖像S 和圖像ImageThin 進(jìn)行處理,得到棋子紅黑特征和文字像素點(diǎn)數(shù)兩個(gè)特征。把棋子區(qū)分為紅黑特征后,就可以將32 個(gè)棋子分到兩個(gè)域中采用最小距離法進(jìn)行分類(lèi)。棋子識(shí)別的算法流程如圖10 所示。
圖10 棋子識(shí)別的算法流程圖
因?yàn)榧t黑容易區(qū)分,故而可以選擇在各自顏色范圍內(nèi)進(jìn)行區(qū)分,鑒于圖像為理想圖像,故而也可以直接進(jìn)行區(qū)分。識(shí)別率可達(dá)到100 %。如圖11和圖12 分別是理想棋子和理想棋子旋轉(zhuǎn)后的圖像。表4和表5是根據(jù)圖11和圖12計(jì)算的結(jié)果。
圖11 理想棋子圖像
圖12 旋轉(zhuǎn)后棋子圖像
對(duì)實(shí)際棋盤(pán)上的棋子圖像進(jìn)行像素統(tǒng)計(jì),所用的圖像是用數(shù)碼相機(jī)獲取的圖像,原始圖像如圖5 所示。
S 圖像中像素的統(tǒng)計(jì)針對(duì)棋子圓圈范圍內(nèi)大于某一閾值的像素點(diǎn)進(jìn)行,通過(guò)獲取的結(jié)果可以清晰地看出,紅黑棋子在S 圖像中的特征有非常大的區(qū)別,很容易區(qū)分。獲取到棋子的紅黑特征后,針對(duì)二值圖像細(xì)化后的結(jié)果進(jìn)行像素統(tǒng)計(jì),其統(tǒng)計(jì)結(jié)果如表6 所示。
其中表6 中的“行”為棋子行坐標(biāo);“列”為棋子列坐標(biāo);“ S ”為HIS 圖像的S 分量圖像大于某一閾值的像素點(diǎn)數(shù)量;“點(diǎn)”為二值圖像細(xì)化后,對(duì)圓域內(nèi)亮點(diǎn)的統(tǒng)計(jì)數(shù)。
通過(guò)表6 中的數(shù)據(jù)看出,在黑方中,分開(kāi)卒和炮有一定困難;在紅方中,幾乎不存在難以區(qū)分的棋子。只要對(duì)現(xiàn)有棋子進(jìn)行一些特殊處理,比如炮字體稍微增大等。經(jīng)過(guò)處理后,在分類(lèi)中便有了較大的選擇余地,使用最小距離法便可實(shí)現(xiàn)對(duì)棋子的正確分類(lèi)。實(shí)驗(yàn)結(jié)果表明,該方法的識(shí)別率達(dá)到98%以上。提高圖片的質(zhì)量后,識(shí)別率將會(huì)進(jìn)一步提高。
表4 根據(jù)圖11 理想棋子像素統(tǒng)計(jì)結(jié)果
表5 根據(jù)圖12 棋子旋轉(zhuǎn)后像素統(tǒng)計(jì)結(jié)果
表6 棋子識(shí)別結(jié)果
本研究主要完成了象棋機(jī)器人視覺(jué)識(shí)別算法的研究并給出了實(shí)驗(yàn)結(jié)果。整個(gè)算法流程劃分為開(kāi)局初始化和對(duì)弈進(jìn)行中兩個(gè)步驟。對(duì)棋子進(jìn)行識(shí)別時(shí),使用Hough 變換得到棋子紅黑特征和文字像素點(diǎn)數(shù)兩個(gè)特征。把棋子區(qū)分為紅黑后,就可以將32 個(gè)棋子分到兩個(gè)域中采用最小距離法進(jìn)行分類(lèi),對(duì)理想棋子識(shí)別的結(jié)果表明識(shí)別率可以達(dá)到100 %,數(shù)碼相機(jī)獲得棋盤(pán)圖像將棋子定位后的識(shí)別率為98%以上。
[1] 趙吉文. 基于SVM 的仿人對(duì)弈機(jī)器人視覺(jué)圖像處理[J].系統(tǒng)仿真學(xué)報(bào),2007,19(18):12-16.
[2] 葛洪央. 機(jī)器人運(yùn)動(dòng)學(xué)的旋量表述[J]. 安徽農(nóng)業(yè)科學(xué),2012,42(10):40-42.
[3] 蘇中. 基于激光雙目視覺(jué)系統(tǒng)的直徑測(cè)量[J]. 半導(dǎo)體光電,2008,30(1):18-20.
[4] 劉偉. 基于雙目立體視覺(jué)系統(tǒng)的精確標(biāo)定算法[J].兵工自動(dòng)化,2008,29(6):10-12.
[5] 謝妤嬋. 視覺(jué)目標(biāo)識(shí)別與三維定位關(guān)鍵技術(shù)的研究[D].天津:天津大學(xué),2009.
[6] 張祥合. 復(fù)雜場(chǎng)景中目標(biāo)識(shí)別與分類(lèi)的仿生原理和方法[D].吉林:吉林大學(xué),2012.
[7] 時(shí)國(guó)平. 工業(yè)機(jī)器人視教盒系統(tǒng)的設(shè)計(jì)[J]. 兵工自動(dòng)化,2006,15(5):37-40.
[8] 鐘韜. 系統(tǒng)標(biāo)定中的透視投影模型[J]. 兵工自動(dòng)化,2011,65(3):24-26.
[9] 朱嘉. 基于視覺(jué)與觸覺(jué)集成傳感的多坐標(biāo)組合測(cè)量系統(tǒng)的研究[D].天津:天津大學(xué),2010.
[10]王春麗. 中國(guó)象棋嵌入式視覺(jué)識(shí)別算法和程序開(kāi)發(fā)[D].北京:北方工業(yè)大學(xué),2010.