三维空间中象棋棋子位置的确定及其高度的计算方法与流程

文档序号:15463494发布日期:2018-09-18 18:44阅读:627来源:国知局

本发明涉及一种象棋机器人,属于机器视觉和图像处理领域。具体提出了一种三维空间中象棋棋子位置的确定及其高度的计算方法。此方法也可应用于对空间中单个的规则物体高度的计算。



背景技术:

随着机器人技术的快速发展及其在各行业中广泛的应用,机器视觉在机器人的应用中起着越来越重要的作用。在象棋机器人中,对空间中棋子位置的确定和棋子高度的计算也是象棋机器人中至关重要的一部分。

对于空间棋子位置的确定,在现有的棋子图像处理方法中,因为外界的环境因素(光照,其它物体干扰等等)对棋子的提取有很大的影响,所以,在提取棋子后,必须经过多次图像预处理,才能祛除噪声点,处理步骤重复且繁多,而且不确定因素的增多,也就增加了图像处理的过程和时间。

对于棋子高度的计算,大多采用双目视觉或者提取三维空间点云等方法对物体进行测量,这些方法存在算法复杂度高,购买相机的价格高等问题。



技术实现要素:

为了解决现有技术中存在的技术问题,本发明采用的技术方案分为以下两部分:

其一,三维空间中象棋棋子位置的确定方法:包括以下步骤:

步骤1,采集待确定空间位置象棋棋子的图像,先对采集的图像进行图像预处理,再根据象棋棋子上文字颜色的不同,按照HSV颜色模型中各分量的意义,确定棋子上红、绿文字的H、S、V范围,分别对红、绿棋子进行分割,得到两幅二值图像;

步骤2,将对红、绿棋子分别分割后的两幅二值图像进行线性融合,两幅二值图像在融合后,会将各自在提取中产生的噪声点进行相互掩盖,得到一副没有噪声点且包含红、绿棋子的二值图像;

因为红色更鲜亮,所以红色棋子在提取时受环境干扰的影响小,可以适应绝大多数变化的环境;绿色较暗,在提取时的主要噪声来自于有红色棋子的像素点,如果光线变暗,则红色棋子所在位置的噪声点就会不断增加。此时,对绿色棋子提取后的图像进行预处理时,处理过程会变得繁琐,而且达不到预期的效果。所以直接将提取后的两幅图像进行融合,这样,绿色提取图中存在的噪声点就会被红色提取图中红色棋子所在的位置覆盖,减少了后期图像预处理的过程,而且可以达到预期的提取效果。

步骤3,对融合后的二值图像进行膨胀运算,连接图像中相邻的元素,使提取到的每个棋子所在的区域成为单个的、互不相关的连通域;

步骤4,对膨胀后图像中的棋子进行轮廓提取,并绘制各自轮廓的外接圆,通过外接圆确定圆心的位置,即32个棋子在图像坐标系下的位置;

步骤5,将标定板放置于32个棋子上表面所在的平面,再通过OpenCV中的标定函数calibrateCamera计算Kinect的彩色相机的内外参(Hrgb,Rrgb,Trgb),再通过针孔相机模型中图像坐标系与世界坐标系的转换关系式,进一步计算棋子在世界坐标系下的位置,即棋子在空间中的位置;

步骤6,将标定板放置于32个棋子上表面所在的平面,通过OpenCV中的标定函数calibrateCamera计算Kinect的深度相机的内外参(Hd,Rd,Td);

因为Kinect的红外相机与深度相机在相同的位置,采集标定图像只能用红外相机,因此对红外相机标定也就是对深度相机的标定;在红外摄像头采集的图像中,并不是每幅图都可以进行角点的提取,它会受到物体材质的影响,导致角点检测无效,所以需要采集较多的图像,才能使红外摄像头的标定更加准确,建议采集的图像数量在20-25张;

步骤7,根据世界坐标系下的点(Wp)与彩色相机坐标系下的点(Kp)的转换关系:Kp=Rrgb*Wp+Trgb,和世界坐标系下的点(Wp)与深度相机坐标系下的点(Kdp)的转换关系:Kdp=Rd*Wp+Td,计算出Kinect彩色相机坐标系和深度相机坐标系之间的关系,再根据深度相机标定后的内参,将深度相机坐标系下的空间点转换到深度像素坐标系下,实现了彩色相机坐标系下的空间点与深度图像坐标系下的深度像素点的匹配;根据上述匹配方法,将彩色相机坐标系下的棋子位置转换到深度图像坐标系下,算出深度坐标系下棋子的坐标;

