天天看点

matlab识别中国象棋棋盘,一种基于图像处理的中国象棋识别系统及方法与流程

matlab识别中国象棋棋盘,一种基于图像处理的中国象棋识别系统及方法与流程

本发明涉及计算机图像识别技术,具体涉及一种基于图像处理的中国象棋识别系统及方法。

背景技术:

数字图像处理技术在机器感知领域应用十分广泛,主要目标是通过一些图像处理技术从图像中提取信息,该信息类似于人们采用语言和文字解释图像内容的过程,使用图像处理技术的典型问题是自动字符识别、产品装配线和检测的工业机器视觉、军师识别、指纹自动处理、卫星图像的机器处理等。

数字图像处理技术图像预处理技术、图像滤波、图像还原、图像压缩、图像的形态学处理等,图像处理函数库主要有MATLAB图像处理库、OPENCV库以及各种图像处理软件自带函数库。

技术实现要素:

为了克服现有技术存在的缺点与不足,本发明提供一种基于图像处理的中国象棋识别系统及方法。

本发明采用传统的中国象棋,在不修改和添加任何信息的情况下,能够对中国象棋的棋子进行识别和定位,并且保存棋局的演变过程。

本发明采用如下技术方案:

一种基于图像处理的中国象棋识别系统,包括象棋棋盘及棋子,还包括摄像头、图像背景板、显示装置及图像处理装置,所述摄像头通过摄像头支架固定在图像背景板上,所述象棋棋盘放置在图像背景板上,并位于摄像头的视野范围,所述摄像头及显示装置分别与图像处理装置连接。

所述棋子的样式为文字加外环的形式,文字颜色为红黑两色。

一种基于图像处理的中国象棋识别系统,包括象棋棋盘及棋子,还包括摄像头、图像背景板、显示装置及图像处理装置,所述摄像头通过摄像头支架固定在图像背景板上,所述象棋棋盘放置在图像背景板上,并位于摄像头的视野范围,所述摄像头及显示装置分别与图像处理装置连接。

所述棋子的样式为文字加外环的形式,文字颜色为红黑两色。

一种中国象棋识别系统的识别方法,包括如下步骤:

S1图像处理装置接收摄像头图像数据,然后对图像进行灰度化和二值化处理;

S2识别象棋棋子;

S3定位棋盘,通过棋盘网格定位棋盘位置,通过识别棋子“帅”和“将”的位置,确定棋盘的角度;

S4确定象棋棋子的初始状态,形成象棋棋子的初始状态表,所述状态表包括棋子名、棋子颜色、当前位置及是否可用;

S5根据前后两帧图像的棋子状态判断棋局是否进行操作,将象棋棋子的操作过程用链表的数据结构形式保存,链表的元素包括:棋子名,棋子颜色,初始位置,结束位置,同时修改对应棋子的状态。

识别象棋棋子的过程具体如下:

得到二值化后的图像,通过边缘检测函数,查找到满足约束条件的边缘,确定边缘序列,根据边缘序列的周长进一步确定棋子轮廓,将轮廓转换为最小外接矩形,将矩形内的图像数据截取后,缩放到固定像素得到象棋棋子图像;

根据图像颜色区别双方棋子,计算象棋棋子图像的多层饱和度,将每层的饱和度数据按从外向内或者从内向外的顺序排列,形成棋子图像的特征向量;

然后与样本空间进行对比,求取特征向量对于所有样本向量的欧氏距离;

最后根据最小欧氏距离原则对图像进行识别得到象棋的名字。

所述圆形度公式如下:

其中为l边缘序列的长度,为S边缘序列围成的面积。

所述多层饱和度等于固定宽度的矩形环中颜色像素点的数量与矩形环的面积之比,其中,最内层为第1层。

Pi=sum(p1)/Si,(p1∈Li)

式中Pi为第i层饱和度分量,p1为第i层中带有目标颜色的像素点sum(p1)为第i层中带有目标颜色的像素点总数,Si为第i层像素点总数,计算公式如下。

Si=(2*i*width)2-(2*(i-1)*width)2

=4(2i-1)width2

其中width为矩形环宽度。

S3中定位棋盘,通过棋盘网格定位棋盘位置,具体为:

对灰度化和二值化处理后的图像进行边缘检测,棋盘的棋格特征为一个矩形,通过边缘序列的矩形判断和周长特征来识别棋盘的棋格特征,棋格特征包括:棋格的边长和棋格的角度

边长用来确定棋盘的步长,角度对图像进行旋转变换来校正图像,从而方便确定象棋的位置。

本发明的有益效果:

(1)本发明能够通过摄像头读取棋盘信息,定位棋子在棋盘中的位置,并能够识别棋子的类型,并将棋子的变化转化为操作量,从而实现对棋局演变过程的监控,将虚拟与现实结合,比纯虚拟象棋或现实象棋更具趣味性。

