一种智能象棋对弈控制方法及系统与流程

文档序号:12806205阅读:448来源:国知局
一种智能象棋对弈控制方法及系统与流程

本发明涉及一种智能象棋对弈控制方法及系统,属于智能对战平台领域。



背景技术:

在当今社会,象棋虽然已经得到了广泛的发展和传播,但是其游戏形式仅限于实物以及纯软件等形式。实物象棋对战总是会受到距离的制约,而纯软件的象棋对战则不具备真实感。随着科技和相关技术领域的飞速发展,并没有新的处理技术被应用到象棋领域中。象棋的发展相当于进入了一个瓶颈阶段。不管是在技术应用还是用户体验方面,都需要创新和进步来激发象棋的发展。

现有的通过机械臂对弈的系统存在的主要问题是,对于棋盘的畸变校正算法过于复杂,或者一旦系统运行中摄像头或棋盘受到轻微干扰便需要重新获取基准图像;并且仅仅能够进行线下对弈,不能同时解决物理距离制约问题和对弈的实感问题。



技术实现要素:

本发明的目的是为了解决现有的对弈系统仅仅能够进行线下对弈,不能同时解决物理距离制约问题和对弈的实感问题的缺点,而提出一种智能象棋对弈控制方法及系统。

根据本发明的第一方面,提供了一种智能象棋对弈控制方法,包括:

持续检测是否接收到用于表征线下用户落子结束的确认信号;

当检测到确认信号时,获取视频流中的一帧作为当前帧;

将当前帧转换为hsv空间模型下的图像;

将hsv空间模型下的图像输入至中值滤波器中,得到滤波后的图像;

对滤波后的图像进行阈值检测,以识别出棋盘上四个角上的标志物所在区域,再检测标志物的图像轮廓,找到包围所述图像轮廓的最小矩形边界,并获取该矩形边界的中心点,即为棋盘上四个角上的标志物的中心位置坐标;

对于滤波后的图像,将所述中心位置坐标围成的区域进行透射变换,将四个标志物的中心位置坐标变换到一个矩形的四个顶点上;

再次对滤波后的图像进行阈值检测,以识别出线下用户一方的棋子,具体为:将中心位置坐标围成的区域中所有在阈值范围内像素的像素值设置为像素值上限,将所有在阈值范围外的像素值设置为像素值下限,以使线下用户一方的棋子所在的区域与其他区域进行区分;

根据中心位置坐标围成的区域的大小,设置预定数量的窗口,所述窗口用于表示棋子所在的区域,所述窗口包括若干像素;

依次遍历所有窗口中的每个像素,得到每个窗口内的像素值总和;

构建位置矩阵,位置矩阵中的每个元素对应于每个所述窗口;判断每一个窗口内的像素值总和是否高于预设像素阈值,若是,则将所述窗口在位置矩阵中对应的元素置为1,若否,则将所述窗口在位置矩阵中对应的元素置为0。

用当前帧得到的位置矩阵减去原始帧得到的位置矩阵,值为-1的元素所在的位置对应于线下用户行棋的出发点,值为1的元素所在的位置对应于线下用户行棋的落脚点;所述原始帧为表示线下用户落子之前棋盘情况的图像;

将线下用户行棋的出发点和落脚点输入至决策算法中,得到待移动棋子的位置及待落子位置。

根据本发明的第二方面,提供了一种智能象棋对弈控制系统,包括:

摄像头,用于拍摄棋盘以及棋子的图像。

嵌入式处理器,用于接收摄像头拍摄到的图像,并实现如权利要求1至3中任意一项所述的功能,以产生待移动棋子的起始位置信息以及最优落子位置信息。

单片机,用于接收来自嵌入式处理器的待移动起始位置信息以及最优落子位置信息,并向机械臂发出控制信号。

机械臂,用于根据单片机的控制信号将棋子由起始位置移动至最优落子位置。

本发明的有益效果为:通过标志物准确定位棋盘的范围;通过阈值准确判断区分线下用户的棋子;使用四个标志物进行棋盘图像校正,减少了计算量,并且只要标志物围成的区域在摄像头范围内,都能进行校正,在摄像头和棋盘受到位置晃动等干扰的情况下也可以保证棋盘校正的准确性;本发明还提供了远程人人对战模式,同时解决了物理距离限制以及对弈实感的问题,使得对弈双方在远距离也能够体验到具有实感的对弈过程。

附图说明

图1为本发明的智能象棋对弈控制系统的总体结构图;

图2为本发明的智能象棋对弈控制系统的系统进程图;

图3为本发明的图像处理算法的流程图;

图4为本发明的智能象棋对弈控制系统中机械臂的控制算法流程图。

具体实施方式

具体实施方式一:本实施方式的智能象棋对弈控制方法,包括如下步骤:

