#读PCL源码#关键点检测

keypoint的类:

有这么多种keypoint

susan keypoint :需要intensity, normal
主要的方法和函数在susan.hpp
有openMP接口
 \brief SUSANKeypoint implements a RGB-D extension of the SUSAN detector inluding normal 
    * directions variation in top of intensity variation. 
    * It is different from Harris in that it exploits normals directly so it is faster.  
    * Original paper "SUSAN — A New Approach to Low Level Image Processing", Smith,
    * Stephen M. and Brady, J. Michael 

traijkovic keypoint 3d:需要normal(normal的求法是用的积分图,所以应该需要有序点云)
有openMP接口
** \brief TrajkovicKeypoint3D implements Trajkovic and Hedley corner detector on
    * point cloud using geometric information.
    * It uses first order statistics to find variation of normals.
    * This work is part of Nizar Sallem PhD thesis.

traijkovic keypoint 2d:需要intensity,也需要有序点云
** \brief TrajkovicKeypoint2D implements Trajkovic and Hedley corner detector on
    * organized pooint cloud using intensity information.
    * It uses first order statistics to find variation of intensities in horizontal
    * or vertical directions.
有openMP接口

iss-3d keypoint:
 \brief ISSKeypoint3D detects the Intrinsic Shape Signatures keypoints for a given
    * point cloud. This class is based on a particular implementation made by Federico
    * Tombari and Samuele Salti and it has been explicitly adapted to PCL.
    *
    * For more information about the original ISS detector, see:
    *
    *\par
    * Yu Zhong, “Intrinsic shape signatures: A shape descriptor for 3D object recognition,”
    * Computer Vision Workshops (ICCV Workshops), 2009 IEEE 12th International Conference on ,
    * vol., no., pp.689-696, Sept. 27 2009-Oct. 4 2009
有示例程序
pcl::ISSKeypoint3D<pcl::PointXYZRGBA, pcl::PointXYZRGBA> iss_detector;
需要XYZRGBA点云
* Code example:
    *
    * \code
    * pcl::PointCloud<pcl::PointXYZRGBA>::Ptr model (new pcl::PointCloud<pcl::PointXYZRGBA> ());;
    * pcl::PointCloud<pcl::PointXYZRGBA>::Ptr model_keypoints (new pcl::PointCloud<pcl::PointXYZRGBA> ());
    * pcl::search::KdTree<pcl::PointXYZRGBA>::Ptr tree (new pcl::search::KdTree<pcl::PointXYZRGBA> ());
    *
    * // Fill in the model cloud
    *
    * double model_resolution;
    *
    * // Compute model_resolution
    *
    * pcl::ISSKeypoint3D<pcl::PointXYZRGBA, pcl::PointXYZRGBA> iss_detector;
    *
    * iss_detector.setSearchMethod (tree);
    * iss_detector.setSalientRadius (6 * model_resolution);
    * iss_detector.setNonMaxRadius (4 * model_resolution);
    * iss_detector.setThreshold21 (0.975);
    * iss_detector.setThreshold32 (0.975);
    * iss_detector.setMinNeighbors (5);
    * iss_detector.setNumberOfThreads (4);
    * iss_detector.setInputCloud (model);
    * iss_detector.compute (*model_keypoints);
    * \endcode
有序和无序点云都行

agast keypoint: 
** \brief Abstract detector class for AGAST corner point detectors.
        *        
        * Adapted from the C++ implementation of Elmar Mair 
        * (http://www6.in.tum.de/Main/ResearchAgast).
PointUV 类型的点
还需要是有序点云

brisk_2d keypoint:
 /** \brief Detects BRISK interest points based on the original code and paper
    * reference by
    * 
    * \par
    * Stefan Leutenegger,Margarita Chli and Roland Siegwart, 
    * BRISK: Binary Robust Invariant Scalable Keypoints, 
    * in Proceedings of the IEEE International Conference on Computer Vision (ICCV2011).
    *
    * Code example:
    *
    * \code
    * pcl::PointCloud<pcl::PointXYZRGBA> cloud;
    * pcl::BriskKeypoint2D<pcl::PointXYZRGBA> brisk;
    * brisk.setThreshold (60);
    * brisk.setOctaves (4);
    * brisk.setInputCloud (cloud);
    *
    * PointCloud<pcl::PointWithScale> keypoints;
    * brisk.compute (keypoints);
    * \endcode
    *
还是需要XYZRGBA点云,还需要有序

Harris_2d keypoint: 
有序点云,但没有感觉到对点其他格式有要求

Harris_3d keypoint:
是否有序都OK 点云格式没有要求
只是需要先求法向量
除了harris的方法,还有lowe, nobel, curvature等方法
* \brief HarrisKeypoint3D uses the idea of 2D Harris keypoints, but instead of using image gradients, it uses
    * surface normals.
试验:




Harris_6d keypoint:
\brief Keypoint detector for detecting corners in 3D (XYZ), 2D (intensity) AND mixed versions of these.
    * \author Suat Gedikli
    * \ingroup keypoints
需要XYZI点云,有序和无序都可以
IntensityGradientEstimation

narf_keypoint:
* \brief @b NARF (Normal Aligned Radial Feature) keypoints. Input is a range image,
  *           output the indices of the keypoints
  * See B. Steder, R. B. Rusu, K. Konolige, and W. Burgard
  *     Point Feature Extraction on 3D Range Scans Taking into Account Object Boundaries
  *     In Proc. of the IEEE Int. Conf. on Robotics &Automation (ICRA). 2011. 
  * \author Bastian Steder
针对深度图 这个可以试验



sift_keypoint: 
* \brief @b SIFTKeypoint detects the Scale Invariant Feature Transform
    * keypoints for a given point cloud dataset containing points and intensity.
    * This implementation adapts the original algorithm from images to point
    * clouds. 
    *


smoothed_surfaces_keypoint:


流程都是:
initCompute   ----> detectKeypoints


pcl_example_get_keypoints_indices_release.exe
用的是harris检测
但是这个需要注意的是Harris3D输出的角点是包含I信息的
而且例程中没有setRadius的话,是很难得到keypoints的
整体来说,这个检测不是很好,也没觉得检测出来的是多么有关键的点

可能包含normals之后会更好




pcl_example_sift_keypoint_estimation_release.exe
XYZRGB点云







pcl_example_sift_normal_keypoint_estimation_release.exe
这个可以用XYZ的点云,利用估计的normal gradient,而不是intensity gradient
求取法向量真的很关键,而且需要各种调参



pcl_example_sift_z_keypoint_estimation_release.exe
/* This examples shows how to estimate the SIFT points based on the 
 * z gradient of the 3D points than using the Intensity gradient as
 * usually used for SIFT keypoint estimation.
 */

总体感觉sift特征点意义不可控



  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值