一种记谱处理方法和装置以及计算机可读存储介质与流程

文档序号:16504778发布日期:2019-01-05 08:58阅读:204来源:国知局
一种记谱处理方法和装置以及计算机可读存储介质与流程

本发明涉及计算机技术领域,尤其涉及一种记谱处理方法和装置以及计算机可读存储介质。



背景技术:

在目前的中国象棋等棋类比赛中,通常采用人工完成记谱工作。虽然也有的记谱工作使用计算机辅助记谱,但是也需要人工录入。这种人工记谱的方式工作量较大,且错误率高,需要额外投入人工来操作。特别是规模较大的比赛,人工记谱需要耗费额外人力,需要相当数量的记谱员,组织赛事时需要协调人力,颇为不便。

现有技术中为了实现自动记谱,还提出了在棋盘与棋子中植入芯片的方案,通过芯片的感应检测来确定棋子类型和位置。通过在棋盘与棋子中植入的芯片,可以实现实时直播棋类比赛的对局进程,目前在国际象棋比赛中,已经可以见到对该技术的使用。但是使用内置芯片的棋盘棋子成本较高,无法进行大规模推广使用。



技术实现要素:

本发明实施例提供了一种记谱处理方法和装置以及计算机可读存储介质,用于以低成本方式实现棋局对弈过程中的记谱问题,提高记谱效率。

一方面,本发明实施例提供一种记谱处理方法,包括:

根据当前帧的棋盘图像和上次被处理的棋盘图像确定棋盘是否存在棋局局面变化;

当所述棋盘存在棋局局面变化时,从所述当前帧的棋盘图像中检测出棋子变化的位置图像块;

从所述棋子变化的位置图像块中识别出位置变化的棋子类型;

根据所述位置变化的棋子类型以及预设的棋牌规则确定所述棋盘上的棋子移动方式和相应的棋子坐标;

根据所述棋盘上的棋子移动方式和相应的棋子坐标,以及所述当前帧的棋盘图像生成棋谱。

另一方面,本发明实施例还提供一种记谱处理装置,包括:

局面确定模块,用于根据当前帧的棋盘图像和上次被处理的棋盘图像确定棋盘是否存在棋局局面变化;

图像块检测模块,用于当所述棋盘存在棋局局面变化时,从所述当前帧的棋盘图像中检测出棋子变化的位置图像块;

棋子识别模块,用于从所述棋子变化的位置图像块中识别出位置变化的棋子类型;

棋子分析模块,用于根据所述位置变化的棋子类型以及预设的棋牌规则确定所述棋盘上的棋子移动方式和相应的棋子坐标;

棋谱生成模块,用于根据所述棋盘上的棋子移动方式和相应的棋子坐标,以及所述当前帧的棋盘图像生成棋谱。

在前述方面中,记谱处理装置的组成模块还可以执行前述一方面以及各种可能的实现方式中所描述的步骤,详见前述对前述一方面以及各种可能的实现方式中的说明。

另一方面,本发明实施例提供一种记谱处理装置,该记谱处理装置包括:处理器、存储器;存储器用于存储指令;处理器用于执行存储器中的指令,使得记谱处理装置执行如前述一方面中任一项的方法。

另一方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。

在本发明实施例中,首先根据当前帧的棋盘图像和上次被处理的棋盘图像确定棋盘是否存在棋局局面变化,当棋盘存在棋局局面变化时,从当前帧的棋盘图像中检测出棋子变化的位置图像块,然后从棋子变化的位置图像块中识别出位置变化的棋子类型,接下来根据位置变化的棋子类型以及预设的棋牌规则确定棋盘上的棋子移动方式和相应的棋子坐标,最后根据棋盘上的棋子移动方式和相应的棋子坐标,以及当前帧的棋盘图像生成棋谱。由于本发明实施例中使用计算机视觉技术,通过比较当前帧的棋盘图像以及上次被处理的棋盘图像,就可以确定出棋子变化的位置图像块,再识别出位置变化的棋子类型,就可以确定出棋子移动方式和棋子坐标,最后就可以自动生成棋谱,这个图像的识别以及棋子分析都不需要人工参阅,也不需要更改棋盘和棋子,以低成本方式实现棋局对弈过程中的记谱问题,提高记谱效率。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的技术人员来讲,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的记谱处理方法所应用的系统架构示意图;

图2为本发明实施例提供的一种记谱处理方法的流程方框示意图;

图3为本发明实施例提供的对棋盘图像进行均匀四等分的示意图;

图4为本发明实施例提供的记谱处理方法的一种应用场景示意图;

图5为本发明实施例提供的逻辑棋盘和电子棋盘的对比示意图;

图6-a为本发明实施例提供的一种记谱处理装置的组成结构示意图;

