朱一峰
(朝陽師范高等專科學校 教務處,遼寧 朝陽 122000)
機器人技術是人工智能、模式識別、機械、仿生學等多學科的交叉學科產物。娛樂機器人的研究已成為機器人研究的重要方向。象棋機器人是娛樂機器人的研究方向之一,視覺系統是象棋機器人研究的關鍵部分。筆者基于計算機視覺和模式識別技術,研究了象棋機器人視覺算法,針對對弈的實際狀況,采用彩色空間變換、閾值分割、形態學骨架化及Hough 變換等圖像處理技術對棋局中的棋子進行檢測、定位和分割。通過提取棋子旋轉不變的徑向像素點數作為特征,克服了棋子方向隨意性帶來的識別問題。
象棋機器人對弈時的實時性要求非常高,而采用各種預處理及Hough 變換抗噪性強時必然要犧牲運算時間。對于開局初始化時,有足夠多的時間進行初始化;但是對于對弈進行中時,運算時間就變得很重要。因此在對弈時,采取前后兩幀圖像相減的方法進行了冗余信息剔除,從而大大節省了運算時間,而且能夠保證處理結果的準確性。所以,在本研究中將整個算法流程劃分為開局初始化和對弈進行中兩個步驟。
利用人為的從棋盤字符圖中切割出圖像的單個灰度字符作為實驗對象,對幾種二值化方法進行對比,找到規律與影響效果的因素,如圖1所示。

圖1 單個棋子的二值化結果
通過比較,可以看出幾種方法各有各的適宜條件,主要依賴于圖像質量。
1)對于由數碼相機拍攝、光照均勻、圖像質量好的圖片,固定閾值法與大津法都可以取得良好的二值效果,它們之間的不同在于大津法二值化的線條要比固定閾值法粗。而此時局部閾值法(3×3 窗口)易出現偽影現象,局部閾值法(5×5窗口)基本可以進行正確的分割,但是它的二值字符線條較細,容易產生不連續。
2)大津法[1]與動態大津法[2]的區別:動態大津法在處理字符線條的直線性方面優于大津法,如圖1 中(e)、(f)圖中第3 條橫線處。但是由于動態大津法是基于分塊的方法,在某一塊內需要包含有目標與背景像素,而且目標與背景各自內部的灰度變化范圍不大。如果在某一塊中,只有背景或者含有極少的目標的情況下,這時動態大津法就會出現分割錯誤,將整個背景區域都作為目標提取出來。
在實際中根據棋子的位置來選擇二值化方法。當棋子位置位于圖像左右兩端時采用大津法二值化,其余位置用固定閾值法。
Hough 變換[3]是檢測圓的有效方法。改進的原因是Hough 變換檢測圓所需的時間比較長。本研究采取了徑向和縱向取點的方法取得了3 個點。具體算法為:
1)獲取圖像中任意一亮點A。
2)沿A 點的徑向方向相距一定距離的位置開始搜索下一亮點,直至找到滿足條件點B。
3)同理,沿縱向方向求取另一點C。
4)根據A、B、C 3 點的坐標求取出圖像中圓的圓心及其半徑。
5)重復1),2),3),4)步,直到對圖像搜索完畢。
當圖像比較清晰、特征比較明顯時,可以求取出這樣的點。實驗結果如圖2 和圖3 所示。

圖2 預處理后圖像

圖3 使用改進的Hough 變換求取的圓心
但是在實際的圖像處理過程中,準確找到3 個點不是一件容易的事情。考慮到噪聲的影響,可以找出更多的點,提高魯棒性[4],從而保證處理結果正確。對圖4 進行Hough 變換所獲取的結果和改進后的Hough 變換獲取的結果如表1 所示。

圖4 棋子圖像

表1 傳統Hough 變換和改進后的Hough 變換結果比較
從表1 可見采用改進后的Hough 變換方法,圓心坐標與傳統Hough 幾乎一致,但是計算時間遠遠小于傳統Hough 變換。
由于棋盤初始化過程有較為充裕的時間,故而筆者對采集的圖像采用傳統Hough 變換進行初始化處理。這樣能夠提高所獲取初始數據的準確性。而在對弈進行的時候,采用改進的Hough 變換,既能保證準確性,又能提高識別速度,以滿足時間上的需要。
像素點是結合提取出的圓心以及細化前后的二值圖像進行處理的,處理后能夠以圓心所處位置進行附近圓域內像素點統計,本研究取統計半徑為棋子內邊界半徑的0. 95 倍。所使用的圖像如圖5 所示。

