一种基于RGB-D摄像头的视觉识别与定位方法与流程

文档序号:17955769发布日期:2019-06-19 00:26阅读:977来源:国知局
一种基于RGB-D摄像头的视觉识别与定位方法与流程

本发明涉及机器视觉的识别与定位领域,尤其是一种基于RGB-D摄像头的视觉识别与定位方法。



背景技术:

目前,现有的基于多目彩色图像相机的物体识别与定位系统,大多是通过立体匹配不同传感器采集的图像,获取每一个像素点在空间中的位置,存着在成本较大、运行速度缓慢、系统复杂等问题。

物体边缘分割大多是基于彩色摄像机的图像进行凸包提取的方法实现,该处理方法需要考虑物体外表色彩,在碰到背景颜色与物体相似的情况时容易产生误判,而凸包提取的方法也存在物体凸包轮廓错误及包含背景部分的问题。

相对于现有的基于多目彩色图像相机进行物体识别与定位的方法,使用RGB-D传感器进行物体识别和定位的方法具有很多优势:

首先,计算量小、运算速度快、实时性强、物体定位成本低,微软公司推出的RGB-D传感器Kinect II降低了三维扫描的成本,直接向用户提供分辨率较高的彩色图像、深度图像及点云图像,仅通过一个RGB-D传感器,便可以直接获得每一个像素点在相机坐标系中的位置,无须通过立体匹配多目系统中不同传感器采集的图像来获取每一个像素点在空间中的位置;

其次,精确度与鲁棒性有所提高,基于RGB-D摄像头提供的深度图像及点云图像,可直接进行平面提取和物体的分割及定位,有效避免了物体本身外表和背景颜色的影响,可以减少误判情况的发生,提高系统的准确性和稳定性。



技术实现要素:

本发明的目的是针对上述现有技术的不足,提供了一种基于RGB-D摄像头的视觉识别与定位方法,该方法计算量小、实时性强,并且能够适应日常生活场景。

本发明的目的可以通过如下技术方案实现:

一种基于RGB-D摄像头的视觉识别与定位方法,所述方法包括以下步骤:

1)通过Kinect摄像头传感器对物体进行彩色图像和深度图像的采集后转化为三维点云图像;

2)对步骤1)获得的三维点云图像的每一个点进行相应的法向量计算;

3)对步骤2)获得的法向量集合,运用区域生长算法对物体所放置的背景平面进行提取;

4)将步骤3)中提取出的背景平面的点去除,并对剩下的点云进行物体点云集合提取和凸包提取处理;

5)将步骤4)中提取的各物体点云集合与对应的凸包相结合,进行二次区域生长,实现各物体完整轮廓的分割及完整点集的提取;

6)根据步骤5)中获得的各物体的完整轮廓,提取相应的彩色图像并分别进行特征提取和匹配识别;

7)将步骤5)获得的各物体的完整轮廓内的点云集合进行求均值运算,获得各物体在相机坐标系中的位置信息;

8)将步骤7)得到的各物体在相机坐标系中的位置信息,进行坐标系变换,转换到世界坐标系当中,实现各物体的定位。

优选地,步骤2)中,计算法向量的方法为:

设Pk为想要求得表面法向量的点,首先找到点Pk在图像中上下左右附近四个点P1、P2、P3和P4,P1和P3组成向量ν1,P2和P4组成向量ν2,则点Pk的表面法向量νp可以通过ν2叉乘ν1得到,具体如下:

νp=ν2×ν1

三维点云图像的每一个点的法向量均通过如上公式计算得到。

优选的,步骤3)中,先顺序扫描三维点云图像的每一个点的法向量,遇到竖直的法向量则继续寻找该点附近且法向量为竖直的点,加入到潜在平面点集中,若潜在平面点集中点的数目大于设定的阈值,则认为该潜在平面点集为一个平面点集合并且把潜在平面点集加入到平面集合中,否则继续扫描剩下的法向量,直到扫描结束后,即可获得平面集合,实现平面的提取。

优选的,步骤5)中,物体完整轮廓的分割及完整点集的提取方法包括以下步骤:

a)输入三维点云、平面点集合和平面凸包范围内的点;

b)顺序扫描平面凸包范围内的点,寻找属于凸包范围内但不属于平面的点;

c)步骤b)中找到的凸包范围内的非平面点后,继续寻找该非平面点附近所有在凸包内的非平面点,并且加入到潜在物体点集中;

d)若步骤c)中的潜在物体点集中点的数目小于设定的阈值,则回到步骤b)继续扫描剩下的平面凸包点;

