1、点云目标识别流程
点云目标识别,顾名思义,需要有标准的目标点云或者标准的点云特征描述向量;对实时采集的点云数据,在里面寻找与目标点云相似度最高的点云块。
2、圆环工件的识别和抓取
图2.1 点云在XY平面的投影图像
图2.2 圆环点云采集图像
2.1滤波
常用点云滤波有带通滤波、统计滤波、半径滤波、去除背景平面、去除边缘。
带通滤波:就是设置一个x、y、z方向的一个取值范围,以过滤掉明显不在测试距离范围的点云;比如在kinect数据采集中,由于其成像范围Z轴方向比较大,因此会出现很多明显我们不需要的背景噪声信息,这是可以设置一个合理的Z坐标阈值;
半径滤波:就是搜寻给定半径R内的相邻点云个数,当个数少于给定阈值时,去除点云;主要用在去除孤立点;
统计滤波:对每个点,计算最近邻K个点云距离的均值;假设最近邻距离均值符合高斯分布,则剔除距离在一个sigma外的点云;主要用于去除不合群离散点。
去除背景平面:对放在平面上的物体,背景通常会有一个较大的平面;采用Ransac拟合平面,剔除平面。
图2.3 统计滤波阈值选取方式
图2.4 圆环滤波后
2.2降采样
三维点云数据一般数据量都很大,为了提高程序的速度,可以对滤波后的数据进行降采样;降采样的原则是保证点云的整体分布情况,又不能破坏边缘信息(类似于图像处理的边缘保留Edge-preserving)。均匀降采样使用体素格的重心来表示给定半径范围内点的整体信息,来实现降采样和滤波的目的。
图2.5 体素格降采样
图2.6 单一圆环体素格降采样(蓝色是原始点云数据,红色是降采样数据)
2.3 点云分割
通过滤波后,点云被分成了很多基本不相邻的块,可以采用聚类的方法来进行分割(类似于二维图像的连通域标记)。
图2.7 点云分割
2.4 特征向量计算和匹配
当数据量不大的时候,可以直接计算降采样数据的特征向量;数据量很大时,最好先计算特征点(满足旋转、平移、尺度、仿射不变性),然后计算特征点处的特征向量。
类似于二维图像,3d点云也可以计算每个点的特征,常用的特征描述子有SHOT(signature histogram of orientation)、FPFH(Fast Point of Histogram)等;
匹配找到对应特征点对后,存在很多误匹配特征点对,需要采用Ransac对点对进行提纯,找到内点Inliners,采用ICP方法计算点对之间的旋转变换关系;
图2.8 识别的圆环(蓝色点是原始的圆环数据,红色的是识别后经过旋转、平移变化的圆环)
视频信息已经上传Youtube,附网址:
机器人抓取视频 https://www.youtube.com/watch?v=9UaWKWEigXo&feature=youtu.be
原文地址:https://www.cnblogs.com/BellaVita/p/9979185.html