圖5 原始圖像
沒有進行細化的像素點個數統計結果如表2。
對圖像進行預處理[5],并且求取細化后的像素點個數見表3。其中包含棋子的坐標及圖像的S(飽和度)圖像像素統計。表中3 中的“行”為棋子行坐標;“列”為棋子列坐標;“ S ”為HIS 圖像的S 分量圖像大于某一閾值的像素點數量;“點”為二值圖像細化后,對圓域內亮點的統計數。第1個值代表圖5 最上面第1 行的紅色棋子“車”,第2個值代表第1行第2個棋子“兵”,……,以此類推。

表2 未經細化所求取的像素數結果

表3 細化后所求取的統計像素的結果
由表中S 值可見,紅色“車”的S 值為0,而黑色“車”的S 值為327,所以利用S 分量能夠很好地將棋子顏色分開。 S 圖像的特征可以正確分析出棋子的顏色。在S 圖像中識別出來顏色后,分別對黑色和紅色棋子進行分類,提高了識別率。因此采用統計棋子像素的方法獲取棋子特征對棋子識別。
在各種識別算法中最簡單、計算速度最快的識別方法是線性分類器,線性判別函數是形式最簡單的判別函數,它具有計算簡單、在一定條件下能實現最優分類的性質,因此得到了廣泛應用。在線性分類器的基礎上,用分段線性分類器可以實現更為復雜的分類。在實際應用中有很多模式識別問題并不是線性可分的,這時就需要采用非線性分類器。比如當兩類樣本分布具有多峰性質并互相交錯時,簡單的線性判別函數往往會帶來較大的分類錯誤。這時,樹分類器作為一種分段線性分類器,能有效地應用于這種情況。近鄰法[6]也是一種分段線性分類器。分段線性判別函數的極端情況,就是將各類中全部樣本都作為“代表點”,這時的決策方法稱為近鄰法。最初的近鄰法是于1968 年由Cover 和Hart 提出的,由于對該方法在理論上分析較為深入,直到現在依然是模式識別非參數法中最重要的方法之一。因此本研究選擇了最近鄰分類器進行識別。
開局初始化的最大優勢是時間充分,同時初始化的正確性,對對弈的整個進程都有決定性的意義,因此必須保證初始化的正確性。所以筆者利用時間充分的條件,設計了開局初始化算法[7-8]。
初始化算法如下:獲取到24 位真彩色圖像,這里由攝像頭采集進來的圖像僅僅是數據并不是BMP 格式的圖像,故而還要對圖像進行一些轉換,將所獲取的圖像數據填充到空白的BMP 格式的圖像文件中,從而得到了可處理的BMP 格式圖像文件。將BMP 圖像作為處理的依據,開始進行信息獲取。首先將真彩色圖像進行灰度變換獲取灰度圖像,然后進行RGB 色系到HIS 色系的轉換,獲取到S 圖像。對灰度圖像進行仿射變換并進行中值濾波,獲取新的灰度圖像,對新獲得灰度圖像進行適當增強,突出棋子前景。對灰度圖像進行二值化,使圖像中棋子前景和棋盤背景明顯地區分開。通過二值化獲取到的二值圖像含有少量噪聲,對含有噪聲圖像進行去噪處理,消除空穴,同時也能去掉非常大的反光噪聲。然后對圖像進行填充,得到包含所有棋子的圓域。對所獲取的圖像進行邊緣檢測就可以獲得僅僅包含棋子圓邊界的圖像,這樣就可以為Hough 變換求取圓心創造良好的條件。通過Hough 變換求取僅僅包含圓心的圖像,并對該圖像圓心進行歸一化處理。對灰度圖像采用Ostu 二值化方法進行處理,得到字體細節更為明顯的圖像,以便細化獲取更好的統計結果。通過像素統計可以得到棋子的像素特征向量,從而為識別做好準備。單一的像素點個數作為特征向量,對32 個棋子進行識別難度不算太大,但是對棋子圖像的顏色進行分類,可以保證識別的正確性更高。所以,本研究利用獲得圓心的圖像和圖像HIS 中的S 分量圖像,進行類似的像素點統計,就可以獲得到棋子顏色的信息,從而可以對像素點個數的特征向量在更少的棋子中進行分類。此時就可以使用不變矩對細化圖像中分割出來的字體進行分類,進一步提高識別結果的可靠性。開局的初始化算法如圖6 所示。

圖6 開局的初始化算法
獲取棋子的圓形實驗結果如圖7 所示。