步骤8,根据Kinect采集的深度图中景深数据的存储方式,对得到的深度像素坐标系下的棋子坐标进行景深信息的提取,得到空间中棋子上表面的圆心到sensor所在平面的垂直距离d;

步骤9,根据步骤7中得到的棋子在深度相机坐标系下的坐标,将该坐标投影到深度相机坐标系的XOY平面上,算出投影点到该坐标系原点的距离d1,再结合步骤8中得到的距离d,根据勾股定理D2=d12+d2,算出空间中棋子上表面的圆心到sensor的实际距离D,即完成了对三维空间中象棋棋子位置的确定。

所述步骤1中,采集待确定位置象棋棋子的图像,先对采集的图像进行图像预处理,再根据象棋棋子上文字颜色的不同,按照HSV颜色模型中各分量的意义,确定棋子上红、绿文字的H、S、V范围,其步骤包括:

2.1、采用透视变换的方法,对采集的象棋棋子图像进行空间矫正,将图像矫正成正投影的形式;

2.2、对透视变换后的图像设置ROI;

2.3、再根据象棋棋子上文字颜色的不同,按照HSV颜色模型中各分量的意义,确定了棋子红、绿色文字的H、S、V各分量值为:红色H、S、V的取值范围分别为1-15、60-255,0-93,绿色H、S、V的取值范围分别0-95、0-255、0-93。

首先,对采集的图像进行空间矫正,采用透视变换的方法,仍能保持承影面上投影几何图形不变,使图像矫正成正投影的形式;其次,为了消除周围环境对棋子提取时的不必要干扰,减少后期图像处理的时间、增加棋子坐标的定位精度,因此对透视变换后的图像设置ROI。经过上述透视变换和设置ROI,将采集的源图像处理成只有棋子和棋盘的图像,为下一步棋子的分割和空间定位做好前期的准备。

因为HSV颜色模型有利于对指定的颜色进行分割,所以采用HSV模型对棋子进行分割。根据象棋棋子上文字颜色的不同,按照HSV颜色模型中各分量的意义,确定棋子上红、绿文字的H、S、V范围,分别对红、绿棋子进行分割,得到两幅二值图像。

所述步骤7中,根据世界坐标系下的点(Wp)与彩色相机坐标系下的点(Kp)的转换关系:Kp=Rrgb*Wp+Trgb,和世界坐标系下的点(Wp)与深度相机坐标系下的点(Kdp)的转换关系:Kdp=Rd*Wp+Td,计算出Kinect彩色相机坐标系和深度相机坐标系之间的关系,再根据深度相机标定后的内参,将深度相机坐标系下的空间点转换到深度像素坐标系下,实现了彩色相机坐标系下的空间点与深度图像坐标系下的深度像素点的匹配,其具体匹配方法如下:

世界坐标系下的点(Wp)与彩色坐标下的点(Kp)的转换关系为:Kp=Rrgb*Wp+Trgb①,世界坐标系下的点(Wp)与深度相机坐标系下的点(Kdp)的转换关系为:Kdp=Rd*Wp+Td②,由①式,得:

将③式带入②式,得:

在彩色相机坐标系下的点Kp和深度相机坐标系下的点Kdp满足:Kdp=R*Kp+T⑤,其中R、T是两个坐标之间的旋转矩阵和平移向量;

结合④⑤式,得:

再将⑥⑦式代入⑤,即可得彩色相机坐标系下的点与深度相机坐标系下的点的转换关系:

再将Kdp乘以深度相机的内参,便得到与彩色相机坐标系下空间点相对应的深度图像坐标系下的像素点,这样就实现了彩色相机坐标系下的空间点到深度图像坐标系下的深度像素点的匹配。

其二,三维空间中象棋棋子高度的计算方法,包括以下步骤:

步骤1,采集待确定空间位置象棋棋子的图像,先对采集的图像进行图像预处理,再根据象棋棋子上文字颜色的不同,按照HSV颜色模型中各分量的意义,确定棋子上红、绿文字的H、S、V范围,分别对红、绿棋子进行分割,得到两幅二值图像;

步骤2,将对红、绿棋子分别分割后的两幅二值图像进行线性融合,两幅二值图像在融合后,会将各自在提取中产生的噪声点进行相互掩盖,得到一副没有噪声点且包含红、绿棋子的二值图像。因为没有了噪声点,所以大大提高了后期图像处理的速度,简化了图像处理的步骤。