(2)本发明设计的识别算法,可以实现对任意角度的棋子文字进行识别和定位。

(3)与传统的基于棋子初始位置的方法相比,本发明不仅能够实现这类功能,还能够对象棋残局进行监控,其自由度更大。

(4)与其他类型的多角度文字识别方法相比,本发明设计的算法,在不改传统象棋样式的基础上实现,不影响象棋的视觉效果,能够减小算法的数据量,识别速度更快。

附图说明

图1是本发明的系统结构图;

图2是本发明象棋棋子图像识别过程图;

图3是本发明象棋棋子名字的识别过程图;

图4是本发明多层饱和度分量计算方法示意图;

图5是本发明的棋盘识别流程图;

图6是本发明棋局状态的识别流程图。

具体实施方式

下面结合实施例及附图,对本发明作进一步地详细说明,但本发明的实施方式不限于此。

实施例

如图1所示,一种基于图像处理的中国象棋识别系统,包括象棋棋盘6及棋子,摄像头1、图像背景板2、显示装置4及图像处理装置5,

所述摄像头支架3的一端固定在所述图像背景板上,另一端用于固定摄像头。所述中国象棋棋盘放置于所述图像背景板上,所述摄像头设置于所述图像背景板的侧上方,用于采集位于所述图像背景板上的所述中国象棋棋盘的图像。

适当调整所述摄像头的高度以及拍摄角度,以便于可以整体采集所述图像背景板上的中国象棋棋盘的图像为准。

所述棋子的样式为文字加外环的形式,文字颜色为红黑两色。

一种上述中国象棋识别系统的识别方法,包括如下步骤:

S1摄像头采集棋盘图像,传输到图像处理装置,然后对图像依次进行灰度化和二值化处理;

S2识别象棋棋子,如图2所示,具体为:

通过边缘检测函数查找到满足约束条件的边缘,由于象棋边缘为环状结构,因此约束条件可以根据圆形度进行约束,同时根据边缘序列的周长来进一步确定棋子轮廓,圆形度公式如下:

其中为l边缘序列的长度,为S边缘序列围成的面积。

根据圆形度确定边缘序列,将目标边缘转换为最小外接矩形,并且将矩形内的图像数据截取后,缩放到固定像素得到象棋棋子的图像。

如图3所示,根据图像的颜色区别双方棋子,计算棋子图像的多层饱和度,将每次的饱和度数据按从外向内或者从内向外的顺序排列,形成棋子图像的特征向量;

然后与样本空间进行对比,求取特征向量对于所有样本向量的欧氏距离;

最后根据最小欧氏距离原则对图像进行识别,得到具体象棋的名字,如果特征向量和“将”的样本匹配度最高,则判断棋子是“将”。

如图4所示,所述计算棋子图像的多层饱和度,具体如下:

分层饱和度等于固定宽度的矩形环中颜色像素点的数量与矩形环的面积之比,其中,最内层为第1层。

Pi=sum(p1)/Si,(p1∈Li)

式中Pi为第i层饱和度分量,p1为第i层中带有目标颜色的像素点。sum(p1)为第i层中带有目标颜色的像素点总数,Si为第i层像素点总数,计算公式如下。

Si=(2*i*width)2-(2*(i-1)*width)2

=4(2i-1)width2

其中width为矩形环宽度。

S3如图5所示,定位棋盘,通过棋盘网格定位棋盘位置,通过识别棋子“帅”和“将”的位置,确定棋盘的角度;

首先通过对棋盘的边缘检测,棋盘的棋格特征为一个矩形,可以通过边缘序列的矩形判断和周长特征来识别棋盘的棋格特征,棋格特征包括:棋格的边长和棋格的角度,边长可以用来确定棋盘的步长,角度可以对图像进行旋转变换来校正图像,从而方便确定象棋的位置。通过上一步骤检测出棋子“帅”和“将”的位置,根据两个棋子的位置和棋格角度可以确定棋盘的角度。

S4确定象棋棋子的初始状态,形成象棋棋子的初始状态表,所述状态表包括棋子名、棋子颜色、当前位置及是否可用;

如图6所示,S5根据前后两帧图像的棋子状态判断棋局是否进行操作,将象棋棋子的操作过程用链表的数据结构形式保存,链表的元素包括:棋子名,棋子颜色,初始位置,结束位置,同时修改对应棋子的状态。

通过显示装置实时显示棋盘的状态。

本发明的实现采用OPENCV图像处理API函数库和VS2012集成开发环境。OPENCV是一个开源的图像处理函数库,由C和C++语言开发,包括图像处理库和机器视觉算法库两部分组成,能够跨平台使用,OPENCV提供的函数能够方便程序员调用函数库实现图像算法,并为图像算法的实现提供多种接口,图像处理接口和矩阵类运算接口,同时还涵盖了许多高级数学函数例如傅里叶变换、积分运算、差分运算等。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受所述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。