PCL 1.6'da (Android'i kullanıyorum) ICP'yi yapılandırmada sorun yaşıyorum ve bunun yanlış bir dönüşüm matrisinin nedeni olduğuna inanıyorum. Şimdiye kadar denediğim şey bu; Ben seçeneklerdeki değerlerden her türlü denedimYinelemeli En Yakın Nokta Yapılandır PCL
pcl::IterativeClosestPoint<pcl::PointXYZ, pcl::PointXYZ> icp;
icp.setInputCloud(tgt);
icp.setInputTarget(src);
pcl::PointCloud<pcl::PointXYZ> Final;
pcl::PointCloud<pcl::PointXYZ> transformedCloud;
icp.setMaxCorrespondenceDistance(0.08);
icp.setMaximumIterations(500);
//icp.setTransformationEpsilon (0.000000000000000000001);
icp.setTransformationEpsilon(1e-12);
icp.setEuclideanFitnessEpsilon(1e-12);
icp.setRANSACIterations(2000);
icp.setRANSACOutlierRejectionThreshold(0.6);
:
pcl::VoxelGrid <pcl::PointXYZ> grid;
grid.setLeafSize(6, 6, 6);
grid.setInputCloud(output);
grid.filter(*tgt);
grid.setInputCloud(cloud_src);
grid.filter(*src);
deneyin aşağıdaki kodla iki nokta bulutları hizalamak için: Aşağıdaki kod ile ICP kullandığımız nokta bulutları Altörnekle ICP'nin bir başarısı yoktur.
ben nokta bulutu oluşturmak için kullandığınız kod:
int density = 1;
for (int y = 0; y < depthFrame.getHeight(); y = y + density) {
for (int x = 0; x < depthFrame.getWidth(); x = x + density) {
short z = pDepthRow[y * depthVideoMode.getResolutionX() + x];
if (z > 0 && z < depthStream.getMaxPixelValue()) {
cloud_src->points[counter].x = x;
cloud_src->points[counter].y = y;
cloud_src->points[counter].z = z;
}
}
}
şansın birileri ICP yapılandırılması bana yardım edebilir?
Yapraklar için oldukça büyük bir değer kullandığımı biliyorum ancak 1'in altında bir değer kullandığımda bulutlar örneklenmiyor. Ayrıca gereksiz tüm kodları kesmeye çalıştım ve önerileriniz gibi temel bilgileri kullanın ama maalesef bu işe yaramadı. Başka önerileriniz memnuniyetle karşılanıyor! :) – Ronald