因为红色更鲜亮,所以红色棋子在提取时受环境干扰的影响小,可以适应绝大多数变化的环境;绿色较暗,在提取时的主要噪声来自于有红色棋子的像素点,如果光线变暗,则红色棋子所在位置的噪声点就会不断增加。此时,对绿色棋子提取后的图像进行预处理时,处理过程会变得繁琐,而且达不到预期的效果。所以直接将提取后的两幅图像进行融合,这样,绿色提取图中存在的噪声点就会被红色提取图中红色棋子所在的位置覆盖,减少了后期图像预处理的过程,而且可以达到预期的提取效果。

步骤3,对融合后的二值图像进行膨胀运算,连接图像中相邻的元素,使提取到的每个棋子所在的区域成为单个的、互不相关的连通域;

步骤4,对膨胀后图像中的棋子进行轮廓提取,并绘制各自轮廓的外接圆,通过外接圆确定圆心的位置,即32个棋子在图像坐标系下的位置;

步骤5,将标定板放置于32个棋子上表面所在的平面,再通过OpenCV中的标定函数calibrateCamera计算Kinect的彩色相机的内外参(Hrgb,Rrgb,Trgb),再通过针孔相机模型中图像坐标系与世界坐标系的转换关系式,进一步计算棋子在世界坐标系下的位置,即棋子在空间中的位置;

步骤6,根据世界坐标系到彩色相机坐标系的转换关系,得出彩色相机坐标系下32个棋子的三维坐标,选取该坐标系下的其中一个棋子的坐标点A,做A点到彩色相机坐标系原点O的向量

步骤7,根据彩色相机坐标系和世界坐标系的旋转矩阵Rrgb,将向量

转换到世界坐标系下即已知选取点A的世界坐标,再根据向量可唯一求得该世界坐标系下Kinect彩色相机的位置1(X1,Y1,Z1),Z1即为相机到棋子上表面所在平面的垂直距离;

步骤8,将标定板放置于棋盘面所在的平面,采集该场景图像,对彩色相机进行二次标定(Hrgb,Rrgb,Trgb),然后选定标定板上任意一点B,根据相机针孔模型中世界坐标系和相机坐标系的转换关系式,将世界坐标系下的点B转换到相机坐标系下,并做B点到彩色相机坐标系原点O的向量

步骤9,根据二次标定后彩色相机坐标系和世界坐标系的旋转矩阵Rrgb,将向量转换到世界坐标系下即已知选取点B的世界坐标,再根据向量可唯一求得该世界坐标系下Kinect彩色相机的位置2(X2,Y2,Z2),即相机到棋盘表面所在平面的垂直距离为Z2;

步骤10,根据公式h=z2-z1,h即为象棋棋子的实际高度。

所述步骤1中,采集待确定位置象棋棋子的图像,先对采集的图像进行图像预处理,再根据象棋棋子上文字颜色的不同,按照HSV颜色模型中各分量的意义,确定棋子上红、绿文字的H、S、V范围,其步骤包括:

2.1、采用透视变换的方法,对采集的象棋棋子图像进行空间矫正,将图像矫正成正投影的形式;

2.2、对透视变换后的图像设置ROI;

2.3、再根据象棋棋子上文字颜色的不同,按照HSV颜色模型中各分量的意义,确定了棋子红、绿色文字的H、S、V各分量值为:红色H、S、V的取值范围分别为1-15、60-255,0-93,绿色H、S、V的取值范围分别0-95、0-255、0-93。

首先,对采集的图像进行空间矫正,采用透视变换的方法,仍能保持承影面上投影几何图形不变,使图像矫正成正投影的形式;其次,为了消除周围环境对棋子提取时的不必要干扰,减少后期图像处理的时间、增加棋子坐标的定位精度,因此对透视变换后的图像设置ROI。经过上述透视变换和设置ROI,将采集的源图像处理成只有棋子和棋盘的图像,为下一步棋子的分割和空间定位做好前期的准备。

因为HSV颜色模型有利于对指定的颜色进行分割,所以采用HSV模型对棋子进行分割。根据象棋棋子上文字颜色的不同,按照HSV颜色模型中各分量的意义,确定棋子上红、绿文字的H、S、V范围,分别对红、绿棋子进行分割,得到两幅二值图像。

通过上述步骤1-步骤10,准确的得到象棋棋子的实际。

