掌桥专利:专业的专利平台
掌桥专利
首页

棋局识别方法及装置、设备、存储介质

文献发布时间:2023-06-19 13:45:04


棋局识别方法及装置、设备、存储介质

技术领域

本申请涉及计算机视觉领域,涉及但不限定于棋局识别方法及装置、设备、存储介质。

背景技术

基于视觉的棋局识别是下棋机器人软件的重要组成部分,其核心工作是对处于棋盘上的棋子进行准确地分类及坐标定位。

然而,现有的棋子识别与定位方法都是针对相机垂直棋盘平面拍摄得到的图片进行处理,极大地限制了相机的安装位置选取,使整个下棋机器人机械结构不能灵活地设计。一方面,现有方法大部分使用传统图像处理方法,复杂度高、泛化性较差且精确度较低,无法满足实际需要;另一方面,基于深度学习的目标检测算法一般只能得到形为矩形框的检测框,而棋子在具有倾斜角度的图像平面上的成像不是标准的圆形,因此无法直接使用目标检测算法的结果对棋子中心进行精确的定位。

发明内容

本申请实施例提供一种棋局识别方法及装置、设备、存储介质。

本申请实施例的技术方案是这样实现的:

第一方面,本申请实施例提供一种棋局识别方法,所述方法包括:

确定待处理的棋盘图像上各角点的第一组像素坐标;

基于所述各角点的第一组像素坐标,确定所述各角点在棋子平面上各对应点的第二组像素坐标;其中,所述棋子平面是基于所述棋盘图像上至少一个棋子的表面确定的;

分别基于所述各角点的第一组像素坐标和所述各对应点的第二组像素坐标,对所述棋盘图像进行透视变换,得到两个对应的视角修正图;所述两个视角修正图分别用于表征所述棋盘图像中棋子的上下表面的实际位置;

基于所述两个视角修正图,确定所述棋盘图像的识别结果。

在一些可能的实施例中,所述基于所述各角点的第一组像素坐标,确定所述各角点在棋子平面上各对应点的第二组像素坐标,包括:确定所述各角点在世界坐标系中的第一组测量坐标;基于所述各角点的第一组像素坐标和所述第一组测量坐标,确定所述棋盘图像所在图像坐标系到所述世界坐标系之间的转换关系;基于所述转换关系和所述各角点的第一组测量坐标,确定所述各角点在所述棋子平面上各对应点的第二组像素坐标。

这样,利用棋盘平面各角点的第一组测量坐标和第一组像素坐标的关系确定世界坐标系与相机坐标系之间的转换关系,进而利用转换关系得到棋子平面对应的虚拟角点的第二组像素坐标,获得棋盘图像中棋子的上表面有效且准确的像素值。

在一些可能的实施例中,所述转换关系包括旋转和平移矩阵,所述基于所述转换关系和所述各角点的第一组测量坐标,确定所述各角点在所述棋子平面上各对应点的第二组像素坐标,包括:确定所述棋子平面到所述棋盘图像所在棋盘平面的垂直距离;基于所述垂直距离和所述各角点的第一组测量坐标,确定所述棋子平面上各对应点的第二组测量坐标;基于所述转换和平移矩阵,将所述第二组测量坐标投影到所述棋子平面所在图像坐标系中,得到所述各对应点在所述棋子平面上的第二组像素坐标。

这样,把棋盘平面各角点的第一组测量坐标延z轴平移垂直距离后得到各对应点的第二组测量坐标,再通过转换和平移矩阵将第二组测量坐标重投影到棋子平面中,得到棋子平面中虚拟角点的第二组像素坐标,获得棋盘图像中棋子的上表面有效且准确的像素值。

在一些可能的实施例中,所述两个视觉修正图分别为基于棋盘视角平面的第一视角修正图和基于棋子视角平面的第二视角修正图,所述分别基于所述各角点的第一组像素坐标和所述各对应点的第二组像素坐标,对所述棋盘图像进行透视变换,得到两个对应的视角修正图,包括:确定所述各角点在所述棋盘视角平面上的第一组修正坐标和所述棋子视角平面上的第二组修正坐标;基于所述各角点的第一组像素坐标和所述第一组修正坐标,确定从所述棋盘图像到所述棋盘视角平面的第一透视转换矩阵;基于所述各对应点的第二组像素坐标和所述第二组修正坐标,确定从所述棋盘图像到所述棋子视角平面的第二透视转换矩阵;分别基于所述第一透视变换矩阵和所述第二透视变换矩阵,得到所述棋盘图像对应的所述第一视角修正图和所述第二视角修正图。

这样,首先获取两组预定义视角平面的修正坐标,再利用每一组修正坐标结合对应的一组像素坐标,得到棋盘图像到两个视角平面各自的透视变换矩阵,最后将棋盘图像分别投影到棋盘视角平面和棋子视角平面,从而实现经过两次透视变换得到棋子上下表面精确的边缘像素。

