一种对实物象棋棋子移动识别方法

文档序号:10594602阅读:478来源:国知局
一种对实物象棋棋子移动识别方法
【专利摘要】本发明公开了一种对实物象棋棋子移动识别方法,用于准确的识别实物象棋棋子的移动。本发明通过对实物象棋的棋子移动进行图像的读取和识别,来判断实物象棋的究竟哪个棋子进行了移动,并且移动到哪个位置,从而能够使电脑进行相应的对着。
【专利说明】
_种对实物象棋棋子移动识别方法
技术领域
[0001 ]本发明涉及一种象棋的识别方法。
【背景技术】
[0002]现在人们经常与电脑进行下棋。一种是直接在电脑上通过鼠标与电脑软件对弈,另外一种是通过实物象棋与电脑对弈,棋手每下一步棋,电脑通过摄像头读取图像数据,电脑软件根据棋手的棋招给出相应的招数,然后再控制机械手抓取实物象棋在真实棋盘中进行落子。对于后面这种情况,就需要对实物象棋进行准确的识别。

【发明内容】

[0003]本发明的目的是提供一种对实物象棋棋子移动识别方法,用于准确的识别实物象棋棋子的移动。
[0004]本发明提供的技术方案是:
[0005]—种对实物象棋棋子移动识别方法,包括以下步骤:
[0006]I)首先将棋子走动前后的图像分别进行预处理,获得两幅图像;
[0007]2)将两幅图像相减得到图像G1,图像Gl上显示,在棋子移动前后的位置处有2个月牙型的白色亮斑,而其他区域都是黑色,越黑的地方表示是该处像素点的值越接近零,因为该图像是两幅图像的差图像,所以该图像的黑色区域代表的是两幅图像在该处的像素点的值接近,也就是前后两幅图像没有变化的地方,那么相反地,越亮的地方代表前后两幅图像在该处越不接近,也就是变化的地方;
[0008]3)对图像Gl中亮区域进行处理得到具体的移动前后坐标,包括以下步骤:
[0009 ]①阈值选择,选出亮度在200到255之间的区域得到图像G2 ;
[0010]②闭运算去除区域中一些小的隔断区域得到图像G3,闭运算就是通过一个指定大小形状的图形作为结构元素,先对图像进行膨胀操作,然后进行腐蚀操作,目的是在不明显改变区域边界大小的情况下,填充物体内细小空间,连接相邻区域和平滑边界,膨胀的具体操作就是用结构元素去扫描图像每一个像素点,如果结构元素内一个灰色区域像素点都没有,就什么都不做,如果结构元素内包含任意一个及以上的像素点,那就在原来灰色的区域的基础上把整个结构元素所包含的区域都加进来,腐蚀的具体操作就是在扫描过程中如果结构元素内所有的点都是灰色区域,那就什么都不做,否则就在原来灰色区域的基础上把整个结构元素所包含的区域都减去;
[0011]③填充运算除去一些空心区域得到图像G4,填充运算就是如果某个区域是非灰色选中区域,但是它被灰色选中区域所包围了,那就把该区域也选中;
[0012]④纵向矩形开运算,主要是为了分开两个月牙区域,使之成为2个独立的月牙区域,以长为20个像素点,宽为2个像素点的长方形为结构元素,对图像G4进行开运算后得到图像G5,开运算的具体操作过程是先腐蚀再膨胀;
[0013]⑤横向矩形开运算,以长为2个像素点,宽为20个像素点的长方形为结构元素,对图像G5进行开运算后得到图像G6;
[0014]⑥两个开运算得到的区域的交集,不管是横向移动还是纵向移动,经过上两步和这一步都能分开两个相邻的棋子区域;
[0015]⑦面积选择,选择面积大于150个像素点的区域,排除图像中的干扰;
[0016]⑧转换为圆形得到图像G8,根据等面积的原则,将分开的左右两个区域转换成两个圆形区域;
[0017]⑨圆形中点即认为是棋子的位置,从而得到棋子移动前的位置和移动后的位置。
[0018]本发明通过对实物象棋的棋子移动进行图像的读取和识别,来判断实物象棋的究竟哪个棋子进行了移动,并且移动到哪个位置,从而能够使电脑进行相应的对着。
【附图说明】
[0019]图1为本发明对棋子移动处理的图像一。
[0020]图2为本发明对棋子移动处理的图像二。
[0021]图3为本发明对棋子移动处理的图像三。
[0022 ]图4为本发明对棋子移动处理的图像四。
[0023 ]图5为本发明对棋子移动处理的图像五。
[0024]图6为本发明对棋子移动处理的图像六。
[0025]图7为本发明对棋子移动处理的图像七。
[0026]图8为本发明对棋子移动处理的图像八。
【具体实施方式】
[0027]下面结合附图和【具体实施方式】对本发明进行详细说明。
[0028]以红方的“当头兵”向前移动一步为例进行说明,之所以选取这一步来介绍是因为移动的距离越短图像处理起来越容易出错。
[0029]1.首先将两幅图像进行预处理,在原本的三通道彩图中取绿色单通道图像。因为彩色图像在本发明中亢余信息比较多,所以只需保留本发明所需的绿色单通道即可。
[0030]2.将两幅图像相减,得到图像Gl,如图1所示,可以清晰的看到在移动前后的位置处有2个月牙型的白色亮斑外,而其他地方都是黑色的,越黑的地方表示是该处像素点的值越接近零,因为该图像是两幅图像的差图像,所以该图像的黑色区域代表的是两幅图像在该处的像素点的值接近,也就是前后两幅图像没有变化的地方,那么相反地,越亮的地方代表前后两幅图像在该处越不接近,也就是变化的地方。同时,在图像的右下角也有一些亮的区域,这是为可能移动前后环境光线发生变化导致出现亮区域,这属于干扰,接下来的处理会对其进行特殊处理。
[0031]3.对亮区域进行处理得到具体的移动前后坐标。
[0032]①阈值选择,选出亮度在200到255之间的区域得到图像G2,如图2所示,肉眼可以观察得到“月牙区域”也不是完整,有一些隔断区域和镂空区域,同时右下角的干扰也被选进来了,但是我们观察后大致可以猜出2个月牙就是对应棋子移动前后的位置。
[0033]②闭运算去除区域中一些小的隔断区域得到图像G3,如图3所示,闭运算就是通过一个指定大小形状的图形作为结构元素,先对图像进行膨胀操作,然后进行腐蚀操作。目的是在不明显改变区域边界大小的情况下,填充物体内细小空间,连接相邻区域和平滑边界。膨胀的具体操作就是用结构元素(本发明中采用的是半径为4个像素点的圆形图形)去扫描图像每一个像素点,如果结构元素内一个灰色区域像素点都没有,就什么都不做,如果结构元素内包含任意一个及以上的像素点,那就在原来灰色的区域的基础上把整个结构元素所包含的区域都加进来。腐蚀的具体操作就是在扫描过程中如果结构元素内所有的点都是灰色区域,那就什么都不做,不然就在原来灰色区域的基础上把整个结构元素所包含的区域都减去。
[0034]③填充运算除去一些空心区域得到图像G4,如图4所示,填充运算就是如果某个区域是非灰色选中区域,但是它的被灰色选中区域所包围了,那就把该区域也选中。此次是填充了一个中间的小圆圈。
[0035]④纵向矩形开运算。接下来的操作主要是为了分开两个月牙区域,使之成为2个独立的月牙区域。以长为20个像素点宽为2个像素点的长方形为结构元素,对图像G4进行开运算后得到图像G5,如图5所示,明显可以看出开运算能够从中间“劈开”两个月牙。开运算的具体操作过程是先腐蚀再膨胀。
[0036]⑤横向矩形开运算。以长为2个像素点宽为20个像素点的长方形为结构元素(和上一步仅仅置换了长方形的长宽),对图像G5进行开运算后得到图像G6,如图6所示,看起来好像没有起什么作用,确实,这一步在此次移动处理中没有起分开2个棋子位置的作用,但是它存在的意义在于处理那么纵向移动的情况。原理同上一步。
[0037]⑥两个开运算得到的区域的交集。不管是横向移动还是纵向移动,经过上两步和这一步都能分开两个相邻的棋子区域。需要声明的是,第④到第⑥步都是为了处理只移动一格的情况,在移动了多格的情况下,这3步并没有起作用。
[0038]⑦面积选择。选择面积大于150个像素点的区域,排除了上面提到的右下角的干扰。
[0039]⑧转换为圆形得到图像G7。根据等面积的原则,将分开的左右两个区域转换成两个圆形区域,如图7所示,到这里肉眼便可以很清晰的看出两个棋子区域已经浮现出来了。
[0040]⑨圆形中点即认为是棋子的位置,从而得到棋子移动前的位置和移动后的位置;也就是能确定哪个棋子进行了移动,并且移动到了哪个位置。
[0041]以上步骤处理的是棋子移动情况的识别,当出现吃子现象的时候,处理起来就稍微复杂一点,因为有棋子少掉了。如图8所示,这是一副“帅”吃了“将”的图像,处理的目的是确定两者位置,可以看出,移动前的“帅”的位置比较明显,而移动后的位置相对来说简单进行上面步骤的处理是得不到的。除了先进行上面步骤的处理,能够得到右边“帅”的位置。然后再循环查找黑色方是否有棋子发生颜色改变,发生改变的棋子位置就是红方移动后的位置。此方法需要保存黑色棋子的位置。至于红黑棋子的识别,只需要在检查一下该区域在绿色通道的平均亮度即可,黑棋子小于100,红棋子大于100。
【主权项】
1.一种对实物象棋棋子移动识别方法,其特征在于,包括以下步骤: 1)首先将棋子走动前后的图像分别进行预处理,获得两幅图像; 2)将两幅图像相减得到图像Gl,图像Gl上显示,在棋子移动前后的位置处有2个月牙型的白色亮斑,而其他区域都是黑色,越黑的地方表示是该处像素点的值越接近零,因为该图像是两幅图像的差图像,所以该图像的黑色区域代表的是两幅图像在该处的像素点的值接近,也就是前后两幅图像没有变化的地方,那么相反地,越亮的地方代表前后两幅图像在该处越不接近,也就是变化的地方; 3)对图像Gl中亮区域进行处理得到具体的移动前后坐标,包括以下步骤: ①阈值选择,选出亮度在200到255之间的区域得到图像G2; ②闭运算去除区域中一些小的隔断区域得到图像G3,闭运算就是通过一个指定大小形状的图形作为结构元素,先对图像进行膨胀操作,然后进行腐蚀操作,目的是在不明显改变区域边界大小的情况下,填充物体内细小空间,连接相邻区域和平滑边界,膨胀的具体操作就是用结构元素去扫描图像每一个像素点,如果结构元素内一个灰色区域像素点都没有,就什么都不做,如果结构元素内包含任意一个及以上的像素点,那就在原来灰色的区域的基础上把整个结构元素所包含的区域都加进来,腐蚀的具体操作就是在扫描过程中如果结构元素内所有的点都是灰色区域,那就什么都不做,否则就在原来灰色区域的基础上把整个结构元素所包含的区域都减去; ③填充运算除去一些空心区域得到图像G4,填充运算就是如果某个区域是非灰色选中区域,但是它被灰色选中区域所包围了,那就把该区域也选中; ④纵向矩形开运算,主要是为了分开两个月牙区域,使之成为2个独立的月牙区域,以长为20个像素点,宽为2个像素点的长方形为结构元素,对图像G4进行开运算后得到图像G5,开运算的具体操作过程是先腐蚀再膨胀; ⑤横向矩形开运算,以长为2个像素点,宽为20个像素点的长方形为结构元素,对图像G5进行开运算后得到图像G6; ⑥两个开运算得到的区域的交集,不管是横向移动还是纵向移动,经过上两步和这一步都能分开两个相邻的棋子区域; ⑦面积选择,选择面积大于150个像素点的区域,排除图像中的干扰; ⑧转换为圆形得到图像G8,根据等面积的原则,将分开的左右两个区域转换成两个圆形区域; ⑨圆形中点即认为是棋子的位置,从而得到棋子移动前的位置和移动后的位置。
【文档编号】G06K9/40GK105956594SQ201610305082
【公开日】2016年9月21日
【申请日】2016年5月10日
【发明人】顾敏明, 黄世青
【申请人】浙江理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1