I am new to PCL and SIFT3D. When I use feature_demo.cpp to evaluate keypoints, I noticed that if the point cloud is XYZRGB, keypoints can be detected with certain parameters set properly. However, if the point cloud is XYZ without the RGB channels, I have not been able to get any keypoints no matter what parameters I tried. Data set I tried: milk_cartoon_all_small_clorox.pcd, which is XYZRGB data.If it is converted to XYZ, then keypoints can not be detected. Also the stanford bunny000.pcd, which is converted from bunny.ply, was tried. It has no RGB, so there is no keypoint detected.I guess I have missed something due to my little knowledge in the field.
Can someone shed some light?
Thanks
James
code snippet:
int keypoints_demo (const char * filename)
{
// Create some new point clouds to hold our data
pcl::PointCloud<pcl::PointXYZRGB>::Ptr points (new pcl::PointCloud<pcl::PointXYZRGB>);
pcl::PointCloud<pcl::PointWithScale>::Ptr keypoints (new pcl::PointCloud<pcl::PointWithScale>);
// Load a point cloud
pcl::io::loadPCDFile (filename, *points);
// Compute keypoints
const float min_scale = 0.01;
const int nr_octaves = 3;
const int nr_octaves_per_scale = 3;
const float min_contrast = 10.0;
detect_keypoints (points, min_scale, nr_octaves, nr_octaves_per_scale, min_contrast, keypoints);
// Visualize the point cloud and its keypoints
visualize_keypoints (points, keypoints);
return (0);
}