在一些可能的实施例中,所述分别基于所述第一透视变换矩阵和所述第二透视变换矩阵,得到所述棋盘图像对应的所述第一视角修正图和所述第二视角修正图,包括:基于所述第一透视变换矩阵,确定所述第一视角修正图上的像素点在所述棋盘图像上对应的第一像素点;将所述棋盘图像上对应的第一像素点的像素值,作为所述第一视角修正图上的像素点的像素值;基于所述第二透视变换矩阵,确定所述第二视角修正图上的像素点在所述棋盘图像上对应的第二像素点;将所述棋盘图像上对应的第二像素点的像素值,作为所述第二视角修正图上的像素点的像素值。

这样,通过每一透视变换矩阵得到对应视觉修正图上的像素点在待处理棋盘图像上的对应像素点,将该对应像素点的像素值作为对应视觉修正图上的像素点的像素值,如此逐点处理得到对应视角修正图中所有像素点的像素值,即可获得对应视角修正图。

在一些可能的实施例中,所述基于所述两个视角修正图,确定所述棋盘图像的识别结果,包括:分别对所述第一视角修正图和所述第二视角修正图进行检测识别,得到所述棋盘图像上每一棋子对应的两个检测框;基于所述两个检测框在空间位置上的重合部分,确定所述每一棋子的目标检测框;基于所述每一棋子的目标检测框,确定所述棋盘图像的识别结果。

这样,使用基于深度学习的目标检测算法对两个视角修正图上的棋子分别进行识别和定位,并结合它们之间的位置关系得到棋子的目标检测框。实现了对任意相机倾斜角度拍摄下的棋局进行精确识别与棋子快速定位。

在一些可能的实施例中,所述方法还包括:获取摄像模组采集的原始棋盘图像;通过对所述摄像模组进行标定,得到所述摄像模组的内参和畸变参数;基于所述摄像模组的内参和畸变参数,对所述原始棋盘图像进行畸变校正,得到所述待处理的棋盘图像。

这样,通过对摄像模组的内参和畸变参数对原始棋盘图像进行畸变校正,所得到的棋盘图像边缘笔直,便于后续进行角点检测定位得到较准确的棋盘角点坐标。

第二方面,本申请实施例提供一种棋局识别装置,包括第一确定模块、第二确定模块、透视变换模块和第三确定模块,其中:

所述第一确定模块,用于确定待处理的棋盘图像上各角点的第一组像素坐标;

所述第二确定模块,用于基于所述各角点的第一组像素坐标,确定所述各角点在棋子平面上各对应点的第二组像素坐标;其中,所述棋子平面是基于所述棋盘图像上至少一个棋子的表面确定的;

所述透视变换模块,用于分别基于所述各角点的第一组像素坐标和所述各对应点的第二组像素坐标,对所述棋盘图像进行透视变换,得到两个对应的视角修正图;所述两个视角修正图分别用于表征所述棋盘图像中棋子的上下表面的实际位置;

所述第三确定模块,用于基于所述两个视角修正图,确定所述棋盘图像的识别结果。

第三方面,本申请实施例提供一种电子设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述棋局识别方法中的步骤。

第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述棋局识别方法中的步骤。

本申请实施例提供的技术方案带来的有益效果至少包括:

在本申请实施例中,首先,确定待处理的棋盘图像上各角点的第一组像素坐标;然后基于所述各角点的第一组像素坐标,确定所述各角点在棋子平面上各对应点的第二组像素坐标;再分别基于所述各角点的第一组像素坐标和所述各对应点的第二组像素坐标,对所述棋盘图像进行透视变换,得到两个对应的视角修正图;最后基于所述两个视角修正图,确定所述棋盘图像的识别结果;如此,通过获取分别基于棋盘平面、棋子平面确定的两组像素坐标,对待处理的棋盘图像进行透视变换得到对应的两个视角修正图,从而基于两个视角修正图可以获得棋子上下表面的精确边缘像素,进而识别得到准确的棋盘结果。本申请实施例可以避免倾斜角度下由于棋子在棋盘图像上的成像非标准圆形,而无法直接使用目标检测算法的结果对棋子中心进行精确定位的问题。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图,其中:

图1为本申请实施例提供的棋局识别方法的流程示意图;

图2为本申请实施例提供的棋局识别方法的流程示意图;

图3为本申请实施例提供的棋局识别方法的流程示意图;

图4为本申请实施例提供的棋局识别方法的流程示意图;

图5为本申请实施例提供的棋局识别方法的流程示意图;

图6A为本申请实施例提供的棋局识别方法的逻辑框架;

图6B为本申请实施例提供的获取棋子精确坐标的示意图;

图7为本申请实施例提供的棋局识别装置的组成结构示意图;

图8为本申请实施例提供的电子设备的硬件实体示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。以下实施例用于说明本申请,但不用来限制本申请的范围。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。

需要指出,本申请实施例所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。

本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请实施例所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。

