1.一种对实物象棋的识别和处理方法,其特征在于,包括以下步骤:
1)建立实物棋子的模板,根据棋子的不同类型确定需要的模板种类,将需要建立模板的棋子在棋盘的上下左右中间各个位置都放置一次,用摄像头去获取图像并截取棋子区域编辑保存,同时为了增加对各种光强下的适应性,特地在多个光环境下进行取像;
2)棋盘位置的校准,校准过程如下:a图像坐标系的建立,假设摄像头获取的图像规格是N*M的,整个图像以最左上角为原点(0,0),最右上角的点的坐标为(0,N),最左下角的点坐标为(M,0),以此类推,b粗调,调整摄像头和棋盘,使得摄像头获得的图像肉眼看起来刚好覆盖住整个棋牌,c微调,在显示屏的正中间显示横纵方向的两条线,用于对准象棋棋盘的河界上的线和“将帅”所处的那条中间线,如果重合,就可以认为当前位置棋盘位于图像的正中间,每次校准都以这个相对位置为基准;
3)具体棋子的识别过程,对摄像头获取的开局图像进行处理,识别出各个位置的棋子是否正确放置,即判断是否放了棋子,放的棋子的种类是否正确,放的棋子的颜色是否正确,具体包括以下步骤:a棋子位置的确定,首先正确放置棋子,在采集的图像中确定各个棋子的坐标,下次就可以读取这些坐标信息来判断该位置的棋子是否放置正确,b棋子区域的获取,以之前保存的坐标信息为圆心,20个像素长为半径作圆就得到棋子区域,c棋子区域的具体处理,获得棋子的区域后建立目标棋子的数据信息,
d数据信息的匹配,按照c得到的数据信息来模板里匹配,匹配的话就是遍历整幅模板图像,循环检查每个区域的轮廓和数据的相似度;
4)整个开局扫描过程,首先读取模板图像,然后依次选取应该有棋子的区域,然后循环执行第3)步:具体棋子的识别过程,将每个棋子区域都判断一遍,如果每个都正确,都放在了各自应该放的区域,那么就认为开局扫描成功;
5)当开局之后,实物棋子走动之后,将棋子走动前后的图像分别进行预处理,获得两幅图像;
6)将两幅图像相减得到图像G1,图像G1上显示,在棋子移动前后的位置处有2个月牙型的白色亮斑,而其他区域都是黑色,越黑的地方表示是该处像素点的值越接近零,因为该图像是两幅图像的差图像,所以该图像的黑色区域代表的是两幅图像在该处的像素点的值接近,也就是前后两幅图像没有变化的地方,那么相反地,越亮的地方代表前后两幅图像在该处越不接近,也就是变化的地方;
7)对图像G1中亮区域进行处理得到具体的移动前后坐标,包括以下步骤:
①阈值选择,选出亮度在200到255之间的区域得到图像G2;
②闭运算去除区域中一些小的隔断区域得到图像G3,闭运算就是通过一个指定大小形状的图形作为结构元素,先对图像进行膨胀操作,然后进行腐蚀操作,目的是在不明显改变区域边界大小的情况下,填充物体内细小空间,连接相邻区域和平滑边界,膨胀的具体操作就是用结构元素去扫描图像每一个像素点,如果结构元素内一个灰色区域像素点都没有,就什么都不做,如果结构元素内包含任意一个及以上的像素点,那就在原来灰色的区域的基础上把整个结构元素所包含的区域都加进来,腐蚀的具体操作就是在扫描过程中如果结构元素内所有的点都是灰色区域,那就什么都不做,否则就在原来灰色区域的基础上把整个结构元素所包含的区域都减去;
③填充运算除去一些空心区域得到图像G4,填充运算就是如果某个区域是非灰色选中区域,但是它被灰色选中区域所包围了,那就把该区域也选中;
④纵向矩形开运算,主要是为了分开两个月牙区域,使之成为2个独立的月牙区域,以长为20个像素点,宽为2个像素点的长方形为结构元素,对图像G4进行开运算后得到图像G5,开运算的具体操作过程是先腐蚀再膨胀;
⑤横向矩形开运算,以长为2个像素点,宽为20个像素点的长方形为结构元素,对图像G5进行开运算后得到图像G6;
⑥两个开运算得到的区域的交集,不管是横向移动还是纵向移动,经过上两步和这一步都能分开两个相邻的棋子区域;
⑦面积选择,选择面积大于150个像素点的区域,排除图像中的干扰;
⑧转换为圆形得到图像G8,根据等面积的原则,将分开的左右两个区域转换成两个圆形区域;
⑨圆形中点即认为是棋子的位置,从而得到棋子移动前的位置和移动后的位置。
2.根据权利要求1所述的一种对实物象棋的识别和处理方法,其特征在于,步骤1)中,在取像的过程中特意将棋子进行多次旋转,使得模版在匹配的时候对不同角度的图像更加普适。
3.根据权利要求1所述的一种对实物象棋的识别和处理方法,其特征在于,步骤1)中,在对模板图像获取后,对模板图像进行处理,在三通道的彩图中选取单个绿色通道。