步骤s1:持续检测是否接收到用于表征线下用户落子结束的确认信号。

例如,可以设置确认键,当用户按下确认键时表示用户已经落子结束。线下用户意味着该用户是在实体的棋盘前进行手动行棋,这是为了区别于本发明后文提到的的线上用户,本发明不仅支持用户在实体棋盘前下棋,还支持通过线上网络进行对战。线下用户和线上用户一般不是同一个用户,可以是同时进行对弈的双方。在本实施方式中,假定与线下用户对弈的是通过单片机控制的机械臂。

步骤s2:当检测到确认信号时,获取视频流中的一帧作为当前帧。视频流可以由摄像头提供。随着用户操作开始新的一局游戏,相应的变量初始化,视频流也重新读取。之后不管是否用户操作还是机械手操作,视频流将一直打开,指针也一直存在。当机械臂完成动作或者用户按下确认键确认已经走完子,程序将从流中读取一帧数据,保存作为待处理的源图像。原始帧是用户走棋前的图像,对比帧是用户走棋后的图像。

步骤s3:将当前帧转换为hsv空间模型下的图像。由于hsv模型相对于rgb模型更为直观方便,且色调、饱和度、明度三通道数据更适合于做分类处理。故将原始帧图像转化为hsv空间模型。

步骤s4:将hsv空间模型下的图像输入至中值滤波器中,去除噪声影响,得到滤波后的图像。

步骤s5:对滤波后的图像进行阈值检测,以识别出棋盘上四个角上的标志物所在区域,再检测图像轮廓,找到包围轮廓的最小矩形边界,并获取该矩形边界的中心点,即为棋盘上四个角上的标志物的中心位置坐标;

步骤s6:对于滤波后的图像,根据所述位置坐标对四个标志物围成的区域进行透射变换,将四个标志物的坐标变换到一个矩形的四个顶点上。透射变换可以将四边形映射为矩形,其实现方式有很多种,例如opencv中的cvwarpperspective()函数,本发明不再对其原理做详尽描述。

步骤s7:再次对滤波后的图像进行阈值检测,以识别出线下用户一方的棋子,具体为:将所述图像区域中所有在阈值范围内像素的像素值设置为像素值上限,将所有在阈值范围外的像素值设置为像素值下限,以使线下用户一方的棋子所在区域与其他区域进行区分。

步骤s5至s7的目的是先通过标志物将棋盘还原成规则的矩形,以便后续的计算。再检测像素值,再通过对棋盘四个角的标志物进行阈值检测,对棋盘四个角进行坐标定位。通过获取的坐标对棋盘图像进行透射变换,将棋盘的四个角变换到一个矩形的四个角上以便划分棋子范围进行棋子识别。对用户所用的红棋进行阈值检测,将棋盘上所有符合阀值范围的像素(即用户方红子)的像素值设置为像素值上限,将所有在阀值范围外的像素(即机械臂方黑子以及没有棋子存在的位置)设置为像素值下限。

步骤s5至步骤s7与其他的棋盘畸变校正相比,具有更好的效果。现有技术中,对于棋盘的畸变校正往往有三类:第一类是选取基准图像,然后将实际获取的图像参照基准图像进行校正;第二类是在实际获取的棋盘图像内获取参照点,例如在实际拍摄的棋盘图像内查找边界点,然后根据这些参照点将棋盘图像进行还原。第三类是使用空棋盘检测网格线交叉点位置,用于在之后的图像中判断棋子的位置。

对于第一类,其缺点是获取到的基准图像未必准确,并且需要先通过复杂的算法在图像中获取较多的特征点,再与基准图像中的特征点之间建立映射关系,因而导致算法复杂,特征点检测也容易出现错误。且当系统运行中摄像头或者棋盘受到了轻微干扰便需要重新获取基准图像。假如棋盘绘制在纸上或塑料薄膜上,当棋盘由于未铺平整而导致有部分重叠时,第一类方案会产生很大的误差。而本发明的畸变校正方法是使用实物作为标志物,将四个角标志物中心点坐标作为计算参数,大大减少了计算量,并且标志物由人为标记在棋盘上,不存在标志物被棋盘遮挡、或者标志物之间发生重叠遮挡的情况。因此本发明的技术效果为:只要四个标志物围成区域在摄像头范围内,便可进行畸变校正,将棋盘还原成规则的矩形。