本发明提出的三维空间中象棋棋子位置的确定方法,可有效的提高图像处理的速度,对噪声点处理的方法简化图像预处理的流程,提高了棋子位置确定的精度;三维空间中象棋棋子高度的确定方法,可适用于单个规则物体的高度测量,降低了算法复杂度和相机采购的开销,可以被广泛的应用;上述两种方法的结合,提高了机械手对棋子抓取得准确度。

附图说明

图1是本发明的流程图;

图2是透视变换图;

图3是ROI图;

图4是红色棋子提取图;

图5是绿色棋子提取图;

图6是线性融合图;

图7是膨胀运算图;

图8是棋子像素坐标图。

具体实施方式

下面结合附图和实施例对本发明的两个方法作进一步的详细描述。

其一,三维空间中象棋棋子位置的确定方法,包括以下步骤:

步骤1,采集待确定空间位置象棋棋子的图像,先对采集的图像进行图像预处理,首先,采用透视变换的方法,对采集的象棋棋子图像进行空间矫正,将图像矫正成正投影的形式,如图2;其次,对透视变换后的图像设置ROI,如图3;最后,根据象棋棋子上文字颜色的不同,按照HSV颜色模型中各分量的意义,经过对不同光照条件、不同环境的对比,确定了棋子红、绿色文字的H、S、V各分量值为:红色H、S、V的取值范围分别为1-15、60-255,0-93,绿色H、S、V的取值范围分别0-95、0-255、0-93。分别对红、绿棋子进行分割,得到两幅二值图像,如图4、5;

步骤2,将对红、绿棋子分别分割后的两幅二值图像进行线性融合,两幅二值图像在融合后,会将各自在提取中产生的噪声点进行相互掩盖,得到一副没有噪声点且包含红、绿棋子的二值图像,如图6;

步骤3,对融合后的二值图像进行膨胀运算,连接图像中相邻的元素,使提取到的每个棋子所在的区域成为单个的、互不相关的连通域。膨胀运算中,使用参考点位于中心10*10的核,如图7;

步骤4,对膨胀后图像中的棋子进行轮廓提取,并绘制各自轮廓的外接圆,通过外接圆确定圆心的位置,即32个棋子在图像坐标系下的位置,如图8;

步骤5,将标定板放置于32个棋子上表面所在的平面,再通过OpenCV中的标定函数calibrateCamera计算Kinect的彩色相机的内外参(Hrgb,Rrgb,Trgb),再通过针孔相机模型中图像坐标系与世界坐标系的转换关系式,进一步计算棋子在世界坐标系下的位置,即棋子在空间中的位置;

步骤6,将标定板放置于32个棋子上表面所在的平面,通过OpenCV中的标定函数calibrateCamera计算Kinect的深度相机的内外参(Hd,Rd,Td);

在红外摄像头采集的图像中,并不是每幅图都可以进行角点的提取,它会受到物体材质的影响,导致角点检测无效,所以需要采集较多的图像,才能使红外摄像头的标定更加准确,采集的图像数量在25张;

步骤7,根据世界坐标系下的点(Wp)与彩色相机坐标系下的点(Kp)的转换关系:Kp=Rrgb*Wp+Trgb,和世界坐标系下的点(Wp)与深度相机坐标系下的点(Kdp)的转换关系:Kdp=Rd*Wp+Td,计算出Kinect彩色相机坐标系和深度相机坐标系之间的关系,再根据深度相机标定后的内参,将深度相机坐标系下的空间点转换到深度像素坐标系下,实现了彩色相机坐标系下的空间点与深度图像坐标系下的深度像素点的匹配;根据上述匹配方法,将彩色相机坐标系下的棋子位置转换到深度图像坐标系下,算出深度坐标系下棋子的坐标;

彩色相机坐标系下的空间点与深度图像坐标系下的深度像素点的匹配方法如下:

世界坐标系下的点(Wp)与彩色坐标下的点(Kp)的转换关系为:Kp=Rrgb*Wp+Trgb①,世界坐标系下的点(Wp)与深度相机坐标系下的点(Kdp)的转换关系为:Kdp=Rd*Wp+Td②,由①式,得:

将③式带入②式,得:

在彩色相机坐标系下的点Kp和深度相机坐标系下的点Kdp满足:Kdp=R*Kp+T⑤,其中R、T是两个坐标之间的旋转矩阵和平移向量;

结合④⑤式,得:

再将⑥⑦式代入⑤,即可得彩色相机坐标系下的点与深度相机坐标系下的点的转换关系:

再将Kdp乘以深度相机的内参,便得到与彩色相机坐标系下空间点相对应的深度图像坐标系下的像素点,这样就实现了彩色相机坐标系下的空间点到深度图像坐标系下的深度像素点的匹配。