图6-b为本发明实施例提供的另一种记谱处理装置的组成结构示意图;

图6-c为本发明实施例提供的一种棋谱生成模块的组成结构示意图;

图6-d为本发明实施例提供的一种图像块检测模块的组成结构示意图;

图6-e为本发明实施例提供的另一种记谱处理装置的组成结构示意图;

图6-f为本发明实施例提供的另一种记谱处理装置的组成结构示意图;

图7为本发明实施例提供的记谱处理方法应用于终端的组成结构示意图;

图8为本发明实施例提供的记谱处理方法应用于服务器的组成结构示意图。

具体实施方式

本发明实施例提供了一种记谱处理方法和装置以及计算机可读存储介质,用于以低成本方式实现棋局对弈过程中的记谱问题,提高记谱效率。

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域的技术人员所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。

请参考图1,其示出了本申请实施例提供的记谱处理方法所应用的系统架构示意图。该系统可以包括:摄像头和记谱处理装置。摄像头可以架设在棋盘的上方,例如棋盘的正上方或者侧上方。用户1和用户2在棋盘上进行对弈,此时摄像头可以不断的采集棋盘原始图像,然后通过通信网络发送给记谱处理装置。记谱处理装置和摄像头之间通过通信网络进行数据传输。该记谱处理装置具体可以是如图1所示的终端,又如该记谱处理装置也可以是记谱处理服务器。终端可以是手机、平板电脑、电子书阅读器、mp3播放器(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。

在本发明实施例中,记谱处理装置通过通信网络可以从摄像头获取到棋盘图像数据流,记谱处理装置首先提取出多个帧的棋盘图像,并通过相邻两帧的棋盘图像之间的图片相似度确定棋盘是否存在棋局局面变化。当棋盘存在棋局局面变化时,从当前帧的棋盘图像中检测出棋子变化的位置图像块,该位置图像块是当前帧的棋盘图像中存在棋子变化的小块图像。然后从棋子变化的位置图像块中识别出位置变化的棋子类型。接下来根据位置变化的棋子类型以及预设的棋牌规则确定棋盘上的棋子移动方式和相应的棋子坐标,最后根据棋盘上的棋子移动方式和相应的棋子坐标,以及当前帧的棋盘图像生成棋谱。由于本发明实施例中使用计算机视觉技术,通过比较当前帧的棋盘图像以及上次被处理的棋盘图像,就可以确定出棋子变化的位置图像块,再识别出位置变化的棋子类型,就可以确定出棋子移动方式和棋子坐标,最后就可以自动生成棋谱,这个图像的识别以及棋子分析都不需要人工参阅,也不需要更改棋盘和棋子,以低成本方式实现棋局对弈过程中的记谱问题,提高记谱效率。

以下从记谱处理装置的角度进行详细说明。本发明记谱处理方法一个实施例,具体可以应用于对棋盘图像数据流的棋谱获取场景中。本发明实施例中棋盘可以是中国象棋棋盘或者围棋棋盘或者国际象棋棋盘等,后续应用场景例中以中国象棋的实时自动记谱为例进行说明。请参阅图2所示,通过摄像头固定拍摄棋盘,由记谱处理装置从摄像头获取包含棋盘的图像数据,并执行记谱处理。所述记谱处理装置执行记谱处理方法包括:本发明一个实施例提供的记谱处理方法,可以包括如下步骤:

201、根据当前帧的棋盘图像和上次被处理的棋盘图像确定棋盘是否存在棋局局面变化。

其中,当前帧的棋盘图像是后续实施例中需要记谱的棋盘图像,当前帧的棋盘图像首先与上次被处理的棋盘图像进行图片相似度判断,以确定棋盘是否存在棋局局面变化。举例说明,图片相似度可以通过对两张图片运用统计方法得到的一个介于0和1之间的浮点数,该数值越接近1,则两张图片相似程度越高,

在本发明的一些实施例中,步骤201根据当前帧的棋盘图像和上次被处理的棋盘图像确定棋盘是否存在棋局局面变化之前,本发明实施例提供的记谱处理方法还可以包括:

通过摄像头固定拍摄物理棋盘生成棋盘原始图像;

从棋盘原始图像中定位出棋盘位置,并按照标准棋盘对棋盘位置进行棋盘调正;

在完成棋盘调正之后,输出当前帧的棋盘图像。

其中,由于录像机的摄像头通常架设于对局桌的一侧,视频中的棋盘不是矩形,本发明实施例中可以通过计算机视觉技术将每一帧图像中的棋盘调整为矩形,同时保证棋子和交叉点的相对位置不发生改变。举例说明,每隔一小段时间,对图像中的棋盘进行一次调正,并去掉周围的背景;每隔一定帧数,计算当前的棋盘图像与上一次被记录棋盘之间的相似度。当相似度小于一个给定的阈值时,可以认为有棋子发生了移动。此时需要通过后续实施例检测当前棋盘的可能的局面变化,其中,当前棋盘是指目前摄像机在最新时刻采集的棋盘影像。

202、当棋盘存在棋局局面变化时,从当前帧的棋盘图像中检测出棋子变化的位置图像块。

在本发明实施例中,棋盘存在棋局局面变化时,对该当前帧的棋盘图像进行检测,可以进一步的识别出当前帧的棋盘图像上有哪些图像块上有棋子变化,将该图像块称为棋子变化的位置图像块。需要说明的是,该位置图像块指的是当前帧的棋盘图像上的一小块图像。

在本发明的一些实施例中,步骤202从当前帧的棋盘图像中检测出棋子变化的位置图像块,包括:

将当前帧的棋盘图像划分为当前帧的多个棋盘子图像;

将当前帧的任意一个棋盘子图像与上次被处理的相应位置的棋盘子图像进行相似度计算,生成相似度结果;

根据相似度结果确定当前帧的棋盘子图像中是否存在位置变化的棋子;

当当前帧的棋盘子图像中存在位置变化的棋子时,从当前帧的棋盘子图像中截取出棋子变化的位置图像块,单个棋子变化的位置图像块中至多包含一个棋子。

其中,一个棋盘图像被划分为多个棋盘子图像,如图3所示,为本发明实施例提供的对棋盘图像进行均匀四等分的示意图。例如可以将当前帧的棋盘图像均匀四等分,然后比较两帧棋盘子图像对应位置的相似度结果。在需要对局面进行更新时,选取相似度发生变化的棋盘子图像。然后根据相似度结果确定当前帧的棋盘子图像中是否存在位置变化的棋子。当当前帧的棋盘子图像中存在位置变化的棋子时,计算其当前像素与一定帧数之前同位置分块的像素之差,对于没有发生移动的棋子,它们的像素之差应该基本为0,而像素之差很大的地方,就极有可能是刚才棋子到达或离开的地方,此时从当前帧的棋盘子图像上截取出棋子变化的位置图像块。

需要说明的是,从当前帧的棋盘子图像上截取出的单个棋子变化的位置图像块中至多包含一个棋子,即该棋子是发生移动,若单个棋子变化的位置图像块不包括有棋子,则可能是有的棋子从该位置图像块上离开了。

203、从棋子变化的位置图像块中识别出位置变化的棋子类型。

其中,在确定出棋子变化的位置图像块之后,针对该位置图像块再识别出位置变化的棋子类型,棋子类型与用户所对弈的棋盘有关。棋子类型可以是棋盘上所出现的各种棋子名称。以中国象棋为例,棋子类型指的是马、炮、兵、卒等。

在本发明的一些实施例中,步骤203从棋子变化的位置图像块中识别出位置变化的棋子类型,包括:

使用图像分类模型对单个棋子变化的位置图像块进行分类识别,以确定出位置变化的棋子类型。

其中,图像分类(imageclassification)模型可以是一类基于卷积神经网络的模型,可自动对仅包含单个棋子的图片进行分类。例如该图像分类模型可以通过深度卷积神经网络(例如vgg)、inception、resnet等。图像分类模型不需要检测物体在图片中的位置,而只需要给图片中的物体进行分类,例如图像分类模型可以只针对单个棋子进行识别。

204、根据位置变化的棋子类型以及预设的棋牌规则确定棋盘上的棋子移动方式和相应的棋子坐标。

在本发明实施例,通过步骤203可以从棋子变化的位置图像块中识别出位置变化的棋子类型,综合当前帧的棋盘图像上所有识别出的位置变化的棋子类型,以及棋盘对应的棋盘规则,可以计算出棋盘上的棋子移动方式和相应的棋子坐标。其中,棋盘上的棋子移动方式可以通过一个或多个位置变化的棋子类型结合棋牌规则确定出的,棋子坐标表示了在棋盘上棋子移动后所达到的目标位置。

在本发明的一些实施例中,步骤204根据位置变化的棋子类型以及预设的棋牌规则确定棋盘上的棋子移动方式和相应的棋子坐标之后,本发明实施例提供的记谱处理方法还可以包括:

将棋盘上的棋子移动方式更新到逻辑棋盘上。

从逻辑棋盘上复原出所有棋子的棋子类型和相应的棋子坐标,并根据所有棋子的棋子类型和相应的棋子坐标渲染出电子棋盘。

其中,逻辑棋盘中通过字符串记录有棋盘信息,棋盘上的棋子移动方式可以记录在逻辑棋盘上,通过逻辑棋盘可以复原出所有棋子的棋子类型和相应的棋子坐标,并根据所有棋子的棋子类型和相应的棋子坐标渲染出电子棋盘,该电子棋盘是由计算机生成的棋盘图像,在棋牌游戏客户端上可以显示该电子棋盘给用户。本发明实施例中通过逻辑棋盘向电子棋盘的转换,使得用户可以实时的观看电子棋盘上的棋子最新布局。

在本发明的一些实施例中,除了执行前述之外,本发明实施例提供的记谱处理方法还包括如下步骤:

当无法确定出棋盘上的棋子移动方式,或者确定出棋盘存在棋局局面变化时,使用物体检测模型在当前帧的棋盘图像中框选出需要识别的物体,并确定所框选出的物体为棋子;

通过物体检测模型确定框选出的棋子对应的类型。

其中,步骤204中确定出了棋盘上的棋子移动方式,若无法确定出棋子移动方式,或者步骤201在检测出棋谱存在棋局局面变化时,还可以直接通过物体检测模型来进行物体的检测,例如先框选出图像中的物体,再识别出是棋子,对于与棋子无关的各种背景,也可以剔除。最后再通过物体检测模型确定框选出的棋子对应的类型。

其中,物体检测模型可以是一类基于卷积神经网络的大型模型,可自动框选并分类图片中出现的物体。例如物体检测模型可以通过fasterrcnn和yolo算法来完成模型训练。

需要说明的是,物体检测(objectdetection)是对在图片中框选出需要识别的物体并确定该物体类别,这里的物体检测需要检测的是棋盘中的所有棋子。而前述的图像分类(imageclassification)则不需要检测物体在图片中的位置,而只需要给图片中的物体进行分类。这里图像分类只针对单个棋子。物体检测要比图像分类难。一是因为在物体检测业务中,需要让模型自动框出需要检测的物体的位置;二是物体检测中,一张图片里往往包含好几个待测物体,而图像分类的图片中一般只包含一个物体。

205、根据棋盘上的棋子移动方式和相应的棋子坐标,以及当前帧的棋盘图像生成棋谱。

在本发明实施例中,通过步骤204获取到棋盘上的棋子移动方式和相应的棋子坐标,结合当前帧的棋盘图像上没有移动的棋子和相应的棋子坐标可以生成棋谱。举例说明如下,可获取到棋盘上的棋子移动方式和相应的棋子坐标,推导出每一步棋子的走法,将每一步棋的走法记录下来,在棋局结束时自动保存棋谱。

在本发明的一些实施例中,步骤205根据棋盘上的棋子移动方式和相应的棋子坐标,以及当前帧的棋盘图像生成棋谱,包括:

获取棋局中每一步对应的棋盘图像;

针对每一步对应的棋盘图像,记录棋盘上每一步对应的棋子移动方式和相应的棋子坐标;

在棋局结束时,根据所有步分别对应的棋子移动方式和相应的棋子坐标生成棋谱。

其中,针对每一步的棋盘图像,都可以通过前述步骤201至步骤204的方式确定出每一步对应的棋子移动方式和相应的棋子坐标,通过所有步的累计可以生成最终的棋谱。举例说明如下,对于在时间轴上最接近、但又不一样的两个局面,认为有一颗棋子发生了移动。通过对比两个局面,比如能计算出发生这个局面变化的原因是“車五进二”,通过这里的计算可以实现记谱。

通过以上实施例对本发明实施例的描述可知,首先根据当前帧的棋盘图像和上次被处理的棋盘图像确定棋盘是否存在棋局局面变化,当棋盘存在棋局局面变化时,从当前帧的棋盘图像中检测出棋子变化的位置图像块,然后从棋子变化的位置图像块中识别出位置变化的棋子类型,接下来根据位置变化的棋子类型以及预设的棋牌规则确定棋盘上的棋子移动方式和相应的棋子坐标,最后根据棋盘上的棋子移动方式和相应的棋子坐标,以及当前帧的棋盘图像生成棋谱。由于本发明实施例中使用计算机视觉技术,通过比较当前帧的棋盘图像以及上次被处理的棋盘图像,就可以确定出棋子变化的位置图像块,再识别出位置变化的棋子类型,就可以确定出棋子移动方式和棋子坐标,最后就可以自动生成棋谱,这个图像的识别以及棋子分析都不需要人工参阅,也不需要更改棋盘和棋子,以低成本方式实现棋局对弈过程中的记谱问题,提高记谱效率。

为便于更好的理解和实施本发明实施例的上述方案,下面举例相应的应用场景来进行具体说明。

本发明实施例通过摄像头固定拍摄棋盘,由记谱处理装置从摄像头获取包含棋盘的图像数据,并执行记谱处理,能够显著地提升现有的录像记谱、录像转播技术的速度。本发明实施例只需要提供录像设备,成本低于现有技术中内置芯片的棋具,本发明实施例中记谱处理装置所使用的检测模型一经训练完毕便可任意使用,由于有神经网络和规则模版的双重保险,准确率可以达到与内置芯片棋具相同的精确度,也肯定优于人工记谱,从而节省了大量记谱人员的工作量。

本发明实施例提供的记谱处理装置,主要由以下四个模块构成:

1、局面变化判断模块

在对局开始时,首先保存调正的棋局图像。之后,可根据比赛是快棋还是慢棋,决定每隔几帧处理一次视频图像。处理时可以通过预设位置或边框检测的方法确定棋盘的位置,之后可利用opencv库或是优图实验室提供的四边形检测模块等将棋盘调整为矩形。当棋局局面发生变化的瞬间,前后两张图片的相似度会显著下降,只有在这种情况下,棋盘更新模块才会重新确定一遍各个棋子的位置。因此,尽管一部视频中需要处理的图片很多,棋盘更新模块也不需要持续运作,从而使实时处理视频流成为可能。

2、棋盘更新模块。

该棋盘更新模块是由物体检测模型、图像分类模型、逻辑棋盘组成的模块,用于更新当前棋局局面。

棋盘更新模块可用于执行步骤:

2.1局面相似度比较

在比较两帧图片之间的相似度时,本发明实施例的方案则是将图片均匀四等分,然后比较两帧图片对应位置的相似度。下面以一个例子说明这样做的优点:譬如一名棋手将己方的車作诸如“車八进七”一类的长距离移动时,他(她)的手会从己方一侧伸向对方一侧再收回,如果按照现有技术的处理方式,必须等该棋手的手完全收回后才能开始更新局面。而本发明实施例中将棋盘分块后,该选手的手只要收回楚河汉界,对方一侧的棋盘就可以直接开始更新了,这大大提高了更新的时效性。这种时效性的提升对整体流程准确率的提升同样大有裨益,当双方棋手落子如飞时,这种敏捷更新的方式可以降低漏判的可能性。

2.2通过像素比对确定棋局变化的位置

在需要对局面进行更新时,选取相似度发生变化的分块,计算其当前像素与一定帧数之前同位置分块的像素之差,对于没有发生移动的棋子,它们的像素之差应该基本为0,而像素之差很大的地方,就极有可能是刚才棋子到达或离开的地方。将像素差较大的区域送入图像分类模型,可以得出该位置新到达的是何种棋子,若分类结果为交叉点,则该位置为原有棋子离开的地方。在得知该位置是何种棋子后,对于绝大多数情况,可以直接对比之前的局面,通过中国象棋规则推断出刚才棋子移动的方式。由于计算像素差以及调用图像分类模型的开销远远小于调用一次物体检测模型。

如果有棋子发生了移动,那么用两张图片对应的数组做减法,没有发生棋子移动的地方,两张图片的差应该基本上是0,考虑到摄像机的一些扰动、光照的渐变,一般不会是精确的0,总有一点误差。但是如果一个地方有棋子,现在这个棋子不见了,那么这一块区域的图片差值就会非常显著。因此,即使当棋子的移动跨越了不同的分块时,本发明实施例提供的方法的效率依然大大优于对整个局面做一次物体检测,所以这一改进可以极大的提升局面更新的速度。不仅如此,单纯的图像分类在准确性方面也要高于物体检测模型的准确性。这些操作由于开销较小,甚至可以考虑放在前端来处理,不需要通过服务端。

需要说明的是,分块检测是为了粗略地确定是棋盘哪部分发生了变化,之后用上面提到的图片像素对比,基本上就可以确定是哪个位置的棋子移动到哪个位置了,这时候把移动的棋子从图片上抠下来,这样得到一个很小的图片,比四等分的图片还小,只在这一个小小的图片上做图像分类速度是比较快的,因此可以在前端完成。

通过物体检测模型更新局面

当通过规则无法推断出棋子的移动方式时,比如一个马可以吃掉对方两个兵中的任意一个,使用前述实施例的方法只能知道马离开了原位,却不能得知马究竟吃掉了哪个兵,又或者棋手碰到了棋盘导致棋盘移动,使得图像像素差相对于0都比较大时,本发明实施例才会调用速度较慢的物体检测模型来对全局进行一次检测。为了增加一些鲁棒性,还可以每隔一段比较长的时间调用一次物体检测模型来对识别增加双重保险。

3、棋谱相关模块

将逻辑棋盘转化为电子棋盘,用于线上直播;同时可根据逻辑棋盘推导出每一步棋的走法,将每一步棋的走法记录下来,有了每个棋子的坐标以后,可以很方便地将逻辑棋盘转化为电子棋盘。每一步的走法都会被保存,直至终局后,所有的走法则构成本局的棋谱,例如在棋局结束时自动保存棋谱。

4、模型再训练模块

当棋盘更新模块误判时,当前图片会被自动保存。每当误判图片积攒到一定数量,这些图片就会被加入到训练集中去反复训练物体检测模型和图像分类模型。当模型性能经过训练提升后,用新的模型替换掉老的模型。经过一段时间的使用后,可以预见棋盘更新模块的准确度将会有显著提高。

图4为本发明实施例提供的记谱处理方法的一种应用场景示意图。本发明实施例中可以包括客户端和服务端,该客户端即前端。客户端和服务端通过通用网关接口(commongatewayinterface,cgi)进行通信,cgi描述了服务器和请求处理程序之间传输数据的一种标准,可以让一个客户端通过超文本传输协议(hypertexttransferprotocol,http)向网络服务器上的程序请求数据。

棋牌游戏客户端可以通过软件开发工具包(softwaredevelopmentkit,sdk)实现录像转棋谱功能,如图4所述,客户端和服务端之间的执行主要包括如下步骤:

1.棋牌游戏客户端集成的录像转棋谱sdk向前端或录像转棋谱服务器端cgi程序发起请求,发送用户视频流中的一帧真实棋局图像。

2.前端或服务器端程序收到棋局图像后,将图片转发给前述的棋盘更新模块,棋盘更新模块收到图像首先进行前端预处理,例如包括棋盘定位和棋盘调正,然后打包交由前端或服务端进行检测更新,以进行棋子识别,向客户端sdk返回识别到的棋子坐标。打包的应该是被四边形检测调正的棋盘,然后由具体情况决定是调用前端的像素对比、图片分类、逻辑推导,还是调用后端的物体检测。例如客户端将待检测棋局发送给服务端,服务端利用物体检测模型更新棋子的类别和位置。客户端通过前端更新棋盘状态或者通过服务端的反馈更新棋盘状态。例如客户端可以进行规则校验和上下文校验。其实上下文和规则都可以认为是逻辑的一部分。规则表示这步棋是否符合中国象棋规定,上下文则是不该有子的地方突然多了棋子,又或者原来有棋子的地方,它并没有被吃掉却不见了。

客户端在更新棋盘状态后发送给上报服务器,上报服务器确定模型检测正确或者模型检测错误,在错检棋局的情况下,上报给模型训练服务器,在更新模型之后,再发送给模型运行服务器,由模型运行服务器更新物体检测模型。

3.客户端sdk将棋盘中棋子的识别结果交给棋牌游戏客户端业务层进行逻辑棋盘复原。

4.棋牌游戏客户端根据复原后的棋子坐标,渲染游戏电子棋盘,最终完成真实棋局图像转换为电子棋局,方便后续的现场直播。

如图5为本发明实施例提供的逻辑棋盘和电子棋盘的对比示意图,图5中左半部分显示的是拍摄到的棋盘原始图像,图5右半部分显示的是最终渲染出的电子棋盘。

服务部署过程如下,cgi程序基于apache(版本号2.0.59),cgi程序整体部署在服务器上,服务器配置为intel(r)xeon(r)cpue5-2620v3,40g内存。图像检测模块基于python,调用tensorflow进行棋子识别,图像检测模块整体部署在ts80服务器上,ts80服务器配置为双6核cpu(其中cpu型号为intel(r)xeon(r)e5-2620v3),64g内存,12*480gssd,1*80gssd,万兆网卡。这里的图像检测模块应该只包括物体检测模型。

本发明实施例中可以将大数据领域相关技术应用到生活中。通过大量局面图像训练的物体检测模型是本方案的重要模块。本方案解决了当下中国象棋比赛转播、记谱中遇到的或是不经济、或是不方便的痛点。

在本发明的一些实施例中,在将棋盘分块后,也可以训练一个尺寸与分块相适应的小物体检测模型来对棋局的局部进行物体检测,这相对于现有技术的方案也能在一定程度上提升速度。举例说明如下,在图像分块后,可能有的棋子恰好只有一部分落在某一块中,可以直接进行像素做差操作,因为棋子的相应部分之差会很接近于0。但是对于神经网络,它很可能无法仅通过部分棋子而检测到该棋子的确实存在。一个可能的解决方案是,分块时让各小块较图片的四分之一稍大,即各小块有一些重叠的部分,以保证分块的边缘不与棋盘上的网格线重叠,从而使边缘的棋子能够完整的落在某一小块内。

就运行效果来看,完整棋盘进行一次物体检测大约耗时0.3秒,与服务器通信大约耗时0.2秒。假设只对分块做物体检测操作,由于分块的大小约为原始图片的1/4,那么物体检测的耗时也会缩短为原来的1/4左右,但是通信时间不变,所以总耗时至少为原来的一半。而像素做差和图像分类的运算时间都是毫秒级,而且可以被放到前端,不需要与服务器通信,这至少能节省90%的时间。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

为便于更好的实施本发明实施例的上述方案,下面还提供用于实施上述方案的相关装置。

请参阅图6-a所示,本发明实施例提供的一种记谱处理装置600,可以包括:局面确定模块601、图像块检测模块602、棋子识别模块603、棋子分析模块604和棋谱生成模块605,其中,

局面确定模块601,用于根据当前帧的棋盘图像和上次被处理的棋盘图像确定棋盘是否存在棋局局面变化;

图像块检测模块602,用于当棋盘存在棋局局面变化时,从当前帧的棋盘图像中检测出棋子变化的位置图像块;

棋子识别模块603,用于从棋子变化的位置图像块中识别出位置变化的棋子类型;

棋子分析模块604,用于根据位置变化的棋子类型以及预设的棋牌规则确定棋盘上的棋子移动方式和相应的棋子坐标;

棋谱生成模块605,用于根据棋盘上的棋子移动方式和相应的棋子坐标,以及当前帧的棋盘图像生成棋谱。

在本发明的一些实施例中,请参阅图6-b所示,记谱处理装置600还包括:

逻辑棋盘更新模块606,用于棋子分析模块604根据位置变化的棋子类型以及预设的棋牌规则确定棋盘上的棋子移动方式和相应的棋子坐标之后,将棋盘上的棋子移动方式更新到逻辑棋盘上;

电子棋盘生成模块607,用于从逻辑棋盘上复原出所有棋子的棋子类型和相应的棋子坐标,并根据所有棋子的棋子类型和相应的棋子坐标渲染出电子棋盘。

在本发明的一些实施例中,请参阅图6-c所示,棋谱生成模块605,包括:

图像获取单元6051,用于获取棋局中每一步对应的棋盘图像;

棋子记录单元6052,用于针对每一步对应的棋盘图像,记录棋盘上每一步对应的棋子移动方式和相应的棋子坐标;

棋谱生成单元6053,用于在棋局结束时,根据所有步分别对应的棋子移动方式和相应的棋子坐标生成棋谱。

在本发明的一些实施例中,请参阅图6-d所示,图像块检测模块602,包括:

棋谱分块单元6021,用于将当前帧的棋盘图像划分为当前帧的多个棋盘子图像;

相似度计算单元6022,用于将当前帧的任意一个棋盘子图像与上次被处理的相应位置的棋盘子图像进行相似度计算,生成相似度结果;

棋子确定单元6023,用于根据相似度结果确定当前帧的棋盘子图像中是否存在位置变化的棋子;

图像块截取单元6024,用于当当前帧的棋盘子图像中存在位置变化的棋子时,从当前帧的棋盘子图像中截取出棋子变化的位置图像块,单个棋子变化的位置图像块中至多包含一个棋子。

在本发明的一些实施例中,棋子识别模块603,具体用于使用图像分类模型对单个棋子变化的位置图像块进行分类识别,以确定出位置变化的棋子类型。

在本发明的一些实施例中,请参阅图6-e所示,相对于图6-a所示,记谱处理装置600还包括:

物体检测模块608,用于当无法确定出棋盘上的棋子移动方式,或者确定出棋盘存在棋局局面变化时,使用物体检测模型在当前帧的棋盘图像中框选出需要识别的物体,并确定所框选出的物体为棋子;通过物体检测模型确定框选出的棋子对应的类型。

在本发明的一些实施例中,请参阅图6-f所示,相对于图6-a所示,记谱处理装置600还包括:

图像采集模块609,用于局面确定模块601根据当前帧的棋盘图像和上次被处理的棋盘图像确定棋盘是否存在棋局局面变化之前,通过摄像头固定拍摄物理棋盘生成棋盘原始图像;

棋谱调正模块610,用于从棋盘原始图像中定位出棋盘位置,并按照标准棋盘对棋盘位置进行棋盘调正;

图像输出模块611,用于在完成棋盘调正之后,输出当前帧的棋盘图像。

通过以上对本发明实施例的描述可知,首先根据当前帧的棋盘图像和上次被处理的棋盘图像确定棋盘是否存在棋局局面变化,当棋盘存在棋局局面变化时,从当前帧的棋盘图像中检测出棋子变化的位置图像块,然后从棋子变化的位置图像块中识别出位置变化的棋子类型,接下来根据位置变化的棋子类型以及预设的棋牌规则确定棋盘上的棋子移动方式和相应的棋子坐标,最后根据棋盘上的棋子移动方式和相应的棋子坐标,以及当前帧的棋盘图像生成棋谱。由于本发明实施例中使用计算机视觉技术,通过比较当前帧的棋盘图像以及上次被处理的棋盘图像,就可以确定出棋子变化的位置图像块,再识别出位置变化的棋子类型,就可以确定出棋子移动方式和棋子坐标,最后就可以自动生成棋谱,这个图像的识别以及棋子分析都不需要人工参阅,也不需要更改棋盘和棋子,以低成本方式实现棋局对弈过程中的记谱问题,提高记谱效率。

本发明实施例还提供了另一种终端,如图7所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该终端可以为包括手机、平板电脑、pda(personaldigitalassistant,个人数字助理)、pos(pointofsales,销售终端)、车载电脑等任意终端设备,以终端为手机为例:

图7示出的是与本发明实施例提供的终端相关的手机的部分结构的框图。参考图7,手机包括:射频(radiofrequency,rf)电路1010、存储器1020、输入单元1030、显示单元1040、传感器1050、音频电路1060、无线保真(wirelessfidelity,wifi)模块1070、处理器1080、以及电源1090等部件。本领域技术人员可以理解,图7中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

下面结合图7对手机的各个构成部件进行具体的介绍:

rf电路1010可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器1080处理;另外,将设计上行的数据发送给基站。通常,rf电路1010包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(lownoiseamplifier,lna)、双工器等。此外,rf电路1010还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(globalsystemofmobilecommunication,gsm)、通用分组无线服务(generalpacketradioservice,gprs)、码分多址(codedivisionmultipleaccess,cdma)、宽带码分多址(widebandcodedivisionmultipleaccess,wcdma)、长期演进(longtermevolution,lte)、电子邮件、短消息服务(shortmessagingservice,sms)等。

存储器1020可用于存储软件程序以及模块,处理器1080通过运行存储在存储器1020的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器1020可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1020可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

输入单元1030可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元1030可包括触控面板1031以及其他输入设备1032。触控面板1031,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板1031上或在触控面板1031附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板1031可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1080,并能接收处理器1080发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板1031。除了触控面板1031,输入单元1030还可以包括其他输入设备1032。具体地,其他输入设备1032可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。

显示单元1040可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元1040可包括显示面板1041,可选的,可以采用液晶显示器(liquidcrystaldisplay,lcd)、有机发光二极管(organiclight-emittingdiode,oled)等形式来配置显示面板1041。进一步的,触控面板1031可覆盖显示面板1041,当触控面板1031检测到在其上或附近的触摸操作后,传送给处理器1080以确定触摸事件的类型,随后处理器1080根据触摸事件的类型在显示面板1041上提供相应的视觉输出。虽然在图7中,触控面板1031与显示面板1041是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板1031与显示面板1041集成而实现手机的输入和输出功能。

手机还可包括至少一种传感器1050,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1041的亮度,接近传感器可在手机移动到耳边时,关闭显示面板1041和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。

音频电路1060、扬声器1061,传声器1062可提供用户与手机之间的音频接口。音频电路1060可将接收到的音频数据转换后的电信号,传输到扬声器1061,由扬声器1061转换为声音信号输出;另一方面,传声器1062将收集的声音信号转换为电信号,由音频电路1060接收后转换为音频数据,再将音频数据输出处理器1080处理后,经rf电路1010以发送给比如另一手机,或者将音频数据输出至存储器1020以便进一步处理。

wifi属于短距离无线传输技术,手机通过wifi模块1070可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图7示出了wifi模块1070,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。

处理器1080是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器1020内的软件程序和/或模块,以及调用存储在存储器1020内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器1080可包括一个或多个处理单元;优选的,处理器1080可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1080中。

手机还包括给各个部件供电的电源1090(比如电池),优选的,电源可以通过电源管理系统与处理器1080逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。

手机还可以包括摄像头1011,该摄像头1011可以是手机的前置摄像头或者后置摄像头,摄像头1011在采集到棋盘原始图像之后,由处理器1080对该棋盘原始图像进行处理。

在在本发明实施例中,该终端所包括的处理器1080还具有控制执行以上由终端执行的记谱处理方法流程。

图8是本发明实施例提供的一种服务器结构示意图,该服务器1100可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessingunits,cpu)1122(例如,一个或一个以上处理器)和存储器1132,一个或一个以上存储应用程序1142或数据1144的存储介质1130(例如一个或一个以上海量存储设备)。其中,存储器1132和存储介质1130可以是短暂存储或持久存储。存储在存储介质1130的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1122可以设置为与存储介质1130通信,在服务器1100上执行存储介质1130中的一系列指令操作。

服务器1100还可以包括一个或一个以上电源1126,一个或一个以上有线或无线网络接口1150,一个或一个以上输入输出接口1158,和/或,一个或一个以上操作系统1141,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。

上述实施例中由服务器所执行的记谱处理方法步骤可以基于该图8所示的服务器结构。

另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用cpu、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

综上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照上述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对上述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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