亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種對實(shí)物象棋的識(shí)別和處理方法

文檔序號(hào):10656113閱讀:325來源:國知局
一種對實(shí)物象棋的識(shí)別和處理方法
【專利摘要】本發(fā)明公開了一種對實(shí)物象棋的識(shí)別和處理方法,用于準(zhǔn)確的識(shí)別實(shí)物象棋的開局以及棋子的移動(dòng)。本發(fā)明通過對實(shí)物象棋開局進(jìn)行圖像的讀取和識(shí)別,來判斷實(shí)物象棋開局的棋子擺放位置是否正確,從而能夠使人機(jī)對弈能夠順利開始;同時(shí)對實(shí)物象棋的棋子移動(dòng)進(jìn)行圖像的讀取和識(shí)別,來判斷實(shí)物象棋的究竟哪個(gè)棋子進(jìn)行了移動(dòng),并且移動(dòng)到哪個(gè)位置,從而能夠使電腦進(jìn)行相應(yīng)的對著。
【專利說明】
一種對實(shí)物象棋的識(shí)別和處理方法
技術(shù)領(lǐng)域
[0001 ]本發(fā)明涉及一種象棋的識(shí)別方法。
【背景技術(shù)】
[0002]現(xiàn)在人們經(jīng)常與電腦進(jìn)行下棋。一種是直接在電腦上通過鼠標(biāo)與電腦軟件對弈,另外一種是通過實(shí)物象棋與電腦對弈,棋手每下一步棋,電腦通過攝像頭讀取圖像數(shù)據(jù),電腦軟件根據(jù)棋手的棋招給出相應(yīng)的招數(shù),然后再控制機(jī)械手抓取實(shí)物象棋在真實(shí)棋盤中進(jìn)行落子。對于后面這種情況,就需要對實(shí)物象棋進(jìn)行準(zhǔn)確的識(shí)別。

【發(fā)明內(nèi)容】