本申请实施例提供一种棋局识别方法,应用于电子设备。所述电子设备包括但不限于手机、笔记本电脑、平板电脑和掌上上网设备、多媒体设备、流媒体设备、移动互联网设备、可穿戴设备或其他类型的电子设备。该方法所实现的功能可以通过电子设备中的处理器调用程序代码来实现,当然程序代码可以保存在计算机存储介质中,可见,该电子设备至少包括处理器和存储介质。处理器可以用于进行数据安全管理过程的处理,存储器可以用于存储进行数据安全管理过程中需要的数据以及产生的数据。

图1为本申请实施例提供的棋局识别方法的流程示意图,如图1所示,该方法至少包括以下步骤:

步骤S110,确定待处理的棋盘图像上各角点的第一组像素坐标;

这里,所述待处理的棋盘图像上各角点(Corner Point)为棋盘边缘4个顶点。所述各角点的第一组像素坐标是指每个角点所在位置的像素点的坐标值。

示例地,可以设定图像中最左上角的像素点的坐标为(0,0),与该最左上角的像素点的右侧相邻的像素点的坐标为(1,0),与该最左上角的像素点的下侧相邻的像素点的坐标为(0,1),以此类推。应当理解,像素坐标也可以按照其它规则设定,例如,可以设定图像的中心点的像素坐标为(0,0)等。

通常意义上来说,角点就是极值点,即在某方面属性特别突出的点,是在某些属性上强度最大或者最小的孤立点、线段的终点。在实施中,可以通过滤波、自适应二值化、开运算、直线检测、角点聚类和亚像素角点提取等传统图像处理方法得到棋盘平面上四个角点的第一组像素坐标。

在亚像素级精度的角点检测算法中,有两种常用的方法。一种方法是从亚像素角点到周围像素点的矢量应垂直于图像的灰度梯度这个观察事实得到的,通过最小化误差函数的迭代方法来获得亚像素级精度的坐标值。另一种方法是用二次多项式去逼近周围3乘3领域内的角点反应函数,用线性解法求得亚像素级角点坐标。

步骤S120,基于所述各角点的第一组像素坐标,确定所述各角点在棋子平面上各对应点的第二组像素坐标;

这里,所述棋子平面是基于所述棋盘图像上至少一个棋子的表面确定的。例如将棋盘图像所在平面向上平移棋子的厚度的距离,可以得到棋子平面。

在实施中,首先利用已知棋盘角点的世界坐标和第一组像素坐标即图像坐标之间的关系求得世界坐标系与相机坐标系之间的转换关系,从而利用转换关系把各角点在棋子平面上各对应点即虚拟棋盘角点重投影到图象平面中,得到各对应点的第二组像素坐标。

需要说明的是,图像坐标系到世界坐标系之间的转换关系包括图像坐标系到相机坐标系之间的透视投影,以及相机坐标系到世界坐标系之间的刚体变换。

刚体变换,也就是只改变棋盘的空间位置(平移)和朝向(旋转),而不改变棋盘的形状。通过以下公式(1)表示这种变换:

其中,

透视投影,是将棋盘坐标从三维转换到二维的棋盘图像中每一像素点的坐标。通过以下公式(2)表示这种投影关系:

其中,x,y分别为图像坐标系中像素点的坐标,f为相机的焦距,x

步骤S130,分别基于所述各角点的第一组像素坐标和所述各对应点的第二组像素坐标,对所述棋盘图像进行透视变换,得到两个对应的视角修正图;

这里,所述两个视角修正图分别用于表征所述棋盘图像中棋子的上下表面的实际位置。根据每组像素坐标与相应视角修正图中对应像素坐标之间的关系,对待处理的棋盘图像进行透视变换得到对应的两个视角修正图。

由于预定义的两个视角修正图上各角点的像素坐标是已知的,因此根据确定的各角点在棋盘图像上的第一组像素坐标和对应视角修正图上的像素坐标,以及根据确定的各对应点在棋子平面上的第二组像素坐标和对应视角修正图上的像素坐标,可以分别计算棋盘图像到两个对应视角修正图的透视变换矩阵(Perspective Transformation)。

要获取待处理棋盘图像经过透视变换后的视角修正图,即确定视角修正图中每一像素点的像素值。因此,可以根据计算的每一透视变换矩阵得到对应视角修正图上的像素点在待处理棋盘图像上的对应像素点,并计算该对应像素点的像素值作为对应视角修正图上的像素点的像素值,这样依次求得对应视角修正图上所有像素点的像素值,即可获得对应视角修正图。

步骤S140,基于所述两个视角修正图,确定所述棋盘图像的识别结果。

这里,使用基于深度学习的目标检测算法分别对两个视角修正图中的同一棋子进行识别与粗检测,并结合两者结果得到相应棋子的更精确的中心坐标和类别。根据棋盘图像中所有棋子的类别和定位坐标,即可确定棋盘图像的识别结果。