e)若步骤c)中的潜在物体点集中点的数目大于等于设定的阈值,则认为该潜在物体点集为一个物体点集合;

f)继续在步骤e)中的潜在物体点集附近寻找凸包边界上的点加入到潜在物体点集中,即把在凸包外的物体点也寻找出来并且加入潜在物体点集中;

g)把步骤f)中得到的潜在物体点集加入到物体集合中;

h)若仍存在点云中的点未被扫描,则回到步骤b)继续寻找新的物体点集;

i)若点云中的全部点已经扫描完毕,则算法结束获得物体集合。

优选地,步骤6)具体为:

首先,通过物体的三维点云集合获得物体在彩色图像中对应的区域,把物体所在的图像区域截取下来后使用Open CV的Feature Detector::detect()函数获得surf特征点;

其次,进一步使用Open CV的Feature2D::compute()函数获得surf特征向量,物体的surf特征向量作为该物体的识别特征加入到识别库中,或者直接作为该物体识别匹配的特征向量,在实现物体的surf特征向量和库中相应的surf特征向量进行匹配时,使用最近邻开源库FLANN进行特征向量的匹配;

最后,使用最近邻开源库FLANN进行特征向量的匹配,具体就是使用Open CV的Descriptor Matcher::match()函数实现。

本发明与现有技术相比,具有如下优点和有益效果:

1、本发明采用RGB-D传感器,相比于现有的基于多目彩色图像相机的物体识别与定位系统,没有涉及到物体定位时多幅图像间匹配等复杂运算,拥有计算量小、计算效率高、运算速度快、实时性强、物体定位成本低、精确度高、鲁棒性强等优势,可实现准确快速稳定的物体识别与定位;

2、本发明运用区域生长算法,在三维点云中进行背景平面提取,拥有计算量小,准确分割等特点,能够实现背景平面的快速分离与提取,提高了物体的精准提取、定位与识别的可能性;

3、本发明将各物体的点云集合与对应的凸包相结合,运用二次区域生长算法,剔除物体凸包内属于背景部分的点,增加凸包外属于物体部分的点,实现了物体轮廓的完整提取,提高了物体定位的精确度。

附图说明

图1为本发明方法的流程图。

图2为本发明表面的法向量叉乘示意图。

图3为本发明平面区域生长算法流程图。

图4为本发明物体完整轮廓的分割及完整点集的提取流程图。

图5(a)为Kinect相机坐标系示意图,图5(b)为实际的世界坐标系示意图。

具体实施方式

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

实施例:

本实施例提供了一种基于RGB-D摄像头的视觉识别与定位方法,如图1所示,主要由三维点云的采集、平面提取、物体的分割、物体的特征提取和匹配、物体的定位组成,所述方法具体包括以下步骤:

步骤一、通过Kinect摄像头传感器对物体进行彩色图像和深度图像的采集后转化为三维点云图像;

本步骤中,Kinect传感器可以采集RGB-d图像,通过自带的API函数或者开放自然交互(Open Natural Interaction,Open NI)、点云库(Point Cloud Library,PCL)等第三方函数库,即可获得三维点云图像。

步骤二、对步骤一获得的三维点云图像的每一个点进行相应的法向量计算;

如图2所示,为本发明表面的法向量叉乘示意图,Pk为想要求得表面法向量的点,首先找到点Pk在图像中上下左右附近四个点P1、P2、P3和P4,P1和P3组成向量ν1,P2和P4组成向量ν2,则点Pk的表面法向量νp可以通过ν2叉乘ν1得到,具体如下:

νp=ν2×ν1

三维点云图像的每一个点的法向量可通过如上公式计算得到。

步骤三、对步骤二获得的法向量集合,运用区域生长算法对物体所放置的背景平面进行提取;

本步骤中,如图3所示,先顺序扫描三维点云图像的每一个点的法向量,遇到竖直的法向量则继续寻找该点附近且法向量为竖直的点,加入到潜在平面点集S中,若潜在平面点集S中点的数目Ns大于设定的阈值N,则认为该潜在平面点集S为一个平面点集合并且把潜在平面点集S加入到平面集合C中,否则继续扫描剩下的法向量,直到扫描结束后,即可获得平面集合C,实现平面的提取。

步骤四、将步骤三中提取出的背景平面的点去除,并对剩下的点云进行物体点云集合提取和凸包提取处理;

步骤五、将步骤四中中提取的各物体点云集合与对应的凸包相结合,进行二次区域生长,实现各物体完整轮廓的分割及完整点集的提取;