步骤8,根据Kinect采集的深度图中景深数据的存储方式,对得到的深度像素坐标系下的棋子坐标进行景深信息的提取,得到空间中棋子上表面的圆心到sensor所在平面的垂直距离d;

Kinect的深度信息存储在16bits的图中,前13bits为深度,后3bits为索引值,在图像中没有人出现时,可以直接提取16位,得到距离信息;

步骤9,根据步骤7中得到的棋子在深度相机坐标系下的坐标,将该坐标投影到深度相机坐标系的XOY平面上,算出投影点到该坐标系原点的距离d1,再结合步骤8中得到的距离d,根据勾股定理D2=d12+d2,算出空间中棋子上表面的圆心到sensor的实际距离D,即完成了对三维空间中象棋棋子位置的确定,通过步骤1-步骤9,得到棋子在空间中的位置和棋子距Kinect红外摄像机的准确距离D,如下表。

棋子到sensor的实际距离在红外摄像头采集的图像中,并不是每幅图都可以进行角点的提取,它会受到物体材质的影响,导致角点检测无效,所以需要采集较多的图像,才能使红外摄像头的标定更加准确,建议采集的图像数量在20-25张。其二,棋子高度的计算方法:

步骤1,采集待确定空间位置象棋棋子的图像,先对采集的图像进行图像预处理,首先,采用透视变换的方法,对采集的象棋棋子图像进行空间矫正,将图像矫正成正投影的形式,如图2;其次,对透视变换后的图像设置ROI,如图3;最后,根据象棋棋子上文字颜色的不同,按照HSV颜色模型中各分量的意义,经过对不同光照条件、不同环境的对此实验,确定了棋子红、绿色文字的H、S、V各分量值为:红色H、S、V的取值范围分别为1-15、60-255,0-93,绿色H、S、V的取值范围分别0-95、0-255、0-93。分别对红、绿棋子进行分割,得到两幅二值图像,如图4、5;

步骤2,将对红、绿棋子分别分割后的两幅二值图像进行线性融合,两幅二值图像在融合后,会将各自在提取中产生的噪声点进行相互掩盖,得到一副没有噪声点且包含红、绿棋子的二值图像,如图6;

步骤3,对融合后的二值图像进行膨胀运算,连接图像中相邻的元素,使提取到的每个棋子所在的区域成为单个的、互不相关的连通域。膨胀运算中,使用参考点位于中心10*10的核,如图7;

步骤4,对膨胀后图像中的棋子进行轮廓提取,并绘制各自轮廓的外接圆,通过外接圆确定圆心的位置,即32个棋子在图像坐标系下的位置,如图8;

步骤5,将标定板放置于32个棋子上表面所在的平面,再通过OpenCV中的标定函数calibrateCamera计算Kinect的彩色相机的内外参(Hrgb,Rrgb,Trgb),再通过针孔相机模型中图像坐标系与世界坐标系的转换关系式,进一步计算棋子在世界坐标系下的位置,即棋子在空间中的位置;

步骤6,根据世界坐标系到彩色相机坐标系的转换关系,得出彩色相机坐标系下32个棋子的三维坐标,选取该坐标系下的其中一个棋子的坐标点A(124,68,0),做A点到彩色相机坐标系原点O的向量

步骤7,根据彩色相机坐标系和世界坐标系的旋转矩阵Rrgb,将向量转换到世界坐标系下即已知选取点A的世界坐标,再根据向量可唯一求得该世界坐标系下Kinect彩色相机的位置1(-56,287,874),即相机到棋子上表面所在平面的垂直距离为874mm;

步骤8,将标定板放置于棋盘面所在的平面,采集该场景图像,对彩色相机进行二次标定(Hrgb,Rrgb,Trgb),然后选定标定板上任意一点B(0,0,0),根据相机针孔模型中世界坐标系和相机坐标系的转换关系式,将世界坐标系下的点B转换到相机坐标系下,并做B点到彩色相机坐标系原点O的向量

步骤9,根据二次标定后彩色相机坐标系和世界坐标系的旋转矩阵Rrgb,将向量转换到世界坐标系下即已知选取点B的世界坐标,再根据向量可唯一求得该世界坐标系下Kinect彩色相机的位置2(-87,209,886),即相机到棋盘表面所在平面的垂直距离为886mm;

步骤10,根据公式h=z2-z1,h即为象棋棋子的实际高度,计算的棋子的实际高度为12mm。

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