棋盘图像的识别结果包括每一棋子的类别和位置信息。在一些实施方式中,棋盘图像为对围棋进行拍摄得到的,则棋盘图像的识别结果包括空点、白色棋子、黑色棋子、异物或棋子位置不正等。

在另一些实施方式中,棋盘图像为对象棋进行拍摄得到的,则棋盘图像的识别结果包括“马”棋子、“卒”棋子、“车”棋子、空点以及各棋子位置坐标等。根据棋盘图像的识别结果可以进一步分析棋盘中棋局的分布情况,指导下棋机器人或对弈机器人进行业务处理。

在本申请实施例中,首先,确定待处理的棋盘图像上各角点的第一组像素坐标;然后基于所述各角点的第一组像素坐标,确定所述各角点在棋子平面上各对应点的第二组像素坐标;再分别基于所述各角点的第一组像素坐标和所述各对应点的第二组像素坐标,对所述棋盘图像进行透视变换,得到两个对应的视角修正图;最后基于所述两个视角修正图,确定所述棋盘图像的识别结果;如此,通过获取分别基于棋盘平面、棋子平面确定的两组像素坐标,对待处理的棋盘图像进行透视变换得到对应的两个视角修正图,从而基于两个视角修正图可以获得棋子上下表面的精确边缘像素,进而识别得到准确的棋盘结果。本申请实施例可以避免倾斜角度下由于棋子在棋盘图像上的成像非标准圆形,而无法直接使用目标检测算法的结果对棋子中心进行精确定位的问题。

图2为本申请实施例提供的棋局识别方法的流程示意图,如图2所示,该方法至少包括以下步骤:

步骤S210,获取摄像模组采集的原始棋盘图像;

这里,由于摄像模组的镜头制作精益的问题,经投影镜头投出的画面会存在畸变,通常所采集的原始棋盘图像越到周边部越产生歪曲。

需要说明的是,镜头畸变的产生原因是镜头里的镜片因为光线的通过产生的不规则的折射,但因为这是镜头的固有特性,所以这种情况下产生的畸变没有办法消除,只能改善。

所述摄像模组可以为普通摄像机或相机,可以为也可以为支持110度至130度的极限广角拍摄的广角模组。在本申请的实施例中,摄像模组可以包括能够捕获图像的各类器件。

所述原始棋盘图像是由摄像模组采集的未经处理的图像。在本实施例中,以该方法应用于电子设备中为例,电子设备的相机实时拍摄原始棋盘图像并将其传输至电子设备的处理器,从而使得电子设备获取到原始棋盘图像。在其他实施例中,原始棋盘图像也可以是从网络下载或者从其他终端设备传输至该电子设备,或者电子设备也可以从其自身的存储器中读取原始棋盘图像等。

步骤S220,通过对所述摄像模组进行标定,得到所述摄像模组的内参和畸变参数;

这里,摄像模组的内参是相机的固有参数,在摄像模组制造完成后,该摄像模组的内参就确定了。内参可以从制造厂商获取,也可以通过对摄像模组的进行标定来获取。

可以使用线性标定方法、非线性优化标定方法、张正友标定方法或其它常见的标定方法对摄像模组进行标定,本申请对标定方法不作限制,只要能够获取摄像模组的内参即可。

步骤S230,基于所述摄像模组的内参和畸变参数,对所述原始棋盘图像进行畸变校正,得到所述待处理的棋盘图像;

这里,基于相机的内参和畸变参数对输入图像进行畸变校正以消除原始棋盘图像中的畸变现象,得到的所述待处理的棋盘图像为棋盘边缘笔直的图像。

需要说明的是,在采样摄像模组拍摄图像时,由于摄像头自身的特性会导致图像出现畸变。通常这种畸变可以通过摄像头的畸变参数矫正。一般摄像头的参数包括内参、外参和畸变参数,这些参数可以通过对摄像头进行标定获取。

畸形校正是确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,畸形校正的参数一般须通过较复杂的实验和计算才能得到,而且需要对摄像模组采集的每一副图像都进行畸形校正。

步骤S240,确定待处理的棋盘图像上各角点的第一组像素坐标;

步骤S250,基于所述各角点的第一组像素坐标,确定所述各角点在棋子平面上各对应点的第二组像素坐标;

这里,所述棋子平面是基于所述棋盘图像上至少一个棋子的表面确定的。

步骤S260,分别基于所述各角点的第一组像素坐标和所述各对应点的第二组像素坐标,对所述棋盘图像进行透视变换,得到两个对应的视角修正图;

这里,所述两个视角修正图分别用于表征所述棋盘图像中棋子的上下表面的实际位置。

步骤S270,基于所述两个视角修正图,确定所述棋盘图像的识别结果。

在本申请实施例中,通过对摄像模组的内参和畸变参数对原始棋盘图像进行畸变校正,所得到待处理的棋盘图像边缘笔直,便于后续进行角点检测定位得到较准确的棋盘角点坐标。

