2

J'ai besoin d'aide pour appliquer un noyau gaussien sur mon nuage de points afin de lisser le nuage.Exemple PCL gaussien Kernal

Je ne pouvais pas comprendre comment je devrais écrire le code et je ne pouvais pas trouver d'exemples simples.

Mise à jour:

J'utilise Bibliothèque Point de Cloud (de pcl):

pcl::io::loadPCDFile ("/home/..../2240.pcd", *raw_cloud); 
Eigen::VectorXf horizontal; 
//Set up the Gaussian Kernel 
pcl::GaussianKernel<pcl::PointXYZRGB> gaussianKernel; 
gaussianKernel.compute(5,horizontal,40); 

pcl::filters::Convolution<pcl::PointXYZRGB> conv; 
conv.setInputCloud(raw_cloud); 
conv.setKernel(horizontal); 

Ceci est le code, il est complet et je ne suis pas sûr si l'approche est juste?

quelqu'un a une idée à ce sujet?

+0

Vous devez fournir le code que vous avez essayé et expliquer pourquoi il est qu'il ne fait pas ce dont vous avez besoin, y compris en fournissant des exemples d'entrées et de sorties. Reportez-vous à http://www.stackoverflow.com/help/mcve –

Répondre

1

J'ai trouvé la bonne façon de faire une Lissage gaussienne via PCL:

pcl::PointCloud<pcl::PointXYZRGB>::Ptr inputCloud,cloud; 
pcl::filters::Convolution<pcl::PointXYZRGB, pcl::PointXYZRGB> convolution; 
Eigen::ArrayXf gaussian_kernel(5); 
gaussian_kernel << 1.f/16, 1.f/4, 3.f/8, 1.f/4, 1.f/16; 
convolution.setBordersPolicy(
       pcl::filters::Convolution<pcl::PointXYZRGB, pcl::PointXYZRGB>::BORDERS_POLICY_IGNORE); 
convolution.setDistanceThreshold (static_cast<float> (0.1)); 
convolution.setInputCloud (inputCloud); 
convolution.setKernel (gaussian_kernel); 
convolution.convolve(*cloud); 

L'espoir que cela aiderait tout le monde dans son travail :)