Skip to content

Issue with Global Radius-based Surface Descriptor (GRSD) #2140

@nenadpol

Description

@nenadpol

Hi,

I have been trying Global Radius-based Surface Descriptor (GRSD) and have
noticed something in grsd.hpp file.

This is code from line nr 84 to line nr 91.

// Compute RSD
pcl::PointCloud<pcl::PrincipalRadiiRSD>::Ptr radii (new pcl::PointCloud<pcl::PrincipalRadiiRSD>());
pcl::RSDEstimation<PointInT, PointNT, pcl::PrincipalRadiiRSD> rsd;
rsd.setInputCloud (cloud_downsampled);
rsd.setSearchSurface (input_);
rsd.setInputNormals (normals_);
rsd.setRadiusSearch (std::max (search_radius_, std::sqrt (3.0) * width_ / 2));
rsd.compute (*radii);

I do not understand line nr 90 (std::max (search_radius_, std::sqrt (3.0) *width_ / 2)) and computing of parameter RadiusSearch.

According to Line 103 in grsd.h setRadiusSearch (double radius) { width_ =search_radius_ = radius; }

search_radius_ and width_ are same values.

My question is what is been computed here : "std::max (search_radius_,std::sqrt (3.0) * width_ / 2)"

Second question/ observation is computing of RSD features in Line 91. If we
take a look at code from line 85 to 91 we kan se that one input parameter is
missing and that is planeRadius.

Since there is no input value, planeRadius gets default value 0.2 ( rsd.h
file line nr.149) and , as result of this , in most cases computed RSD
features have same min and max radius.

This should be corrected.

thanks
Nenad

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions