2013-02-14 9 views
0

Я вычисление нормалей поверхности для организованного облака точек следующим образом:Нормальных оценки поле кривизны возвращается NAN

pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud = create_point_cloud_ptr(cap_depth, cap_rgb); 

// estimate normals 
pcl::PointCloud<pcl::Normal>::Ptr normals (new pcl::PointCloud<pcl::Normal>); 

pcl::IntegralImageNormalEstimation<pcl::PointXYZRGB, pcl::Normal> ne; 
ne.setNormalEstimationMethod (ne.AVERAGE_3D_GRADIENT); 
ne.setMaxDepthChangeFactor(15); 
ne.setNormalSmoothingSize(10.0f); 
ne.setInputCloud(cloud); 
ne.compute(*normals); 

Когда я перебирать нормали, поле кривизны устанавливается в NAN для всех точек. Я что-то делаю неправильно в расчете?

ответ

1

Оказывается, метод AVERAGE_3D_GRADIENT не вычисляет кривизну поверхности, необходимо использовать ne.COVARIANCE_MATRIX