1.一种基于RGB-D摄像头的视觉识别与定位方法,其特征在于:所述方法包括以下步骤:
1)通过Kinect摄像头传感器对物体进行彩色图像和深度图像的采集后转化为三维点云图像;
2)对步骤1)获得的三维点云图像的每一个点进行相应的法向量计算;
3)对步骤2)获得的法向量集合,运用区域生长算法对物体所放置的背景平面进行提取;
4)将步骤3)中提取出的背景平面的点去除,并对剩下的点云进行物体点云集合提取和凸包提取处理;
5)将步骤4)中提取的各物体点云集合与对应的凸包相结合,进行二次区域生长,实现各物体完整轮廓的分割及完整点集的提取;
6)根据步骤5)中获得的各物体的完整轮廓,提取相应的彩色图像并分别进行特征提取和匹配识别;
7)将步骤5)获得的各物体的完整轮廓内的点云集合进行求均值运算,获得各物体在相机坐标系中的位置信息;
8)将步骤7)得到的各物体在相机坐标系中的位置信息,进行坐标系变换,转换到世界坐标系当中,实现各物体的定位;
步骤5)中,所述物体完整轮廓的分割及完整点集的提取包括以下步骤:
a)输入三维点云、平面点集合和平面凸包范围内的点;
b)顺序扫描平面凸包范围内的点,寻找属于凸包范围内但不属于平面的点;
c)步骤b)中找到的凸包范围内的非平面点后,继续寻找该非平面点附近所有在凸包内的非平面点,并且加入到潜在物体点集中;
d)若步骤c)中的潜在物体点集中点的数目小于设定的阈值,则回到步骤b)继续扫描剩下的平面凸包点;
e)若步骤c)中的潜在物体点集中点的数目大于等于设定的阈值,则认为该潜在物体点集为一个物体点集合;
f)继续在步骤e)中的潜在物体点集附近寻找凸包边界上的点加入到潜在物体点集中,即把在凸包外的物体点也寻找出来并且加入潜在物体点集中;
g)把步骤f)中得到的潜在物体点集加入到物体集合中;
h)若仍存在点云中的点未被扫描,则回到步骤b)继续寻找新的物体点集;
i)若点云中的全部点已经扫描完毕,则算法结束获得物体集合。
2.根据权利要求1所述的一种基于RGB-D摄像头的视觉识别与定位方法,其特征在于:步骤2)中,计算法向量的方法为:
设Pk为想要求得表面法向量的点,首先找到点Pk在图像中上下左右附近四个点P1、P2、P3和P4,P1和P3组成向量ν1,P2和P4组成向量ν2,则点Pk的表面法向量νp可以通过ν2叉乘ν1得到,具体如下:
νp=ν2×ν1
三维点云图像的每一个点的法向量均通过如上公式计算得到。
3.根据权利要求1所述的一种基于RGB-D摄像头的视觉识别与定位方法,其特征在于:步骤3)中,先顺序扫描三维点云图像的每一个点的法向量,遇到竖直的法向量则继续寻找该点附近且法向量为竖直的点,加入到潜在平面点集中,若潜在平面点集中点的数目大于设定的阈值,则认为该潜在平面点集为一个平面点集合并且把潜在平面点集加入到平面集合中,否则继续扫描剩下的法向量,直到扫描结束后,即可获得平面集合,实现平面的提取。
4.根据权利要求1所述的一种基于RGB-D摄像头的视觉识别与定位方法,其特征在于:步骤6)具体为:
首先,通过物体的三维点云集合获得物体在彩色图像中对应的区域,把物体所在的图像区域截取下来后使用Open CV的Feature Detector::detect()函数获得surf特征点;
其次,进一步使用Open CV的Feature2D::compute()函数获得surf特征向量,物体的surf特征向量作为该物体的识别特征加入到识别库中,或者直接作为该物体识别匹配的特征向量,在实现物体的surf特征向量和库中相应的surf特征向量进行匹配时,使用最近邻开源库FLANN进行特征向量的匹配;
最后,使用最近邻开源库FLANN进行特征向量的匹配,具体就是使用Open CV的Descriptor Matcher::match()函数实现。