对于第二类,其缺点是在棋盘内获取的参照点的大小往往会比较小,不够明显,例如将参照点选取为象棋上横纵线的交叉点,目标很小,容易出现检测不准确的问题,而为了解决这个问题,同类方案往往会增加参照点的个数,这会导致计算量的增加。而且选取棋盘内的参照点也会出现因塑料薄膜棋盘发生重叠而导致的计算不精确问题。而本发明使用实物作为标志物可以使用与棋盘和背景相差较大的颜色,一方面标志物的大小避免了错误选取,另一方面标志物的颜色也避免了选取时的混淆。而且本发明的棋盘畸变校正方法还具有通用性,可以拓展到其他棋类的棋盘中,而其他的通过识别交叉点的方法则很难拓展,例如国际象棋的棋盘,其格与格之间没有明显的线条,而是用色块区分,如果仍然使用识别交叉点的方法,将很难保证精确度。

对于第三类,其缺点是因需要提前采用空棋盘获取网格线交叉点位置,所以在系统运行的过程中,若摄像头或者棋盘受到轻微干扰,比如摄像头位置晃动,或是棋盘偏离原来的位置,都会导致之前获取的网格线交叉点位置失去作用,而必须重新获取。而本发明通过标志物定位和透射变换进行图像校正,只需满足标志物围成的区域在摄像头范围内,便可以完成校正过程。

步骤s8:根据图像区域的大小,设置预定数量的窗口,所述窗口用于表示棋子所在的范围,所述窗口包括若干像素。

步骤s9:依次遍历所有窗口中的每个像素,得到每个窗口内的像素值总和。

步骤s10:构建位置矩阵,位置矩阵中的每个元素对应于每个所述窗口;判断每一个窗口内的像素值总和是否高于预设像素阈值,若是,则将所述窗口在位置矩阵中对应的元素置为1,若否,则将所述窗口在位置矩阵中对应的元素置为0。

步骤s8至步骤s10主要为矩形区域内每个棋子位置设定具体范围,一个范围包含了若干个像素。在程序中通过遍历这些位置所有像素的值,可以得到此范围内所有像素的值的和。设定判决有红子阀值,当某一个位置像素值总和高于此值时,判断为有红子,位置矩阵对应的变量值设为1;当某一个位置像素值总和低于此值时,判断为无红子,位置矩阵相应的变量值设为0。

步骤s11:用当前帧得到的位置矩阵减去原始帧得到的位置矩阵,值为-1的元素所在的位置对应于线下用户行棋的出发点,值为1的元素所在的位置对应于线下用户行棋的落脚点。由于在机械臂走完后是用户的下棋回合,故而红子的数目一定不会减少。通过比较初始帧和对比帧的相应矩阵,可以得到用户的走法。即将当前帧矩阵减去原始帧矩阵,值为1的位置为用户的落脚点,值为-1的位置为用户的出发点。

步骤s12:将线下用户行棋的出发点和落脚点输入至决策算法中,得到待移动棋子的位置及最优落子位置。待移动棋子的位置和最优落子位置可以用四个数字表示:出发点的x坐标,出发点的y坐标,落子点的x坐标,落子点的y坐标。

图3示出了本实施方式的一种实施例。

具体实施方式二:本实施方式与具体实施方式一不同的是,在得到待移动棋子的位置及最优落子位置之后,还包括:

发出控制信号,以使机械臂将棋子由待移动棋子的位置移动至最优落子位置;检测机械臂是否落子完毕,若是,则获取视频流中的一帧作为原始帧,并得到原始帧的位置矩阵。

其它步骤及参数与具体实施方式一相同。

具体实施方式三:本实施方式与具体实施方式一或二不同的是:决策算法为alphabeta剪枝算法。决策算法是人机对战模式的核心,本发明采用了现有处理象棋着法问题应用最为广泛的alphabeta剪枝算法。使用这种算法的好处是,系统智能地对局势进行评价,搜索最佳方法。

其它步骤及参数与具体实施方式一或二相同。

具体实施方式四:本实施方式与具体实施方式一至三之一不同的是:

将线下用户的出发点和落脚点输入至决策算法之前,还包括合法性检测步骤:

步骤s11-b:将当前帧的位置矩阵减去原始帧的位置矩阵,若得到的结果矩阵有三个或三个以上的元素不为0,则在视频流中重新获取一帧作为当前帧,并进行后续步骤。由于摄像头本身读取的问题,上述算法有极小的可能性导致矩阵识别错误。需要加入合法性检测的环节。具体检测方法:当前帧矩阵减去原始帧矩阵后的结果矩阵,如果有三个或者三个以上元素不为0,则表示摄像头算法部分程序产生问题,重新读取对比帧,再次进行算法整个步骤。

其它步骤及参数与具体实施方式一至三之一相同。

具体实施方式五:本实施方式提供一种智能象棋对弈控制系统,包括:

摄像头,用于拍摄棋盘以及棋子的图像。即走子前棋盘的状况以及走子后棋盘的状况。