圖7 原始圖像和求取的圓心坐標
對弈進行中的算法[9-10]從一定程度上來看是棋局初始化的重復,但不可能完全重復,因為這一過程不具備初始化時的一個重要條件:充裕的運行時間。故而對該算法做出一定的調整是必須的。鑒于此,設計了去掉冗余信息的方法使運行時間縮減,同時又保證了運行的正確性。對弈中算法如圖8 所示。

圖8 對弈中的算法流程圖
對弈中所獲取的實驗結果如圖9 所示。

圖9 對弈進行中所獲取實驗結果
棋子識別主要利用了兩個特征:飽和度和文字像素點數。使用Hough 變換檢測到圓心后,即可以對圖像S 和圖像ImageThin 進行處理,得到棋子紅黑特征和文字像素點數兩個特征。把棋子區分為紅黑特征后,就可以將32 個棋子分到兩個域中采用最小距離法進行分類。棋子識別的算法流程如圖10 所示。

圖10 棋子識別的算法流程圖
因為紅黑容易區分,故而可以選擇在各自顏色范圍內進行區分,鑒于圖像為理想圖像,故而也可以直接進行區分。識別率可達到100 %。如圖11和圖12 分別是理想棋子和理想棋子旋轉后的圖像。表4和表5是根據圖11和圖12計算的結果。

圖11 理想棋子圖像

圖12 旋轉后棋子圖像
對實際棋盤上的棋子圖像進行像素統計,所用的圖像是用數碼相機獲取的圖像,原始圖像如圖5 所示。
S 圖像中像素的統計針對棋子圓圈范圍內大于某一閾值的像素點進行,通過獲取的結果可以清晰地看出,紅黑棋子在S 圖像中的特征有非常大的區別,很容易區分。獲取到棋子的紅黑特征后,針對二值圖像細化后的結果進行像素統計,其統計結果如表6 所示。
其中表6 中的“行”為棋子行坐標;“列”為棋子列坐標;“ S ”為HIS 圖像的S 分量圖像大于某一閾值的像素點數量;“點”為二值圖像細化后,對圓域內亮點的統計數。
通過表6 中的數據看出,在黑方中,分開卒和炮有一定困難;在紅方中,幾乎不存在難以區分的棋子。只要對現有棋子進行一些特殊處理,比如炮字體稍微增大等。經過處理后,在分類中便有了較大的選擇余地,使用最小距離法便可實現對棋子的正確分類。實驗結果表明,該方法的識別率達到98%以上。提高圖片的質量后,識別率將會進一步提高。

表4 根據圖11 理想棋子像素統計結果

表5 根據圖12 棋子旋轉后像素統計結果

表6 棋子識別結果
本研究主要完成了象棋機器人視覺識別算法的研究并給出了實驗結果。整個算法流程劃分為開局初始化和對弈進行中兩個步驟。對棋子進行識別時,使用Hough 變換得到棋子紅黑特征和文字像素點數兩個特征。把棋子區分為紅黑后,就可以將32 個棋子分到兩個域中采用最小距離法進行分類,對理想棋子識別的結果表明識別率可以達到100 %,數碼相機獲得棋盤圖像將棋子定位后的識別率為98%以上。
[1] 趙吉文. 基于SVM 的仿人對弈機器人視覺圖像處理[J].系統仿真學報,2007,19(18):12-16.
[2] 葛洪央. 機器人運動學的旋量表述[J]. 安徽農業科學,2012,42(10):40-42.
[3] 蘇中. 基于激光雙目視覺系統的直徑測量[J]. 半導體光電,2008,30(1):18-20.
[4] 劉偉. 基于雙目立體視覺系統的精確標定算法[J].兵工自動化,2008,29(6):10-12.
[5] 謝妤嬋. 視覺目標識別與三維定位關鍵技術的研究[D].天津:天津大學,2009.
[6] 張祥合. 復雜場景中目標識別與分類的仿生原理和方法[D].吉林:吉林大學,2012.
[7] 時國平. 工業機器人視教盒系統的設計[J]. 兵工自動化,2006,15(5):37-40.
[8] 鐘韜. 系統標定中的透視投影模型[J]. 兵工自動化,2011,65(3):24-26.
[9] 朱嘉. 基于視覺與觸覺集成傳感的多坐標組合測量系統的研究[D].天津:天津大學,2010.
[10]王春麗. 中國象棋嵌入式視覺識別算法和程序開發[D].北京:北方工業大學,2010.