在一些可能的实施例中,所述转换关系包括旋转和平移矩阵,图3为本申请实施例提供的棋局识别方法的流程示意图,如图3所示,所述方法可以通过以下步骤实现:

步骤S310,确定待处理的棋盘图像上各角点的第一组像素坐标;

这里,所述第一组像素坐标是指每个角点所在位置的像素点的坐标值。

步骤S320,确定所述各角点在世界坐标系中的第一组测量坐标;

这里,所述第一组测量坐标即各角点的世界坐标,可以通过测量得到。在世界坐标系中可以描述摄像模组和被拍摄的棋盘的空间位置。世界坐标系的位置根据实际情况自行确定。

步骤S330,基于所述各角点的第一组像素坐标和所述第一组测量坐标,确定所述棋盘图像所在图像坐标系到所述世界坐标系之间的转换关系;

这里,利用棋盘平面各角点的第一组像素坐标(图像坐标)和第一组测量坐标(世界坐标)的对应关系,计算得到旋转和平移矩阵,从而确定图像坐标系到世界坐标系之间的转换关系。

步骤S340,基于所述转换关系和所述各角点的第一组测量坐标,确定所述各角点在所述棋子平面上各对应点的第二组像素坐标;

这里,所述棋子平面是基于所述棋盘图像上至少一个棋子的表面确定的。

在实施中,先通过各角点的第一组测量坐标确定棋子平面上各对应点在世界坐标系中的第二组测量坐标,然后通过刚体变换将将棋子平面上各对应点从世界坐标系变换到相机坐标系,再通过透射投影将棋子平面上各对应点从相机坐标系投影到图像坐标系中,得到棋子平面上各对应点的第二组像素坐标。

在一些实施方式中,上述步骤S340可以通过以下步骤实现:

步骤S3401,确定所述棋子平面到所述棋盘图像所在棋盘平面的垂直距离;

这里,所述垂直距离为棋子的高度,默认棋盘上所有棋子的高度统一。

步骤S3402,基于所述垂直距离和所述各角点的第一组测量坐标,确定所述棋子平面上各对应点的第二组测量坐标;

这里,设定垂直距离为a,将各角点在棋盘平面上的第一组测量坐标分别沿z轴向上延伸a个单位,得到棋子平面上各对应点的第二组测量坐标。

步骤S3403,基于所述转换和平移矩阵,将所述第二组测量坐标投影到所述棋子平面所在图像坐标系中,得到所述各对应点在所述棋子平面上的第二组像素坐标。

这样,把棋盘平面各角点的第一组测量坐标延z轴平移垂直距离后得到各对应点的第二组测量坐标,再通过转换和平移矩阵将第二组测量坐标重投影到棋子平面中,得到棋子平面中虚拟角点的第二组像素坐标,获得棋盘图像中棋子的上表面有效且准确的像素值。

步骤S350,分别基于所述各角点的第一组像素坐标和所述各对应点的第二组像素坐标,对所述棋盘图像进行透视变换,得到两个对应的视角修正图;

这里,所述两个视角修正图分别用于表征所述棋盘图像中棋子的上下表面的实际位置。

步骤S360,基于所述两个视角修正图,确定所述棋盘图像的识别结果。

在本申请实施例中,利用棋盘平面各角点的第一组测量坐标和第一组像素坐标的关系确定世界坐标系与相机坐标系之间的转换关系,进而利用转换关系得到棋子平面对应的虚拟角点的第二组像素坐标,获得棋盘图像中棋子的上表面有效且准确的像素值。

在一些实施例中,所述两个视觉修正图分别为基于棋盘视角平面的第一视角修正图和基于棋子视角平面的第二视角修正图,图4为本申请实施例提供的棋局识别方法的流程示意图,如图4所示,所述方法可以通过以下步骤实现:

步骤S410,确定待处理的棋盘图像上各角点的第一组像素坐标;

步骤S420,基于所述各角点的第一组像素坐标,确定所述各角点在棋子平面上各对应点的第二组像素坐标;

这里,所述棋子平面是基于所述棋盘图像上至少一个棋子的表面确定的。

步骤S430,确定所述各角点在所述棋盘视角平面上的第一组修正坐标和所述棋子视角平面上的第二组修正坐标;

这里,所述第一组修正坐标和第二组修正坐标分别为预定义的两个视角修正图上各角点的像素坐标,可以根据棋盘大小确定。

示例地,对于一个视角修正图,该图中的棋盘边缘四个角点的像素坐标可以分别为(0,0),(0,l),(0,h),(l,h)。其中,l为棋盘的长,h为棋盘的宽。

步骤S440,基于所述各角点的第一组像素坐标和所述第一组修正坐标,确定从所述棋盘图像到所述棋盘视角平面的第一透视转换矩阵;

这里,在获得各角点的第一组像素坐标和所述第一组修正坐标之后,可以按照如下公式(3),计算得到第一透视转换矩阵。

其中,[x,y,w]为各角点在棋盘图像上的第一组像素坐标,[μ,ν,ω]为各角点在对应棋盘视角平面上的第一组修正坐标,