嵌入式处理器,用于接收摄像头拍摄到的图像,并实现如权利要求1至3中任意一项所述的功能,以产生待移动棋子的起始位置信息以及最优落子位置信息。在发明中,对用户下棋着法的检测是通过运行于嵌入式系统中的图像处理算法完成的。该算法运用了开源计算机视觉库进行图像视觉算法的开发。

单片机,用于接收来自嵌入式处理器的待移动棋子起始位置信息以及最优落子位置信息,并向机械臂发出控制信号。

机械臂,用于根据单片机的控制信号将棋子由起始位置移动至最优落子位置。本实施方式通过机械臂夹取棋子,实现真实象棋对战。机械臂的硬件主要由三组单轴t形丝杠导轨滑台和一个机械爪构成。x轴、y轴、z轴三组单轴t形丝杠导轨滑台用于将机械爪精确定位到目标棋子位置,机械爪用于夹取棋子或放置棋子。单轴t形丝杠由两相混合式步进电机带动,机械爪由舵机带动。

本发明采用57两相混合式步进电机,控制器选用genuino101,使用型号为zd-6560-v4c57步进电机驱动器。只要单片机给驱动器合适的脉冲频率,占空比和输出脉冲的个数,就能精确控制步进电机的旋转角度,从而精确控制导轨滑台的移动距离。机械爪的控制实质上就是对舵机的控制。单片机只要给舵机占空比合适的pwm信号,就能控制舵机转过的角度,从而精确控制机械爪对棋子的夹持状态。软件整体设计如图4所示。

具体实施方式六:本实施方式与具体实施方式五不同的是:智能象棋对弈控制系统还包括:

服务器,用于通过数据库存储并实时更新由所述嵌入式处理器上传的线下用户行棋的出发点和落脚点;还用于存储并实时更新线上用户行棋的起始位置以及终点位置。

即本实施方式的智能象棋对弈控制系统可以通过服务器实现远程用户通过线上与线下用户进行对战的情况,即远程用户通过远程设备将落子的相关信息发送到服务器,然后嵌入式处理器从服务器上下载落子信息,通过机械臂执行与其对应的落子,从而实现远程人人对战。这种远程人人对战可以通过模式来选择,例如嵌入式系统的屏幕上提示用户进行模式的选择,然后用户通过按键选择远程人人对战模式,此时不需要决策算法,而是将从服务器下载到的落子信息由机械臂直接体现在棋盘上。

嵌入式处理器还用于接收模式选择信号,当接收到的模式选择信号为远程人人对战模式时,嵌入式处理器从服务器获取线上用户行棋的起始位置以及终点位置,以使单片机控制机械臂将棋子由起始位置移动至终点位置。

其它步骤及参数与具体实施方式五相同。

具体实施方式七:本实施方式与具体实施方式五或六不同的是:智能象棋对弈控制系统还包括设置在智能终端中的远程对弈装置,远程对弈装置包括:

图形界面提供模块,用于提供棋盘及棋子的图形界面,并根据线上用户及线下用户的行棋操作对棋子的位置进行实时更新。

线上用户操作获取模块,用于获取线上用户通过智能终端操作后得到的行棋的起始位置以及终点位置,并在图形界面提供模块中进行更新。

网络通信模块,用于从服务器中获取由嵌入式处理器上传的线下用户行棋的出发点和落脚点;还用于上传线上用户行棋的起始位置以及终点位置。

线下用户操作获取模块,用于通过网络通信模块获取线下用户行棋的出发点以及落脚点,并在图形界面提供模块中进行更新。

规则控制模块,用于判断线上用户及线下用户的行棋操作是否符合象棋规则,若不符合则撤销操作并发出提示;还用于根据象棋规则判断胜负结果。

远程对弈装置可以为可安装在手机中的软件,本实施方式可通过服务器实现手机客户端和嵌入式平台之间的数据交换,从而在设备接入互联网的情况下实现远程人人对战。服务器上配置有mysql数据库实现双方数据的存入与查询。手机应用利用2d绘图渲染游戏画面。手机客户端和嵌入式平台分别利用socket类与服务器进行网络通信。

本实施方式应用的具体情形为:首先线下用户通过控制界面选择工作模式(人机对战或远程人人对战)后开始象棋对战。然后摄像头采集棋盘图像信息,通过运行于intelminnowboardturbot嵌入式开发平台的图像处理算法提取线下用户走棋数据,并将走棋数据输入到象棋智能算法(远程人人对战模式下为将走棋数据通过服务器传递给线上用户)。接着嵌入式平台将象棋智能算法计算出来的应对策略(远程人人对战模式下为嵌入式平台通过服务器中转获得的手机app的走棋策略)通过串口传至genuino单片机,进而控制机械臂运动系统走棋。如此循环往复进行象棋对战。硬件总体结构图如图1所示,系统进程图如图2所示。

本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,本领域技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1