zoukankan      html  css  js  c++  java
  • 3D点云目标识别和抓取

    这是2016年一个点云目标识别研究的简单描述。

    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

  • 相关阅读:
    Java注解详解
    浅析@Deprecated
    BeanUtils使用概要
    使用内省方式操作JavaBean
    怎样通过ajax提交数据
    Java 反射学习笔记
    jackson 学习笔记
    Dom4j 学习笔记
    Tensorflow打造聊天机器人
    Hive官方文档
  • 原文地址:https://www.cnblogs.com/BellaVita/p/9979185.html
Copyright © 2011-2022 走看看