本發(fā)明涉及圖像處理領(lǐng)域,尤其涉及在光線不均、強烈反射或深色陰影等復雜光照環(huán)境下的圍棋機器人視覺識別方法。
背景技術(shù):
1、隨著人工智能和機器人技術(shù)的發(fā)展,圍棋機器人逐漸成為一個重要的研究方向。在實際應(yīng)用中,圍棋機器人需要能夠識別棋盤上的黑白棋子并實時做出響應(yīng),這對視覺識別技術(shù)提出了嚴峻的挑戰(zhàn)。
2、當前大多數(shù)圍棋機器人依賴于傳統(tǒng)的視覺識別技術(shù),這些技術(shù)通常在光照條件相對穩(wěn)定的環(huán)境中表現(xiàn)良好。然而,在實際應(yīng)用中,光照條件經(jīng)常變化,如自然光的變化、陰影、反光等,使得視覺識別的準確性和魯棒性大大降低。復雜的光照環(huán)境對圍棋機器人的視覺識別提出了更高的要求,這種環(huán)境包括不同亮度、光線方向、反射和遮擋等情況,使得對棋盤和棋子的準確識別變得困難重重。
技術(shù)實現(xiàn)思路
1、鑒于以上所述,本發(fā)明提供了一種用于圍棋機器人的視覺識別算法。特別注重在復雜光照環(huán)境下的適用性。該算法通過引入多邊形擬合算法與霍夫圓檢測算法,能夠在不同光照條件下穩(wěn)定、準確地識別棋盤和棋子。
2、本發(fā)明方法不僅在穩(wěn)定光照條件下表現(xiàn)出色,更在復雜光照環(huán)境下展現(xiàn)出極高的魯棒性和適應(yīng)性。它的引入為圍棋機器人的視覺識別帶來了新的突破,使其能夠在各種復雜環(huán)境中準確、快速地識別棋盤和棋子,提升了圍棋機器人的智能化水平和實用性。
3、本發(fā)明用于圍棋機器人的視覺識別方法,包括以下步驟:
4、s1使用攝像頭對圍棋棋盤進行空棋盤圖像采集,通過計算空棋盤圖像的灰度直方圖、不同區(qū)域的局部方差以及識別圖像中的邊緣區(qū)域,對空棋盤圖像進行自適應(yīng)高斯模糊處理。
5、s2使用高斯加權(quán)平均自適應(yīng)閾值二值化,處理自適應(yīng)高斯模糊處理后的圖像,得到二值化圖像,并通過邊界跟隨算法從二值化圖像中提取輪廓。
6、s3將提取到的輪廓進行基于douglas-pucker(道格拉斯-普克)算法的多邊形擬合,找到滿足約束條件的一個多邊形,并將這個多邊形以一組包含四個頂點坐標的二維數(shù)組保存。
7、s4對得到的二維數(shù)組四個頂點坐標進行排序,應(yīng)用排序后的二維數(shù)組通過透視變換獲得標準化的棋盤圖像,建立全零矩陣代表棋盤上棋子全為空的初始狀態(tài)。
8、s5進行棋子識別。對棋盤圖像,通過均勻分割獲取棋盤網(wǎng)格點。對每個網(wǎng)格點區(qū)域進行改進的霍夫圓檢測,確定棋子圓心位置,以定位的圓心位置為中心對霍夫圓區(qū)域進行三值化分割,得到霍夫圓區(qū)域三值化分割后的圖像,基于三值化區(qū)域三種元素的數(shù)量大小建立自適應(yīng)排錯機制:判定黑白棋子的顏色,同時將誤識別的格點區(qū)域判定為空。
9、s6根據(jù)排錯機制判定的結(jié)果,保存識別結(jié)果,通過全零矩陣接收棋盤上棋子的信息變化,將判定為黑子格點位置矩陣值變?yōu)?,判定為白子位置矩陣值變?yōu)?,完成識別。
10、進一步的,步驟s1進一步包括:
11、s11通過將空棋盤圖片從rgb空間轉(zhuǎn)換到灰度空間中,得到空棋盤灰度圖像,其中灰度空間中灰度值的計算公式為y=0.299·r+0.587·g+0.114·β。其中r、g、b分別表示紅、綠、藍三個通道的像素值,y為轉(zhuǎn)換后的灰度值,通過公式得到棋盤灰度圖像。
12、s12計算空棋盤灰度圖像的灰度直方圖,用于分析圖像的亮度和對比度?;叶戎狈綀D的計算公式為:其中i(x,y)是像素(x,y)的值,g是狄拉克函數(shù),用于在某一特定值時輸出1,其余情況下輸出0,w和h分別是空棋盤灰度圖像的寬度和高度?;叶戎狈綀D的結(jié)果用于后續(xù)步驟中對不同區(qū)域進行自適應(yīng)處理。
13、s13基于灰度直方圖對棋盤灰度圖像進行canny邊緣檢測,首先使用高斯濾波器平滑灰度直方圖,高斯濾波器標準差根據(jù)灰度直方圖的亮度分布進行調(diào)整,以增強對比度或保留細節(jié)。再使用sobel算子計算平滑后的灰度直方圖的梯度幅值g(x,y)和梯度方向θ(x,y),得到梯度幅值圖像:其中g(shù)x和gy分別表示梯度幅值圖像在水平方向和垂直方向上的梯度。最后,基于梯度幅值,沿梯度方向抑制非極大值,并使用兩個閾值對梯度幅值圖像進行雙閾值邊緣連接處理,得到邊緣區(qū)域。
14、s14基于檢測到的邊緣區(qū)域,計算空棋盤灰度圖像中不同區(qū)域的局部方差。
15、局部方差的計算公式如下其中,ui,j是像素(i,j)周圍區(qū)域的平均值,是像素(i,j)周圍區(qū)域局部方差,n=2k+1是窗口大小,u是水平方向相對于像素(i,j)的偏移量,v是垂直方向相對于像素(i,j)的偏移量。
16、s15根據(jù)邊緣區(qū)域和局部方,動態(tài)調(diào)整高斯濾波參數(shù)δi,j。定義三個標準差值:基礎(chǔ)標準差δ0,邊緣區(qū)域標準差δedge,高方差區(qū)域標準差δhigh-variance;對每個像素(i,j):其中e(i,j)是邊緣檢測結(jié)果,mean(r2)是局部方差的平均值。
17、s16對于每個像素(i,j),使用s15中動態(tài)調(diào)整的δi,j應(yīng)用高斯濾波:在窗口大小li,j*li,j內(nèi),對窗口區(qū)域進行高斯模糊處理:最終得到自適應(yīng)高斯模糊處理后的灰度圖像。
18、進一步的,步驟s2進一步包括:
19、s21對自適應(yīng)高斯模糊處理后的灰度圖像進行二值化處理,使用高斯加權(quán)平均自適應(yīng)閾值二值化的方法,根據(jù)二值化處理后灰度圖像每個局部區(qū)域的光照條件自動調(diào)整閾值;假設(shè)給定輸入圖像為i(x,y),通過自適應(yīng)閾值二值化得到二值化圖像其中t(h,f)是在點(h,f)處的局部閾值,其中,n(h,f)是以點(h,f)為中心的鄰域區(qū)域,ω(i,j)是根據(jù)高斯分布計算的權(quán)重,權(quán)重的計算依賴于鄰域內(nèi)像素(i,j)相對于中心(h,f)的距離。具體地,權(quán)重可以表示為高斯函數(shù):其中,σ是高斯函數(shù)的標準差。
20、s22對于步驟s21中得到的二值化圖像,將非零像素視為對象,零像素視為背景;通過邊界跟隨算法識別二值化圖像中的輪廓,算法沿著背景像素的邊界進行掃描,找到所有連續(xù)的邊界點,將邊界點連接,形成輪廓線條,表示對象的邊緣;最終返回一組包含所有輪廓的集合p。
21、進一步的,步驟s3進一步包括:
22、s31對于步驟s2中得到的輪廓集合p,使用基于douglas-pucker(道格拉斯-普克)算法的多邊形擬合方法,將每一個輪廓集合p中的元素簡化為一個多邊形;假定容差閾值ε,該閾值用于控制多邊形簡化的精度。較大的ε會產(chǎn)生更加簡化的多邊形,而較小ε的則保持更多的原始細節(jié)。對于輪廓集合p中的每一條曲線,從曲線的起點和終點開始,計算所有其他點到連接起點和終點的直線的距離。假設(shè)曲線的起點為pj,終點為pk,某中間點為pm,則計算點pm到線段的垂直距離dk,計算公式為:其中,(xj,yj)和(xk,yk)分別為起點和終點的坐標,(xm,ym)為中間點的坐標。通過遞歸分割:找到曲線上距線段最遠的點pmax,計算其距離dmax。如果dmax≥ε,則將曲線在pmax處分割為兩段,并對每段遞歸應(yīng)用同樣的算法,直到所有點到相應(yīng)線段的距離都小于ε;如果dmax<ε,則將當前的起點和終點直接連接,忽略中間的點。集合p里所有元素通過遞歸分割后形成一個新的多邊形集合p1。每一個元素都是由原始輪廓經(jīng)過簡化后的版本,保留了主要的幾何特征。
23、s32依次遍歷多邊形集合p1,判定每個元素的邊數(shù),為四邊形則保留,不為四邊形丟棄,最終得到一組四邊形集合p2。
24、s33計算棋盤實際面積。本發(fā)明所使用的圍棋機器人攝像頭安裝在固定高度的支架上,通過不可調(diào)節(jié)的剛性結(jié)構(gòu)保證攝像頭在整個操作過程中的高度不會發(fā)生變化。該設(shè)計確保攝像頭捕捉的棋盤圖像保持一致的像素面積,避免因高度變化導致的圖像偏差。使用opencv的鼠標事件選擇棋盤的四個頂點坐標,設(shè)四個頂點按順時針方向坐標為:(x1,y1),(x2,y2),(x3,y3),(x4,y4)。使用向量法公式計算四邊形的面積:得到area為棋盤實際面積。
25、s34依次遍歷四邊形集合p2,計算每個四邊形的面積,將每個四邊形面積依次與棋盤實際面積area作差,返回差值絕對值最小的四邊形,結(jié)果以一組包含四個頂點坐標的二維數(shù)組形式保存。
26、進一步的,步驟s4中,對得到的二維數(shù)組四個元素進行排序,按x坐標將頂點分為左右兩組,按y坐標排序得到上下兩個點,按順時針順序輸出頂點,應(yīng)用排序后的二維數(shù)組通過透視變換獲得標準化的800×800空棋盤圖像。建立19×19的全零矩陣代表棋盤上棋子全為空的初始狀態(tài)。
27、進一步的,步驟s5進一步包括:
28、s51棋盤上開始落子,進行棋子識別。棋盤由19條水平線和19條垂直線構(gòu)成,每兩條相鄰線之間形成一個方格,所以將棋盤圖像的長(水平方向)和寬(垂直方向)分別均勻分割為20份。此時,在水平和垂直方向上各有19條分割線,兩兩相交,最終得到19×19個網(wǎng)格點。對于(i1,j1)(1≤i1≤19,1≤j1≤19)位置網(wǎng)格點,其水平位置為像素,其垂直位置為像素,其中i為該網(wǎng)格點在水平方向上的序號,j為該網(wǎng)格點在垂直方向上的序號。
29、s52對于步驟s51得到的19×19個網(wǎng)格點位置,劃分為19×19個像素區(qū)域,依次對每一個像素區(qū)域進行霍夫圓檢測。
30、s53由于圖像噪聲與棋子拖影的影響,以及霍夫圓的最小和最大半徑、累加器閾值參數(shù)設(shè)置不精確,所以在空格點像素區(qū)域可能會出現(xiàn)誤識別的霍夫圓,且每個像素區(qū)域里可能檢測到多個霍夫圓,將一個像素區(qū)域檢測到霍夫圓面積集合定義為s1={t1,t2,…tn}。
31、s54計算棋子實際面積,由于攝像頭高度固定,棋子大小固定,所以棋子面積相對固定。在光照均勻環(huán)境下的空棋盤圖片格點位置上,放一顆白色棋子,取以該格點為中心包含白色棋子的矩形區(qū)域,將這個矩形區(qū)域轉(zhuǎn)換到hsv空間,定義白色的hsv閾值范圍為[0,0,200]~[180,50,255],根據(jù)這個hsv閾值范圍生成只包含白色區(qū)域的掩膜,計算掩膜中非零像素的數(shù)量,即為白色棋子的像素面積s,黑子像素面積與白子相同,均為s。
32、s55取集合s1中與s差值絕對值最小元素t與差值絕對值第二小的元素y。
33、s56定義每個霍夫圓區(qū)域中t,y兩圓圓心距為m,根據(jù)兩圓圓心(x11,y11)與(x21,y21)坐標求出圓心距定義圓心距閾值為th,存在霍夫圓的格點區(qū)域數(shù)為n,定義圓心距閾值計算公式為:對于圓心距小于等于閾值th的霍夫圓區(qū)域,返回t霍夫圓;對于圓心距大于閾值th的區(qū)域,根據(jù)識別的t霍夫圓周圍灰度值的分布情況,確定陰影朝向,將靠近陰影一側(cè)偏離實際圓心位置的霍夫圓剔除,得到每個像素區(qū)域內(nèi)棋子的圓心位置。
34、s57根據(jù)棋子圖片里得到的棋子準確圓心位置,在空棋盤灰度空間里的對應(yīng)圓心區(qū)域獲取每個圓心區(qū)域灰度值的最小值th1與最大值th2;在棋子圖片灰度空間里根據(jù)對應(yīng)圓心區(qū)域的最小值th1與最大值th2進行三值化分割,圓心區(qū)域灰度化后每一個灰度點f在三值化過程中變?yōu)槠渲衋,b,c為三值化后棋子區(qū)域在灰度圖的三種值,得到棋子三值化圖像。
35、s58根據(jù)步驟s57中獲取到的棋子三值化圖像,假設(shè)求和函數(shù)為sum(x),x表示某個三值化圖像里的某個灰度值,通過求和函數(shù)統(tǒng)計每個三值化區(qū)域內(nèi)的sum(a),sum(b),sum(c),建立自適應(yīng)排錯機制判定棋子:
36、(1)若sum(a)≥sum(c)且sum(a)≥sum(b),判定為黑子。
37、(2)若sum(a)<sum(c)且sum(c)≥sum(b),判定為白子。
38、(3)其余情況均判定為空。
39、通過自適應(yīng)排錯機制第(1)(2)條,判定棋子黑白顏色,同時第(3)條將可能出現(xiàn)在空格點位置霍夫圓,即誤識別的霍夫圓判定為空,保證棋子識別的準確性。
40、進一步的,步驟s6中,保存識別結(jié)果。保存s4中排序后的二維數(shù)組作為棋盤定位結(jié)果;根據(jù)排錯機制判定的結(jié)果作為棋子識別結(jié)果,通過19×19全零矩陣接收棋盤上棋子的信息變化,將判定為黑子格點位置矩陣值變?yōu)?,判定為白子位置矩陣值變?yōu)?。
41、本發(fā)明相比于現(xiàn)有技術(shù),具有以下有益效果:
42、引入自適應(yīng)高斯模糊處理與高斯加權(quán)平均自適應(yīng)閾值二值化的方法,根據(jù)圖像每個局部區(qū)域的光照條件自動調(diào)整高斯濾波器的標準差與自適應(yīng)閾值,有效克服由于光線不均、強烈反射或深色陰影等復雜光照環(huán)境帶來的干擾;并將高斯加權(quán)平均自適應(yīng)閾值二值化與基于douglas-pucker(道格拉斯-普克)算法的多邊形擬合方法結(jié)合,將輪廓檢測后的非封閉幾何圖形后處理為封閉幾何圖形,有效提高在強光與強陰影干擾下棋盤定位的準確性。
43、將改進的霍夫圓檢測算法用于棋盤上棋子的定位,有效克服在復雜光照環(huán)境下棋子漏識別與棋子定位不準的問題;并通過三值化算法,根據(jù)每一次對局所定位的空棋盤圖像,對定位到霍夫圓的圓心區(qū)域進行三值化分割,根據(jù)三值化的結(jié)果建立自適應(yīng)排錯機制,有效克服在復雜光照環(huán)境下棋子誤識別的問題。
44、所提算法應(yīng)用在圍棋機器人視覺系統(tǒng),有效提高圍棋機器人在復雜光照環(huán)境下進行圍棋對弈的穩(wěn)定性。