Ejemplo n.º 1
0
        public unsafe void PlanarSegmentationTutorialTest()
        {
            using (var cloud = new PointCloudOfXYZ())
            {
                cloud.Width  = 15;
                cloud.Height = 1;
                cloud.Points.Resize(cloud.Width * cloud.Height);

                for (var i = 0; i < cloud.Points.Count; i++)
                {
                    (cloud.Data + i)->X = 1024 * rand();
                    (cloud.Data + i)->Y = 1024 * rand();
                    (cloud.Data + i)->Z = 1;
                }

                //set a few outliers
                (cloud.Data + 0)->Z = 2f;
                (cloud.Data + 3)->Z = -2f;
                (cloud.Data + 6)->Z = 4f;

                using (var seg = new SACSegmentationOfXYZ())
                    using (var inliers = new PointIndices())
                        using (var coefficients = new ModelCoefficients())
                        {
                            seg.OptimizeCoefficients = true;
                            seg.ModelType            = SACModel.Plane;
                            seg.MethodType           = SACMethod.RANSAC;
                            seg.DistanceThreshold    = 0.01;

                            seg.SetInputCloud(cloud);
                            seg.Segment(inliers, coefficients);

                            if (inliers.Indices.Count == 0)
                            {
                                Assert.Fail("Could not estimate a planar model for the given dataset");
                            }

                            Assert.AreEqual(4, coefficients.Values.Count);
                            Assert.AreEqual(0, coefficients.Values[0]);
                            Assert.AreEqual(0, coefficients.Values[1]);
                            Assert.AreEqual(1, coefficients.Values[2]);
                            Assert.AreEqual(-1, coefficients.Values[3]);

                            Console.WriteLine($"Model inliers: {inliers.Indices.Count}");
                        }
            }
        }
 public override void Segment(PointIndices inliers, ModelCoefficients coefficients)
 {
     Invoke.segmentation_sacsegmentation_xyz_segment(_ptr, inliers, coefficients);
 }
Ejemplo n.º 3
0
 public abstract void Segment(PointIndices inliers, ModelCoefficients coefficients);