PCL implicit shape model 做目标识别分类

//训练过程很漫长


/*
    介绍implict shape model算法来识别物体,算法组合了通用霍夫变换和Bag of feature方法。
    使用一个训练集来训练一个模型,然后用这个模型来匹配场景中出现的目标
关于训练:6步
    1.使用vexel grid方法,来提取关键点
    2.关键点特征估计,使用FPFH算法
    3.使用k-means方法来得到一个visual words 词典
    4.计算每个样本的相对于中心的方向
    5.计算visual word 的统计权重
    6.对每个关键点计算习得权重

关于识别:5步
    1.计算关键点
    2.特征估计
    3.计算最相近的visual word
    4.对每个特征 计算训练模型的特征的相似度
    5.给定参数计算匹配的目标 
*/

#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/features/normal_3d.h>
#include <pcl/features/feature.h>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/features/fpfh.h>
#include <pcl/features/impl/fpfh.hpp>
#include <pcl/recognition/implicit_shape_model.h>
#include <pcl/recognition/impl/implicit_shape_model.hpp>

int
main(int argc, char** argv)
{
   
    if (argc == 0 || argc % 2 == 0)
        return (-1);

    unsigned int number_of_training_clouds = (argc - 3) / 2;

    pcl::NormalEstimation<pcl::PointXYZ, pcl::Normal> normal_estimator;  //法向量
    normal_estimator.setRadiusSearch(25.0);

    std::vector<pcl::PointCloud<pcl::PointXYZ>::Ptr> training_clouds;
    std::vector<pcl::PointCloud<pcl::Normal>::Ptr> training_normals;
    std::vector<unsigned int> training_classes;

    for (unsigned int i_cloud = 0; i_cloud < number_of_training_clouds - 1; i_cloud++)
    {
   
        pcl::PointCloud<pcl::PointXYZ>::Ptr tr_cloud      (new pcl::PointCloud<pcl
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值