步骤S450,基于所述各对应点的第二组像素坐标和所述第二组修正坐标,确定从所述棋盘图像到所述棋子视角平面的第二透视转换矩阵;

这里,同样利用上述公式(3),在[x,y,w]为各对应点在棋子平面上的第二组像素坐标,且[μ,ν,ω]为各对应点在对应棋子视角平面上的第二组修正坐标的情况下,计算得到的棋盘图像到所述棋子视角平面的第二透视转换矩阵。

值得注意的是,透视变换是三维空间上的变换,但通常用来处理二维图像,所以第二组像素坐标中z轴坐标w且第二组修正坐标中z轴坐标ω恒为1,进而a

步骤S460,分别基于所述第一透视变换矩阵和所述第二透视变换矩阵,得到所述棋盘图像对应的所述第一视角修正图和所述第二视角修正图。

这里,由于透视变换的过程是图像处理中的点变换,即每一视角修正图上的每一个点,都可以通过运算,找到待处理棋盘图像上的唯一对应点。因而可以通过每一透视变换矩阵得到对应视觉修正图上的像素点在待处理棋盘图像上的对应像素点,并将该对应像素点的像素值作为对应视觉修正图上的像素点的像素值,如此逐点处理得到对应视角修正图中所有像素点的像素值,即可获得对应视角修正图。

在一些实施方式中,基于所述第一透视变换矩阵,确定所述第一视角修正图上的像素点在所述棋盘图像上对应的第一像素点;将所述棋盘图像上对应的第一像素点的像素值,作为所述第一视角修正图上的像素点的像素值;

在一些实施方式中,基于所述第二透视变换矩阵,确定所述第二视角修正图上的像素点在所述棋盘图像上对应的第二像素点;将所述棋盘图像上对应的第二像素点的像素值,作为所述第二视角修正图上的像素点的像素值。

在本申请实施例中,首先获取两组预定义视角平面的修正坐标,再利用每一组修正坐标结合对应的一组像素坐标,得到棋盘图像到两个视角平面各自的透视变换矩阵,最后将棋盘图像分别投影到棋盘视角平面和棋子视角平面,从而实现经过两次透视变换得到棋子上下表面精确的边缘像素。

在一些实施例中,所述两个视觉修正图分别为基于棋盘视角平面的第一视角修正图和基于棋子视角平面的第二视角修正图,图5为本申请实施例提供的棋局识别方法的流程示意图,如图5所示,所述方法可以通过以下步骤实现:

步骤S510,确定待处理的棋盘图像上各角点的第一组像素坐标;

步骤S520,基于所述各角点的第一组像素坐标,确定所述各角点在棋子平面上各对应点的第二组像素坐标;

这里,所述棋子平面是基于所述棋盘图像上至少一个棋子的表面确定的。

步骤S530,分别基于所述各角点的第一组像素坐标和所述各对应点的第二组像素坐标,对所述棋盘图像进行透视变换,得到两个对应的视角修正图;

步骤S540,分别对所述第一视角修正图和所述第二视角修正图进行检测识别,得到所述棋盘图像上每一棋子对应的两个检测框;

这里,使用基于深度学习的目标检测算法对两个视角修正图上的每一棋子分别进行识别和定位,在每一视角修正图上得到每一棋子的一个检测框和对应类别,即针对每一棋子,得到第一视角修正图上的检测框和第二视角修正图上的检测框。

步骤S550,基于所述两个检测框在空间位置上的重合部分,确定所述每一棋子的目标检测框;

这里,取两个检测框在空间位置上的重合部分,作为所述每一棋子的目标检测框,计算重合部分的中点即为棋子中心的精确坐标。

需要说明的是,该目标检测框为棋子上表面的外接矩形框,可以直接使用目标检测算法的结果对棋子中心进行精确的定位。

步骤S560,基于所述每一棋子的目标检测框,确定所述棋盘图像的识别结果。

这里,通过确定每一棋子的目标检测框确定每一棋子的类别和中心坐标,进一步分析棋盘中棋局的分布情况,指导下棋机器人或对弈机器人进行业务处理。

在本申请实施例中,在传统图像处理算法的基础上,使用基于深度学习的目标检测算法对两个视角修正图上的棋子分别进行识别和定位,并结合它们之间的位置关系得到棋子的目标检测框及精确中心坐标。实现了对任意相机倾斜角度拍摄下的棋局进行精确识别与棋子快速定位。

应注意,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

下面结合一个具体实施例对上述棋局识别方法进行说明,然而值得注意的是,该具体实施例仅是为了更好地说明本申请,并不构成对本申请的不当限定。

针对任意相机倾斜角度拍摄的棋盘图像,图6A为本申请实施例提供的棋局识别方法的逻辑框架,如图6A所示,该方法包括以下步骤:

步骤S601,对相机进行标定;

这里,使用张正友标定法对相机的相机内参进行标定。

