/// <summary> /// Features from Accelerated Segment Test (FAST) corners detector. /// <para>Accord.NET internal call. Please see: <see cref="Accord.Imaging.FastCornersDetector"/> for details.</para> /// </summary> /// <param name="im">Image.</param> /// <param name="threshold">The suppression threshold. Decreasing this value increases the number of points detected by the algorithm.</param> /// <returns>Interest point locations.</returns> public static List<IntPoint> CornerFeaturesDetector(this Image<Gray, byte> im, int threshold = 20) { FastCornersDetector fast = new FastCornersDetector(threshold); var points = fast.ProcessImage(im.ToAForgeImage(copyAlways: false, failIfCannotCast: true)); return points; }
public List <Rg.Point3d> GetFastCorners() { Ai.FastCornersDetector corners = new Ai.FastCornersDetector(); if (Threshold >= 0) { corners.Threshold = Threshold; } return(corners.ProcessImage(bitmap).ToRhinoPoints(bitmap.Height)); }
/// <summary> /// Features from Accelerated Segment Test (FAST) corners detector. /// <para>Accord.NET internal call. Please see: <see cref="Accord.Imaging.FastCornersDetector"/> for details.</para> /// </summary> /// <param name="im">Image.</param> /// <param name="threshold">The suppression threshold. Decreasing this value increases the number of points detected by the algorithm.</param> /// <returns>Interest point locations.</returns> public static List<Point> CornerFeaturesDetector(this Gray<byte>[,] im, int threshold = 20) { FastCornersDetector fast = new FastCornersDetector(threshold); List<Point> points; using (var uImg = im.Lock()) { points = fast.ProcessImage(uImg.AsAForgeImage()) .Select(x => x.ToPoint()) .ToList(); } return points; }
public void ProcessImageTest2() { UnmanagedImage image = UnmanagedImage.FromManagedImage(Accord.Imaging.Image.Clone(Properties.Resources.lena512)); FastCornersDetector target = new FastCornersDetector(); target.Suppress = true; target.Threshold = 40; List<IntPoint> actual = target.ProcessImage(image); Assert.AreEqual(324, actual.Count); Assert.AreEqual(506, actual[0].X); Assert.AreEqual(4, actual[0].Y); Assert.AreEqual(152, actual[6].X); Assert.AreEqual(75, actual[6].Y); Assert.AreEqual(416, actual[11].X); Assert.AreEqual(115, actual[11].Y); Assert.AreEqual(140, actual[65].X); Assert.AreEqual(246, actual[65].Y); Assert.AreEqual(133, actual[73].X); Assert.AreEqual(253, actual[73].Y); }
public void ProcessImageTest() { UnmanagedImage image = UnmanagedImage.FromManagedImage(Accord.Imaging.Image.Clone(Properties.Resources.sample_black)); FastCornersDetector target = new FastCornersDetector(); target.Suppress = false; target.Threshold = 20; List<IntPoint> actual = target.ProcessImage(image); Assert.AreEqual(237, actual.Count); Assert.AreEqual(404, actual[0].X); Assert.AreEqual(35, actual[0].Y); Assert.AreEqual(407, actual[6].X); Assert.AreEqual(36, actual[6].Y); Assert.AreEqual(407, actual[11].X); Assert.AreEqual(38, actual[11].Y); Assert.AreEqual(55, actual[65].X); Assert.AreEqual(135, actual[65].Y); Assert.AreEqual(103, actual[73].X); Assert.AreEqual(137, actual[73].Y); }
public void ProcessImageTest() { UnmanagedImage image = UnmanagedImage.FromManagedImage(Properties.Resources.sample_black); FastCornersDetector target = new FastCornersDetector(); target.Suppress = false; target.Threshold = 20; List<IntPoint> actual = target.ProcessImage(image); /* PointsMarker marker = new PointsMarker(actual.ToArray()); marker.Width = 3; marker.MarkerColor = Color.FromArgb(255, 0, 0); var markers = marker.Apply(image); ImageBox.Show(markers.ToManagedImage(), PictureBoxSizeMode.Zoom); */ Assert.AreEqual(237, actual.Count); Assert.AreEqual(404, actual[0].X); Assert.AreEqual(35, actual[0].Y); Assert.AreEqual(407, actual[6].X); Assert.AreEqual(36, actual[6].Y); Assert.AreEqual(407, actual[11].X); Assert.AreEqual(38, actual[11].Y); Assert.AreEqual(55, actual[65].X); Assert.AreEqual(135, actual[65].Y); Assert.AreEqual(103, actual[73].X); Assert.AreEqual(137, actual[73].Y); }
public void ProcessImageTest2() { UnmanagedImage image = UnmanagedImage.FromManagedImage(Properties.Resources.lena512); FastCornersDetector target = new FastCornersDetector(); target.Suppress = true; target.Threshold = 40; List<IntPoint> actual = target.ProcessImage(image); /* PointsMarker marker = new PointsMarker(actual.ToArray()); marker.Width = 3; marker.MarkerColor = Color.FromArgb(255, 0, 0); var markers = marker.Apply(image); ImageBox.Show(markers.ToManagedImage(), PictureBoxSizeMode.Zoom); */ Assert.AreEqual(324, actual.Count); Assert.AreEqual(506, actual[0].X); Assert.AreEqual(4, actual[0].Y); Assert.AreEqual(152, actual[6].X); Assert.AreEqual(75, actual[6].Y); Assert.AreEqual(416, actual[11].X); Assert.AreEqual(115, actual[11].Y); Assert.AreEqual(140, actual[65].X); Assert.AreEqual(246, actual[65].Y); Assert.AreEqual(133, actual[73].X); Assert.AreEqual(253, actual[73].Y); }