[0003]本發(fā)明的目的是提供一種對實(shí)物象棋的識(shí)別和處理方法,用于準(zhǔn)確的識(shí)別實(shí)物象棋的開局以及棋子的移動(dòng)。
[0004]本發(fā)明提供的技術(shù)方案是:
[0005]—種對實(shí)物象棋棋子移動(dòng)識(shí)別方法,包括以下步驟:
[0006]I)建立實(shí)物棋子的模板,根據(jù)棋子的不同類型確定需要的模板種類,將需要建立模板的棋子在棋盤的上下左右中間各個(gè)位置都放置一次,用攝像頭去獲取圖像并截取棋子區(qū)域編輯保存,同時(shí)為了增加對各種光強(qiáng)下的適應(yīng)性,特地在多個(gè)光環(huán)境下進(jìn)行取像;
[0007]2)棋盤位置的校準(zhǔn),校準(zhǔn)過程如下:a圖像坐標(biāo)系的建立,假設(shè)攝像頭獲取的圖像規(guī)格是N*M的,整個(gè)圖像以最左上角為原點(diǎn)(O,O ),最右上角的點(diǎn)的坐標(biāo)為(O,N ),最左下角的點(diǎn)坐標(biāo)為(M,0),以此類推,b粗調(diào),調(diào)整攝像頭和棋盤,使得攝像頭獲得的圖像肉眼看起來剛好覆蓋住整個(gè)棋牌,c微調(diào),在顯示屏的正中間顯示橫縱方向的兩條線,用于對準(zhǔn)象棋棋盤的河界上的線和“將帥”所處的那條中間線,如果重合,就可以認(rèn)為當(dāng)前位置棋盤位于圖像的正中間,每次校準(zhǔn)都以這個(gè)相對位置為基準(zhǔn);
[0008]3)具體棋子的識(shí)別過程,對攝像頭獲取的開局圖像進(jìn)行處理,識(shí)別出各個(gè)位置的棋子是否正確放置,即判斷是否放了棋子,放的棋子的種類是否正確,放的棋子的顏色是否正確,具體包括以下步驟:
[0009]a棋子位置的確定,首先正確放置棋子,在采集的圖像中確定各個(gè)棋子的坐標(biāo),下次就可以讀取這些坐標(biāo)信息來判斷該位置的棋子是否放置正確,
[0010]b棋子區(qū)域的獲取,以之前保存的坐標(biāo)信息為圓心,20個(gè)像素長為半徑作圓就得到棋子區(qū)域,
[0011 ] c棋子區(qū)域的具體處理,獲得棋子的區(qū)域后建立目標(biāo)棋子的數(shù)據(jù)信息,
[0012]d數(shù)據(jù)信息的匹配,按照c得到的數(shù)據(jù)信息來模板里匹配,匹配的話就是遍歷整幅模板圖像,循環(huán)檢查每個(gè)區(qū)域的輪廓和數(shù)據(jù)的相似度;
[0013]4)整個(gè)開局掃描過程,首先讀取模板圖像,然后依次選取應(yīng)該有棋子的區(qū)域,然后循環(huán)執(zhí)行第3)步:具體棋子的識(shí)別過程,將每個(gè)棋子區(qū)域都判斷一遍,如果每個(gè)都正確,都放在了各自應(yīng)該放的區(qū)域,那么就認(rèn)為開局掃描成功;
[0014]5)當(dāng)開局之后,實(shí)物棋子走動(dòng)之后,將棋子走動(dòng)前后的圖像分別進(jìn)行預(yù)處理,獲得兩幅圖像;
[0015]6)將兩幅圖像相減得到圖像G1,圖像Gl上顯示,在棋子移動(dòng)前后的位置處有2個(gè)月牙型的白色亮斑,而其他區(qū)域都是黑色,越黑的地方表示是該處像素點(diǎn)的值越接近零,因?yàn)樵搱D像是兩幅圖像的差圖像,所以該圖像的黑色區(qū)域代表的是兩幅圖像在該處的像素點(diǎn)的值接近,也就是前后兩幅圖像沒有變化的地方,那么相反地,越亮的地方代表前后兩幅圖像在該處越不接近,也就是變化的地方;
[0016]7)對圖像Gl中亮區(qū)域進(jìn)行處理得到具體的移動(dòng)前后坐標(biāo),包括以下步驟:
[0017]①閾值選擇,選出亮度在200到255之間的區(qū)域得到圖像G2;
[0018]②閉運(yùn)算去除區(qū)域中一些小的隔斷區(qū)域得到圖像G3,閉運(yùn)算就是通過一個(gè)指定大小形狀的圖形作為結(jié)構(gòu)元素,先對圖像進(jìn)行膨脹操作,然后進(jìn)行腐蝕操作,目的是在不明顯改變區(qū)域邊界大小的情況下,填充物體內(nèi)細(xì)小空間,連接相鄰區(qū)域和平滑邊界,膨脹的具體操作就是用結(jié)構(gòu)元素去掃描圖像每一個(gè)像素點(diǎn),如果結(jié)構(gòu)元素內(nèi)一個(gè)灰色區(qū)域像素點(diǎn)都沒有,就什么都不做,如果結(jié)構(gòu)元素內(nèi)包含任意一個(gè)及以上的像素點(diǎn),那就在原來灰色的區(qū)域的基礎(chǔ)上把整個(gè)結(jié)構(gòu)元素所包含的區(qū)域都加進(jìn)來,腐蝕的具體操作就是在掃描過程中如果結(jié)構(gòu)元素內(nèi)所有的點(diǎn)都是灰色區(qū)域,那就什么都不做,否則就在原來灰色區(qū)域的基礎(chǔ)上把整個(gè)結(jié)構(gòu)元素所包含的區(qū)域都減去;
[0019]③填充運(yùn)算除去一些空心區(qū)域得到圖像G4,填充運(yùn)算就是如果某個(gè)區(qū)域是非灰色選中區(qū)域,但是它被灰色選中區(qū)域所包圍了,那就把該區(qū)域也選中;
[0020]④縱向矩形開運(yùn)算,主要是為了分開兩個(gè)月牙區(qū)域,使之成為2個(gè)獨(dú)立的月牙區(qū)域,以長為20個(gè)像素點(diǎn),寬為2個(gè)像素點(diǎn)的長方形為結(jié)構(gòu)元素,對圖像G4進(jìn)行開運(yùn)算后得到圖像G5,開運(yùn)算的具體操作過程是先腐蝕再膨脹;
[0021]⑤橫向矩形開運(yùn)算,以長為2個(gè)像素點(diǎn),寬為20個(gè)像素點(diǎn)的長方形為結(jié)構(gòu)元素,對圖像G5進(jìn)行開運(yùn)算后得到圖像G6;
[0022]⑥兩個(gè)開運(yùn)算得到的區(qū)域的交集,不管是橫向移動(dòng)還是縱向移動(dòng),經(jīng)過上兩步和這一步都能分開兩個(gè)相鄰的棋子區(qū)域;
[0023]⑦面積選擇,選擇面積大于150個(gè)像素點(diǎn)的區(qū)域,排除圖像中的干擾;
[0024]⑧轉(zhuǎn)換為圓形得到圖像G8,根據(jù)等面積的原則,將分開的左右兩個(gè)區(qū)域轉(zhuǎn)換成兩個(gè)圓形區(qū)域;
[0025]⑨圓形中點(diǎn)即認(rèn)為是棋子的位置,從而得到棋子移動(dòng)前的位置和移動(dòng)后的位置。
[0026]步驟I)中,在取像的過程中特意將棋子進(jìn)行多次旋轉(zhuǎn),使得模版在匹配的時(shí)候?qū)Σ煌嵌鹊膱D像更加普適。
[0027]步驟I)中,在對模板圖像獲取后,對模板圖像進(jìn)行處理,在三通道的彩圖中選取單個(gè)綠色通道。
[0028]本發(fā)明通過對實(shí)物象棋開局進(jìn)行圖像的讀取和識(shí)別,來判斷實(shí)物象棋開局的棋子擺放位置是否正確,從而能夠使人機(jī)對弈能夠順利開始;同時(shí)對實(shí)物象棋的棋子移動(dòng)進(jìn)行圖像的讀取和識(shí)別,來判斷實(shí)物象棋的究竟哪個(gè)棋子進(jìn)行了移動(dòng),并且移動(dòng)到哪個(gè)位置,從而能夠使電腦進(jìn)行相應(yīng)的對著。
【附圖說明】
[0029]圖1為本發(fā)明的流程示意圖。
[0030]圖2為本發(fā)明的圖像處理的的金字塔層數(shù)的示意圖。
[0031]圖3為本發(fā)明對棋子移動(dòng)處理的圖像一。
[0032]圖4為本發(fā)明對棋子移動(dòng)處理的圖像二。
[0033]圖5為本發(fā)明對棋子移動(dòng)處理的圖像三。
[0034]圖6為本發(fā)明對棋子移動(dòng)處理的圖像四。
[0035]圖7為本發(fā)明對棋子移動(dòng)處理的圖像五。
[0036]圖8為本發(fā)明對棋子移動(dòng)處理的圖像六。
[0037]圖9為本發(fā)明對棋子移動(dòng)處理的圖像七。
[0038]圖10為本發(fā)明對棋子移動(dòng)處理的圖像八。
[0039 ]圖11為本發(fā)明對棋子移動(dòng)處理的圖像九。
[0040]圖12為本發(fā)明對棋子移動(dòng)處理的圖像十。
【具體實(shí)施方式】
[0041 ]下面結(jié)合附圖和【具體實(shí)施方式】對本發(fā)明進(jìn)行詳細(xì)說明。
[0042]第一步:預(yù)處理
[0043]本發(fā)明首先建立實(shí)物棋子的模板,模版的作用是:用于匹配,識(shí)別棋子的種類。模版的建立過程:
[0044]1.首先根據(jù)棋子的不同類型確定需要的模板種類。
[0045]中國象棋里紅黑雙方棋子各16個(gè),7種,同時(shí)紅黑部分棋子種類一樣,只是顏色不同,比如“紅士”和“黑士”,所以一副象棋總共棋子總類是10種?!氨?,“車”,“馬”,“相”,“士”,“帥”,“炮”,“卒”,“象”,“將”。需要建立模版的也是這10種棋子。
[0046]2.模版圖像的獲取
[0047]將需要建立模版的棋子在棋盤的上下左右中間各個(gè)位置都放置一次,用攝像頭去獲取圖像并截取棋子區(qū)域編輯保存。同時(shí)為了增加對各種光強(qiáng)下的適應(yīng)性,特地在多個(gè)光環(huán)境下進(jìn)行取像。另外,也有在取像的過程中特意將棋子進(jìn)行多次旋轉(zhuǎn),使得模版在匹配的時(shí)候?qū)Σ煌嵌鹊膱D像更加普適。
[0048]3.對模版圖像的處理
[0049]由于保存的是模版的一個(gè)彩色圖像,信息量比較大,不利于快速匹配,所以在匹配前將模版圖像進(jìn)行簡單的處理,即在3通道的彩圖中選取單個(gè)綠色通道。這樣既保留了棋子圖像的有效信息,又壓縮了信息量為快速匹配的可能建立基礎(chǔ)。
[0050]4.如何通過匹配獲得棋子種類
[0051]在模版圖像中如果成功匹配到某一區(qū)域,只要檢查該區(qū)域的縱坐標(biāo)就可以判斷棋子的種類。比如“兵”的縱坐標(biāo)是最小的,小于50,車在50到100之間,以此類推。
[0052]第二步:棋盤位置的校準(zhǔn)
[0053]為了使每次開局掃描時(shí)攝像頭和棋盤的相對位置是定值,每次開局前都需要對棋盤的位置進(jìn)行校準(zhǔn),校準(zhǔn)過程如下:
[0054]1.圖像坐標(biāo)系的建立,假設(shè)攝像頭獲取的圖像規(guī)格是N*M,本實(shí)施例為640*480的,整個(gè)圖像以最左上角為原點(diǎn)(0,0),最右上角的點(diǎn)的坐標(biāo)為(O,640),最左下角的點(diǎn)坐標(biāo)為(480,0),以此類推;
[0055]2.粗調(diào),調(diào)整攝像頭和棋盤,使得攝像頭獲得的圖像肉眼看起來剛好覆蓋住整個(gè)棋牌;
[0056]3.微調(diào),在顯示屏的正中間顯示橫縱方向的兩條線,用于對準(zhǔn)象棋棋盤的河界上的線和“將帥”所處的那條中間線,如果重合,就基本可以認(rèn)為當(dāng)前位置棋盤位于圖像的正中間,每次校準(zhǔn)都以這個(gè)相對位置為基準(zhǔn)。
[0057]第三步:具體棋子的識(shí)別過程
[0058]對攝像頭獲取的開局圖像進(jìn)行處理,識(shí)別出各個(gè)位置的棋子是否正確放置,即判斷是否放了棋子,放的棋子的種類是否正確,放的棋子的顏色是否正確等等。
[0059]1.棋子位置的確定。首先正確放置棋子,在采集的圖像中確定各個(gè)棋子的坐標(biāo)。比如左上角的黑車的坐標(biāo)是(30,80),邊上的馬的坐標(biāo)是(80,80)。以此類推存放所有的棋子的位置坐標(biāo)。下次就可以讀取這些坐標(biāo)信息直接使用。那么下次只要在(30,80)這個(gè)位置去尋找是否有黑車即可判斷該位置的子是否放置正確。
[0060]2.棋子區(qū)域的獲取。以之前保存的坐標(biāo)信息為圓心,20個(gè)像素長為半徑作圓就得到棋子區(qū)域。比如下圖就是一個(gè)“士”的棋子區(qū)域,根據(jù)之前保存的信息,這個(gè)“士”的坐標(biāo)位置是(180,80),那么就以該點(diǎn)為圓心,20為半徑作圓。之所以采用的是圓形區(qū)域而不是矩形區(qū)域是因?yàn)槠遄泳褪浅蕡A形的,用矩形區(qū)域的話反而會(huì)添加一些圖像干擾區(qū)域,采用圓形區(qū)域既能保留關(guān)鍵圖像信息,又能排除干擾。同時(shí),該圖像是彩色RGB3通道的圖中選取了G通道的圖像,目的是為了減少圖像的信息(三通道彩圖信息量大,單通道圖信息量小),提高處理速度。
[0061]3.棋子區(qū)域的具體處理。獲得棋子的區(qū)域后還不能直接用來和模版匹配,必須建立目標(biāo)棋子(在這里就是“士” )的數(shù)據(jù)信息。
[0062]①第一個(gè)數(shù)據(jù)信息就是目標(biāo)的輪廓。接下來的操作都是對目標(biāo)進(jìn)行操作,所以要求目標(biāo)必須有一個(gè)清晰可見又能便于分辨輪廓。輪廓取決于前景和背景的灰度值差別,前景就是“士”這個(gè)字,背景就是棋子區(qū)域的無字區(qū)域。兩者對比越明顯輪廓的提取就越容易。只要根據(jù)相鄰像素點(diǎn)灰度值的不同就可以得到的士輪廓。
[0063]②第二個(gè)數(shù)據(jù)信息就是圖像的金字塔層數(shù)。如圖2,所謂的圖像金字塔就是一個(gè)圖像可以被放大縮小,在圖像金字塔頂層的圖像尺寸小,信息量少,底層的圖像尺寸大,包含的信息量大。當(dāng)需要去尋找一個(gè)很“大”的棋子(近距離拍攝獲得的圖像)或者很“小”的棋子(遠(yuǎn)距離拍攝獲得的圖像)的時(shí)候,就需要加入圖像金字塔。這樣就能去匹配放大的或者縮小了的圖像。但是在本發(fā)明中由于每次獲得的圖像尺寸基本一樣,不會(huì)出現(xiàn)棋子被“放大”、“縮小”等現(xiàn)象,所以就可以將圖像金子塔設(shè)置為I層,即只有原始圖像。
[0064]③第三個(gè)數(shù)據(jù)信息就是旋轉(zhuǎn)角度。就是給的輪廓是角度a,如果需要尋找的目標(biāo)轉(zhuǎn)了90度變成了a+90度,此時(shí)還能用剛才的輪廓否找到。在本發(fā)明中,因?yàn)槿嗽陂_局?jǐn)[子和之后走子的過程中都無法避免的會(huì)改變棋子的角度,所以需要能夠360度都能找到。所以,在建立模版的時(shí)候在數(shù)據(jù)信息里加入了 360度的輪廓信息。
[0065]④最終的效果示意圖。示意圖的旋轉(zhuǎn)角度只是簡單的用了90度間隔,本發(fā)明真實(shí)數(shù)據(jù)信息包括的旋轉(zhuǎn)角度間隔是2度,信息量比示意圖更大。示意圖也給出了金字塔信息,本發(fā)明只用了最底層的信息,即示意圖中紅方框里的部分。最后就是用紅方框里信息去匹配。
[0066]4.數(shù)據(jù)信息的匹配。按照第3步得到的數(shù)據(jù)信息來這幅模版里匹配,匹配的話就是遍歷整幅模版圖像,循環(huán)檢查每個(gè)區(qū)域的輪廓和數(shù)據(jù)的相似度,相似度在O到I之間。一般情況下大于0.85就認(rèn)為是比較接近的圖像了。0.95以上基本就認(rèn)為是一模一樣的了。先用第一個(gè)“倒置的士”去匹配,比如得到分值最高的區(qū)域是(200,60),然后用第二個(gè)“轉(zhuǎn)了 90度的士”去匹配,比如得到分值最高的區(qū)域是(201,100),以此類推,最后選出分值最高的區(qū)域比如說是(200,60),那么就認(rèn)為此次匹配得到的區(qū)域是(200,60)。
[0067]第四步:整個(gè)開局掃描過程
[0068]首先讀取模版圖像,然后依次選取應(yīng)該有棋子的區(qū)域,然后循環(huán)執(zhí)行“第三步:具體棋子的識(shí)別過程”,將每個(gè)棋子區(qū)域都判斷一遍,如果每個(gè)都正確,都放在了各自應(yīng)該放的區(qū)域,那么就認(rèn)為開局掃描成功。其中,可能出現(xiàn)的錯(cuò)誤情況有:1.沒有掃描到棋子。這種情況即漏放棋子2.掃描到錯(cuò)誤的棋子種類。這種情況就是在放車的地方放了一個(gè)馬3.掃描到錯(cuò)誤的棋子顏色。應(yīng)該放紅車的地方放了黑車。
[0069]開局掃描完成后,雙方進(jìn)行對弈,實(shí)物棋子進(jìn)行了移動(dòng),以紅方的“當(dāng)頭兵”向前移動(dòng)一步為例進(jìn)行說明,之所以選取這一步來介紹是因?yàn)橐苿?dòng)的距離越短圖像處理起來越容易出錯(cuò)。
[0070]1.首先將兩幅圖像進(jìn)行預(yù)處理,在原本的三通道彩圖中取綠色單通道圖像。因?yàn)椴噬珗D像在本發(fā)明中亢余信息比較多,所以只需保留本發(fā)明所需的綠色單通道即可。
[0071]2.將兩幅圖像相減,得到圖像Gl,如圖3所示,可以清晰的看到在移動(dòng)前后的位置處有2個(gè)月牙型的白色亮斑外,而其他地方都是黑色的,越黑的地方表示是該處像素點(diǎn)的值越接近零,因?yàn)樵搱D像是兩幅圖像的差圖像,所以該圖像的黑色區(qū)域代表的是兩幅圖像在該處的像素點(diǎn)的值接近,也就是前后兩幅圖像沒有變化的地方,那么相反地,越亮的地方代表前后兩幅圖像在該處越不接近,也就是變化的地方。同時(shí),在圖像的右下角也有一些亮的區(qū)域,這是為可能移動(dòng)前后環(huán)境光線發(fā)生變化導(dǎo)致出現(xiàn)亮區(qū)域,這屬于干擾,接下來的處理會(huì)對其進(jìn)行特殊處理。
[0072]3.對亮區(qū)域進(jìn)行處理得到具體的移動(dòng)前后坐標(biāo)。
[0073]①閾值選擇,選出亮度在200到255之間的區(qū)域得到圖像G2,如圖4所示,肉眼可以觀察得到“月牙區(qū)域”也不是完整,有一些隔斷區(qū)域和鏤空區(qū)域,同時(shí)右下角的干擾也被選進(jìn)來了,但是我們觀察后大致可以猜出2個(gè)月牙就是對應(yīng)棋子移動(dòng)前后的位置。
[0074]②閉運(yùn)算去除區(qū)域中一些小的隔斷區(qū)域得到圖像G3,如圖5所示,閉運(yùn)算就是通過一個(gè)指定大小形狀的圖形作為結(jié)構(gòu)元素,先對圖像進(jìn)行膨脹操作,然后進(jìn)行腐蝕操作。目的是在不明顯改變區(qū)域邊界大小的情況下,填充物體內(nèi)細(xì)小空間,連接相鄰區(qū)域和平滑邊界。膨脹的具體操作就是用結(jié)構(gòu)元素(本發(fā)明中采用的是半徑為4個(gè)像素點(diǎn)的圓形圖形)去掃描圖像每一個(gè)像素點(diǎn),如果結(jié)構(gòu)元素內(nèi)一個(gè)灰色區(qū)域像素點(diǎn)都沒有,就什么都不做,如果結(jié)構(gòu)元素內(nèi)包含任意一個(gè)及以上的像素點(diǎn),那就在原來灰色的區(qū)域的基礎(chǔ)上把整個(gè)結(jié)構(gòu)元素所包含的區(qū)域都加進(jìn)來。腐蝕的具體操作就是在掃描過程中如果結(jié)構(gòu)元素內(nèi)所有的點(diǎn)都是灰色區(qū)域,那就什么都不做,不然就在原來灰色區(qū)域的基礎(chǔ)上把整個(gè)結(jié)構(gòu)元素所包含的區(qū)域都減去。
[0075]③填充運(yùn)算除去一些空心區(qū)域得到圖像G4,如圖6所示,填充運(yùn)算就是如果某個(gè)區(qū)域是非灰色選中區(qū)域,但是它的被灰色選中區(qū)域所包圍了,那就把該區(qū)域也選中。此次是填充了一個(gè)中間的小圓圈。
[0076]④縱向矩形開運(yùn)算。接下來的操作主要是為了分開兩個(gè)月牙區(qū)域,使之成為2個(gè)獨(dú)立的月牙區(qū)域。以長為20個(gè)像素點(diǎn)寬為2個(gè)像素點(diǎn)的長方形為結(jié)構(gòu)元素,對圖像G4進(jìn)行開運(yùn)算后得到圖像G5,如圖7所示,明顯可以看出開運(yùn)算能夠從中間“劈開”兩個(gè)月牙。開運(yùn)算的具體操作過程是先腐蝕再膨脹。
[0077]⑤橫向矩形開運(yùn)算。以長為2個(gè)像素點(diǎn)寬為20個(gè)像素點(diǎn)的長方形為結(jié)構(gòu)元素(和上一步僅僅置換了長方形的長寬),對圖像G5進(jìn)行開運(yùn)算后得到圖像G6,如圖8所示,看起來好像沒有起什么作用,確實(shí),這一步在此次移動(dòng)處理中沒有起分開2個(gè)棋子位置的作用,但是它存在的意義在于處理那么縱向移動(dòng)的情況。原理同上一步。
[0078]⑥兩個(gè)開運(yùn)算得到的區(qū)域的交集。不管是橫向移動(dòng)還是縱向移動(dòng),經(jīng)過上兩步和這一步都能分開兩個(gè)相鄰的棋子區(qū)域。需要聲明的是,第④到第⑥步都是為了處理只移動(dòng)一格的情況,在移動(dòng)了多格的情況下,這3步并沒有起作用。
[0079]⑦面積選擇。選擇面積大于150個(gè)像素點(diǎn)的區(qū)域,排除了上面提到的右下角的干擾。
[0080]⑧轉(zhuǎn)換為圓形得到圖像G7。根據(jù)等面積的原則,將分開的左右兩個(gè)區(qū)域轉(zhuǎn)換成兩個(gè)圓形區(qū)域,如圖9所示,到這里肉眼便可以很清晰的看出兩個(gè)棋子區(qū)域已經(jīng)浮現(xiàn)出來了。
[0081]⑨圓形中點(diǎn)即認(rèn)為是棋子的位置,從而得到棋子移動(dòng)前的位置和移動(dòng)后的位置;也就是能確定哪個(gè)棋子進(jìn)行了移動(dòng),并且移動(dòng)到了哪個(gè)位置。
[0082]以上步驟處理的是棋子移動(dòng)情況的識(shí)別,當(dāng)出現(xiàn)吃子現(xiàn)象的時(shí)候,處理起來就稍微復(fù)雜一點(diǎn),因?yàn)橛衅遄由俚袅恕H鐖D10所示,這是一副“帥”吃了 “將”的圖像,處理的目的是確定兩者位置,可以看出,移動(dòng)前的“帥”的位置比較明顯,而移動(dòng)后的位置相對來說簡單進(jìn)行上面步驟的處理是得不到的。除了先進(jìn)行上面步驟的處理,能夠得到右邊“帥”的位置。然后再循環(huán)查找黑色方是否有棋子發(fā)生顏色改變,發(fā)生改變的棋子位置就是紅方移動(dòng)后的位置。此方法需要保存黑色棋子的位置。至于紅黑棋子的識(shí)別,只需要在檢查一下該區(qū)域在綠色通道的平均亮度即可,黑棋子小于100,紅棋子大于100。
[0083]電腦通過以上步驟能夠?qū)?shí)物棋子進(jìn)行識(shí)別,包括靜態(tài)開局以及動(dòng)態(tài)走動(dòng)的識(shí)另IJ,電腦上安裝目前網(wǎng)絡(luò)上流行的象棋軟件。本發(fā)明所針對的是其中一款叫做“象棋巫師”的軟件。該軟件體積小巧,安裝完只占用1M存儲(chǔ)空間,但是棋力可以設(shè)定成很高。軟件界面也簡潔明了,而且每次走完一步后會(huì)用特殊的方框圈出移動(dòng)的前后位置,這一點(diǎn)對后續(xù)的圖像處理有非常大的幫助。由于象棋巫師是外部程序,無法直接從該軟件得到走法,所以仍舊需要對電腦端的棋局圖像進(jìn)行處理,然后得到相應(yīng)的移動(dòng)信息。本發(fā)明使用的是通過屏幕截圖軟件來獲取當(dāng)前的軟件棋局局勢,該軟件更加小巧迷你,能夠通過組合按鍵來截圖,并且能夠自動(dòng)保存在指定文件夾,這樣圖像處理的時(shí)候就能很方便的讀取然后處理。
[0084]例如在象棋軟件中,當(dāng)黑方移動(dòng)棋子“卒”之后,會(huì)有兩個(gè)藍(lán)色的四角矩形框顯示在移動(dòng)前后的位置上。目標(biāo)就是能夠從圖像中提取出這兩個(gè)框,這樣就能定位移動(dòng)前后的兩個(gè)坐標(biāo)位置。
[0085]1.選取四角矩形框。將截取的三通道彩色圖像轉(zhuǎn)成三幅R,G,B單通道的圖像,將R和B圖像相減,能夠得到如圖11的圖像,很明顯可以看出該圖像其他區(qū)域都是比較亮的,只有兩個(gè)四角矩形框比較黑,然后通過閾值選取就能很容易選取出所需的區(qū)域。
[0086]2.根據(jù)八格“L”型區(qū)域得到兩個(gè)矩形中心。需要注意的是,如果此時(shí)用簡單的從左到右從上到下進(jìn)行排序是不可取的,因?yàn)橛袝r(shí)候是紅色的“L”比綠色的“L”高,有時(shí)候卻是綠色的高,所以需要進(jìn)行一些數(shù)據(jù)處理,正確的得到2個(gè)中心坐標(biāo)。首先,可以從上一步得到是8個(gè)“L”各自的橫縱坐標(biāo),需要做的就是正確的將8個(gè)“L”分成兩組。我們可以利用的一點(diǎn)就是左右兩個(gè)“L”和上下兩個(gè)“L”的間距基本是個(gè)定值。只要循環(huán)對比坐標(biāo)差值是否在這個(gè)定值附近就可以確定他們在平面上的相對位置了。最后只要左右兩個(gè)“L”坐標(biāo)取平均,上下兩個(gè)“L”坐標(biāo)取平均就可以得到矩形的中心坐標(biāo),如圖12是光標(biāo)的區(qū)域圖像。
[0087]3.確定哪個(gè)是移動(dòng)前的坐標(biāo)哪個(gè)是移動(dòng)后的。在得到前后的位置之后只需要對比一下兩個(gè)區(qū)域在之前得到的G通道圖像里的平均亮度就可以了,沒有棋子的區(qū)域(移動(dòng)前的位置)會(huì)比有棋子的區(qū)域(移動(dòng)后的位置)亮很多(平均亮度大很多)。
【主權(quán)項(xiàng)】
1.一種對實(shí)物象棋的識(shí)別和處理方法,其特征在于,包括以下步驟: 1)建立實(shí)物棋子的模板,根據(jù)棋子的不同類型確定需要的模板種類,將需要建立模板的棋子在棋盤的上下左右中間各個(gè)位置都放置一次,用攝像頭去獲取圖像并截取棋子區(qū)域編輯保存,同時(shí)為了增加對各種光強(qiáng)下的適應(yīng)性,特地在多個(gè)光環(huán)境下進(jìn)行取像; 2)棋盤位置的校準(zhǔn),校準(zhǔn)過程如下:a圖像坐標(biāo)系的建立,假設(shè)攝像頭獲取的圖像規(guī)格是N*M的,整個(gè)圖像以最左上角為原點(diǎn)(O,0),最右上角的點(diǎn)的坐標(biāo)為(0,N),最左下角的點(diǎn)坐標(biāo)為(M,0),以此類推,b粗調(diào),調(diào)整攝像頭和棋盤,使得攝像頭獲得的圖像肉眼看起來剛好覆蓋住整個(gè)棋牌,c微調(diào),在顯示屏的正中間顯示橫縱方向的兩條線,用于對準(zhǔn)象棋棋盤的河界上的線和“將帥”所處的那條中間線,如果重合,就可以認(rèn)為當(dāng)前位置棋盤位于圖像的正中間,每次校準(zhǔn)都以這個(gè)相對位置為基準(zhǔn); 3)具體棋子的識(shí)別過程,對攝像頭獲取的開局圖像進(jìn)行處理,識(shí)別出各個(gè)位置的棋子是否正確放置,即判斷是否放了棋子,放的棋子的種類是否正確,放的棋子的顏色是否正確,具體包括以下步驟: a棋子位置的確定,首先正確放置棋子,在采集的圖像中確定各個(gè)棋子的坐標(biāo),下次就可以讀取這些坐標(biāo)信息來判斷該位置的棋子是否放置正確, b棋子區(qū)域的獲取,以之前保存的坐標(biāo)信息為圓心,20個(gè)像素長為半徑作圓就得到棋子區(qū)域, c棋子區(qū)域的具體處理,獲得棋子的區(qū)域后建立目標(biāo)棋子的數(shù)據(jù)信息, d數(shù)據(jù)信息的匹配,按照c得到的數(shù)據(jù)信息來模板里匹配,匹配的話就是遍歷整幅模板圖像,循環(huán)檢查每個(gè)區(qū)域的輪廓和數(shù)據(jù)的相似度; 4)整個(gè)開局掃描過程,首先讀取模板圖像,然后依次選取應(yīng)該有棋子的區(qū)域,然后循環(huán)執(zhí)行第3)步:具體棋子的識(shí)別過程,將每個(gè)棋子區(qū)域都判斷一遍,如果每個(gè)都正確,都放在了各自應(yīng)該放的區(qū)域,那么就認(rèn)為開局掃描成功; 5)當(dāng)開局之后,實(shí)物棋子走動(dòng)之后,將棋子走動(dòng)前后的圖像分別進(jìn)行預(yù)處理,獲得兩幅圖像; 6)將兩幅圖像相減得到圖像Gl,圖像Gl上顯示,在棋子移動(dòng)前后的位置處有2個(gè)月牙型的白色亮斑,而其他區(qū)域都是黑色,越黑的地方表示是該處像素點(diǎn)的值越接近零,因?yàn)樵搱D像是兩幅圖像的差圖像,所以該圖像的黑色區(qū)域代表的是兩幅圖像在該處的像素點(diǎn)的值接近,也就是前后兩幅圖像沒有變化的地方,那么相反地,越亮的地方代表前后兩幅圖像在該處越不接近,也就是變化的地方; 7)對圖像Gl中亮區(qū)域進(jìn)行處理得到具體的移動(dòng)前后坐標(biāo),包括以下步驟: ①閾值選擇,選出亮度在200到255之間的區(qū)域得到圖像G2; ②閉運(yùn)算去除區(qū)域中一些小的隔斷區(qū)域得到圖像G3,閉運(yùn)算就是通過一個(gè)指定大小形狀的圖形作為結(jié)構(gòu)元素,先對圖像進(jìn)行膨脹操作,然后進(jìn)行腐蝕操作,目的是在不明顯改變區(qū)域邊界大小的情況下,填充物體內(nèi)細(xì)小空間,連接相鄰區(qū)域和平滑邊界,膨脹的具體操作就是用結(jié)構(gòu)元素去掃描圖像每一個(gè)像素點(diǎn),如果結(jié)構(gòu)元素內(nèi)一個(gè)灰色區(qū)域像素點(diǎn)都沒有,就什么都不做,如果結(jié)構(gòu)元素內(nèi)包含任意一個(gè)及以上的像素點(diǎn),那就在原來灰色的區(qū)域的基礎(chǔ)上把整個(gè)結(jié)構(gòu)元素所包含的區(qū)域都加進(jìn)來,腐蝕的具體操作就是在掃描過程中如果結(jié)構(gòu)元素內(nèi)所有的點(diǎn)都是灰色區(qū)域,那就什么都不做,否則就在原來灰色區(qū)域的基礎(chǔ)上把整個(gè)結(jié)構(gòu)元素所包含的區(qū)域都減去; ③填充運(yùn)算除去一些空心區(qū)域得到圖像G4,填充運(yùn)算就是如果某個(gè)區(qū)域是非灰色選中區(qū)域,但是它被灰色選中區(qū)域所包圍了,那就把該區(qū)域也選中; ④縱向矩形開運(yùn)算,主要是為了分開兩個(gè)月牙區(qū)域,使之成為2個(gè)獨(dú)立的月牙區(qū)域,以長為20個(gè)像素點(diǎn),寬為2個(gè)像素點(diǎn)的長方形為結(jié)構(gòu)元素,對圖像G4進(jìn)行開運(yùn)算后得到圖像G5,開運(yùn)算的具體操作過程是先腐蝕再膨脹; ⑤橫向矩形開運(yùn)算,以長為2個(gè)像素點(diǎn),寬為20個(gè)像素點(diǎn)的長方形為結(jié)構(gòu)元素,對圖像G5進(jìn)行開運(yùn)算后得到圖像G6; ⑥兩個(gè)開運(yùn)算得到的區(qū)域的交集,不管是橫向移動(dòng)還是縱向移動(dòng),經(jīng)過上兩步和這一步都能分開兩個(gè)相鄰的棋子區(qū)域; ⑦面積選擇,選擇面積大于150個(gè)像素點(diǎn)的區(qū)域,排除圖像中的干擾; ⑧轉(zhuǎn)換為圓形得到圖像G8,根據(jù)等面積的原則,將分開的左右兩個(gè)區(qū)域轉(zhuǎn)換成兩個(gè)圓形區(qū)域; ⑨圓形中點(diǎn)即認(rèn)為是棋子的位置,從而得到棋子移動(dòng)前的位置和移動(dòng)后的位置。2.根據(jù)權(quán)利要求1所述的一種對實(shí)物象棋的識(shí)別和處理方法,其特征在于,步驟I)中,在取像的過程中特意將棋子進(jìn)行多次旋轉(zhuǎn),使得模版在匹配的時(shí)候?qū)Σ煌嵌鹊膱D像更加普適。3.根據(jù)權(quán)利要求1所述的一種對實(shí)物象棋的識(shí)別和處理方法,其特征在于,步驟I)中,在對模板圖像獲取后,對模板圖像進(jìn)行處理,在三通道的彩圖中選取單個(gè)綠色通道。
【文檔編號(hào)】G06K9/20GK106022327SQ201610307599
【公開日】2016年10月12日
【申請日】2016年5月10日
【發(fā)明人】顧敏明, 黃世青, 蔣琳
【申請人】浙江理工大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1