步骤S602,对输入的棋盘图像进行畸变校正;

这里,使用标定得到的相机内参和畸变系数对输入的棋盘图像进行畸变校正以得到棋盘边缘笔直的棋盘图像。

步骤S603,对畸变校正后的棋盘图像进行角点检测定位;

这里,对畸变校正后的图片进行棋盘角点检测定位:通过滤波、自适应二值化、开运算、直线检测、角点聚类和亚像素角点提取等传统图像处理方法得到棋盘平面上四个棋盘角点坐标(相当于第一组像素坐标)。

步骤S604,获取棋盘视角的第一组修正坐标和棋子视角的第二组修正坐标;

这里,通过预定义的棋盘视角平面确定第一组修正坐标,通过预定义的棋子视角平面确定第二组修正坐标。

步骤S605,根据两组修正坐标分别对棋盘图像进行视角修正,得到两个视角修正图;

这里,首先获取棋盘角点在棋子平面对应点的角点坐标(即各对应点的第二组像素坐标):通过棋盘平面上四个棋盘角点坐标与它们在世界坐标系下的坐标(相当于第一组测量坐标)得到旋转和平移矩阵,并根据旋转和平移矩阵把棋子平面(比棋盘平面高)上四个棋盘角点对应点从世界坐标系投影到图像坐标系中,即得到对应点在棋子平面中的角点坐标。

然后,根据修正坐标对畸变校正后的棋盘视图进行视角修正,得到理想棋盘位置图:使用这两组角点的坐标(即第一组像素坐标和第二组像素坐标)和各自的预定义视角平面上对应修正坐标的关系可以得到两个透视变换矩阵。

如图6A所示,根据这两个透视变换矩阵可以分别得到基于棋盘视角平面的第一视角修正图61与基于棋子视角平面的第二视角修正图62。需要说明的是,第二视角修正图62相当于基于高于棋盘平面的棋子平面拍摄的棋盘理想位置图,因此第二视角修正图62中的棋盘距离相机较远,棋盘尺寸比第一视角修正图中的棋盘尺寸看起来小一些。

步骤S606,使用深度学习与传统图像算法相结合的方法获取棋子的类别和精确的位置;

这里,使用基于深度学习的目标检测算法分别对两个视角修正图上的棋子进行识别和粗定位,并结合两个定位结果间的变换关系得到棋子的精确中心坐标。

如图6B所示,以其中一个棋子的矩形框粗定位结果为例:取第一视角修正图中任一棋子的矩形框611与第二视角修正图中对应的棋子的矩形框621的相交部分,计算相交部分的中点即为棋子中心的精确坐标631。

步骤S607,输出棋局信息。

现有的棋子识别与定位方法都是针对相机垂直棋盘平面拍摄得到的图片进行处理,极大地限制了相机的安装位置选取,使整个下棋机器人机械结构不能灵活地设计。本申请实施例提出的棋局识别方法可以对任意相机倾斜角度拍摄下的棋局进行精确识别与棋子快速定位。

基于前述的实施例,本申请实施例再提供一种棋局识别装置,所述装置包括所包括的各模块、以及各模块所包括的各子模块,以及各子模块所包括的各单元,可以通过电子设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(Central Processing Unit,CPU)、微处理器(Micro Processing Unit,MPU)、数字信号处理器(Digital Signal Processor,DSP)或现场可编程门阵列(FieldProgrammable Gate Array,FPGA)等。

图7为本申请实施例提供的棋局识别装置的组成结构示意图,如图7所示,所述装置700包括第一确定模块710、第二确定模块720、透视变换模块730和第三确定模块740,其中:

所述第一确定模块710,用于确定待处理的棋盘图像上各角点的第一组像素坐标;

所述第二确定模块720,用于基于所述各角点的第一组像素坐标,确定所述各角点在棋子平面上各对应点的第二组像素坐标;其中,所述棋子平面是基于所述棋盘图像上至少一个棋子的表面确定的;

所述透视变换模块730,用于分别基于所述各角点的第一组像素坐标和所述各对应点的第二组像素坐标,对所述棋盘图像进行透视变换,得到两个对应的视角修正图;所述两个视角修正图分别用于表征所述棋盘图像中棋子的上下表面的实际位置;

所述第三确定模块740,用于基于所述两个视角修正图,确定所述棋盘图像的识别结果。

在一些可能的实施例中,所述第二确定模块720包括第一确定子模块,用于确定所述各角点在世界坐标系中的第一组测量坐标;第二确定子模块,用于基于所述各角点的第一组像素坐标和所述第一组测量坐标,确定所述棋盘图像所在图像坐标系到所述世界坐标系之间的转换关系;第三确定子模块,用于基于所述转换关系和所述各角点的第一组测量坐标,确定所述各角点在所述棋子平面上各对应点的第二组像素坐标。