图4所示,为物体完整轮廓的分割及完整点集的提取流程图,从步骤三获取到的平面集合进行凸包运算后,所得到的平面凸包中既包含了平面点集合,同时还包含了物体点集合。为了实现物体轮廓的完整提取,提高物体定位的精确度,本发明将各物体的点云集合与对应的凸包相结合,运用二次区域生长算法,剔除物体凸包内属于背景部分的点,增加凸包外属于物体部分的点,该物体完整轮廓的分割及完整点集的提取方法包括以下步骤:

a)输入三维点云、平面点集合和平面凸包范围内的点;

b)顺序扫描平面凸包范围内的点,寻找属于凸包范围内但不属于平面的点;

c)步骤b)中找到的凸包范围内的非平面点后,继续寻找该非平面点附近所有在凸包内的非平面点,并且加入到潜在物体点集S'中;

d)若步骤c)中的潜在物体点集S'中点的数目Ns小于设定的阈值N,则回到步骤b)继续扫描剩下的平面凸包点;

e)若步骤c)中的潜在物体点集S'中点的数目Ns大于等于设定的阈值N,则认为该潜在物体点集S'为一个物体点集合;

f)继续在步骤e)中的潜在物体点集S'附近寻找凸包边界上的点加入到潜在物体点集S'中,即把在凸包外的物体点也寻找出来并且加入潜在物体点集S'中;

g)把步骤f)中得到的潜在物体点集S'加入到物体集合C'中;

h)若仍存在点云中的点未被扫描,则回到步骤b)继续寻找新的物体点集;

i)若点云中的全部点已经扫描完毕,则算法结束获得物体集合C'。

步骤六、根据步骤五中获得的各物体的完整轮廓,提取相应的彩色图像并分别进行特征提取和匹配识别;

本步骤中,首先,通过物体的三维点云集合可以获得物体在彩色图像中对应的区域,把物体所在的图像区域截取下来后使用Open CV的Feature Detector::detect()函数获得surf特征点,进一步使用Open CV的Feature2D::compute()函数获得surf特征向量,物体的surf特征向量可以作为该物体的识别特征加入到识别库中,或者直接作为该物体识别匹配的特征向量,在实现物体的surf特征向量和库中相应的surf特征向量进行匹配时,使用最近邻开源库FLANN进行特征向量的匹配,最后,使用最近邻开源库FLANN进行特征向量的匹配,具体就是使用Open CV的Descriptor Matcher::match()函数实现。

步骤七、将步骤五获得的各物体的完整轮廓内的点云集合进行求均值运算,获得各物体在相机坐标系中的位置信息;

步骤八、将步骤七得到的各物体在相机坐标系中的位置信息,进行坐标系变换,转换到世界坐标系当中,实现各物体的定位。

如图5(a)和图5(b)分别为Kinect相机坐标系示意图和实际的世界坐标系示意图,两个坐标系均为右手坐标系,要实现物体在世界坐标系中的定位,需要对相机进行标定,相机坐标系与世界坐标系之间存在以下关系:

其中,XC、YC、Zc表示物体在摄像头坐标系中的位置分量,XW、YW、ZW表示物体在世界坐标系中的位置分量,和分别是相机的旋转矩阵和偏移矩阵,均为相机的外参数。

在坐标系转换过程中需要通过旋转矩阵和偏移矩阵来计算物体的世界坐标系,而这两个矩阵是通过相机的标定获得,在进行相机标定的时候使用到了matlab相机标定工具箱(Camera Calibration Toolbox for Matlab),通过棋盘法对Kinect进行标定。由于Kinect默认的相机坐标系设置在红外摄像头处,如图5所示,并且Kinect采集的图片是镜像图片,因此在进行相机标定时要使用Kinect的红外摄像头采集红外图像,并且要把采集到的图片逐一进行左右镜像翻转处理后才输入到工具箱中进行标定。在标定时,先让相机围绕棋盘在不同角度和不同距离采集二十张以上图片进行相机的内参数计算,最后将棋盘固定在目标位置采集一幅图像进行相机外参数的计算。

将标定后获得的外参数矩阵和计算得到的物体在相机坐标系中的坐标进行以下运算:

即可获得物体在世界坐标系中的空间坐标信息。

以上所述,仅为本发明专利较佳的实施例,但本发明专利的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明专利所公开的范围内,根据本发明专利的技术方案及其发明专利构思加以等同替换或改变,都属于本发明专利的保护范围。

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