在一些可能的实施例中,所述转换关系包括旋转和平移矩阵,所述第三确定子模块包括第一确定单元,用于确定所述棋子平面到所述棋盘图像所在棋盘平面的垂直距离;第二确定单元,用于基于所述垂直距离和所述各角点的第一组测量坐标,确定所述棋子平面上各对应点的第二组测量坐标;转换单元,用于基于所述转换和平移矩阵,将所述第二组测量坐标投影到所述棋子平面所在图像坐标系中,得到所述各对应点在所述棋子平面上的第二组像素坐标。

在一些可能的实施例中,所述两个视觉修正图分别为基于棋盘视角平面的第一视角修正图和基于棋子视角平面的第二视角修正图,所述透视变换模块730包括第四确定子模块,用于确定所述各角点在所述棋盘视角平面上的第一组修正坐标和所述棋子视角平面上的第二组修正坐标;第五确定子模块,用于基于所述各角点的第一组像素坐标和所述第一组修正坐标,确定从所述棋盘图像到所述棋盘视角平面的第一透视转换矩阵;第六确定子模块,用于基于所述各对应点的第二组像素坐标和所述第二组修正坐标,确定从所述棋盘图像到所述棋子视角平面的第二透视转换矩阵;第七确定子模块,用于分别基于所述第一透视变换矩阵和所述第二透视变换矩阵,得到所述棋盘图像对应的所述第一视角修正图和所述第二视角修正图。

在一些可能的实施例中,所述第七确定子模块包括第三确定单元,用于基于所述第一透视变换矩阵,确定所述第一视角修正图上的像素点在所述棋盘图像上对应的第一像素点;将所述棋盘图像上对应的第一像素点的像素值,作为所述第一视角修正图上的像素点的像素值;第四确定单元,用于基于所述第二透视变换矩阵,确定所述第二视角修正图上的像素点在所述棋盘图像上对应的第二像素点;将所述棋盘图像上对应的第二像素点的像素值,作为所述第二视角修正图上的像素点的像素值。

在一些可能的实施例中,所述第三确定模块740包括检测子模块,分别对所述第一视角修正图和所述第二视角修正图进行检测识别,得到所述棋盘图像上每一棋子对应的两个检测框;第八确定子模块,用于基于所述两个检测框在空间位置上的重合部分,确定所述每一棋子的目标检测框;第九确定子模块,用于基于所述每一棋子的目标检测框,确定所述棋盘图像的识别结果。

在一些可能的实施例中,所述装置700还包括获取模块,用于获取摄像模组采集的原始棋盘图像;标定模块,用于通过对所述摄像模组进行标定,得到所述摄像模组的内参和畸变参数;校正模块,用于基于所述摄像模组的内参和畸变参数,对所述原始棋盘图像进行畸变校正,得到所述待处理的棋盘图像。

这里需要指出的是:以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。

需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述棋局识别方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得电子设备(可以是具有摄像头的智能手机、平板电脑等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。

对应地,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任一实施例中所述棋局识别方法中的步骤。

对应地,本申请实施例中,还提供了一种芯片,所述芯片包括可编程逻辑电路和/或程序指令,当所述芯片运行时,用于实现上述任一实施例中所述棋局识别方法中的步骤。

对应地,本申请实施例中,还提供了一种计算机程序产品,当该计算机程序产品被电子设备的处理器执行时,其用于实现上述任一实施例中所述棋局识别方法中的步骤。

基于同一技术构思,本申请实施例提供一种电子设备,用于实施上述方法实施例记载的棋局识别方法。图8为本申请实施例提供的电子设备的硬件实体示意图,如图8所示,所述电子设备800包括存储器810和处理器820,所述存储器810存储有可在处理器820上运行的计算机程序,所述处理器820执行所述程序时实现本申请实施例任一所述棋局识别方法中的步骤。

存储器810配置为存储由处理器820可执行的指令和应用,还可以缓存待处理器820以及电子设备中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random Access Memory,RAM)实现。

处理器820执行程序时实现上述任一项的棋局识别方法的步骤。处理器820通常控制电子设备800的总体操作。

上述处理器可以为特定用途集成电路(Application Specific IntegratedCircuit,ASIC)、数字信号处理器(Digital Signal Processor,DSP)、数字信号处理装置(Digital Signal Processing Device,DSPD)、可编程逻辑装置(Programmable LogicDevice,PLD)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器中的至少一种。可以理解地,实现上述处理器功能的电子器件还可以为其它,本申请实施例不作具体限定。

上述计算机存储介质/存储器可以是只读存储器(Read Only Memory,ROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性随机存取存储器(Ferromagnetic Random Access Memory,FRAM)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(Compact Disc Read-Only Memory,CD-ROM)等存储器;也可以是包括上述存储器之一或任意组合的各种电子设备,如移动电话、计算机、平板设备、个人数字助理等。

这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。

应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本申请实施例方案的目的。

另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得设备自动测试线执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。

本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。

本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。

以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

相关技术
  • 棋局识别方法及装置、设备、存储介质
  • 设备识别方法、装置及设备、存储介质
技术分类

06120113791861