public void describe_points() { if (!detected) { return; } SurfDescriptor.DecribeInterestPoints(ipts, false, false, iimg); descriptor_length = 64; described = true; int length = ipts.Count; connection_id = new int[length]; for (int i = 0; i < length; i++) { connection_id[i] = -1; } }
private void button1_Click(object sender, EventArgs e) { // Open a image Bitmap lenna = Surf.Properties.Resources.lena512; // Create a new SURF Features Detector using the given parameters SpeededUpRobustFeaturesDetector surf = new SpeededUpRobustFeaturesDetector(0.0002f, 5, 2); var points = surf.ProcessImage(lenna); // Get the SURF Features Descriptor from the detector SurfDescriptor descriptor = surf.GetDescriptor(); descriptor.Describe(points); // Create a new AForge's Corner Marker Filter FeaturesMarker features = new FeaturesMarker(points.ToArray()); // Apply the filter and display it on a picturebox pictureBox1.Image = features.Apply(lenna); }
private void btnRunSurf_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.ShowDialog(); string pathToFile = openFileDialog.FileName; Stopwatch watch = new Stopwatch(); watch.Start(); try { // Load an Image Bitmap img = new Bitmap(pathToFile); pbMainPicture.Image = img; // Create Integral Image IntegralImage iimg = IntegralImage.FromImage(img); // Extract the interest points ipts = FastHessian.getIpoints(0.0002f, 5, 2, iimg); // Describe the interest points SurfDescriptor.DecribeInterestPoints(ipts, false, false, iimg); // Draw points on the image PaintSURF(img, ipts); } catch { } watch.Stop(); this.Text = "DemoSURF - Elapsed time: " + watch.Elapsed + " for " + ipts.Count + "points"; }
public void ProcessImageTest() { // Load an Image Bitmap img = Properties.Resources.sample_trans; // Extract the interest points var surf = new SpeededUpRobustFeaturesDetector(0.0002f, 5, 2); List <SurfPoint> points = surf.ProcessImage(img); // Describe the interest points SurfDescriptor descriptor = surf.GetDescriptor(); descriptor.Describe(points); Assert.AreEqual(8, points.Count); SurfPoint p; p = points[0]; Assert.AreEqual(0, p.Laplacian); Assert.AreEqual(25.3803387, p.X, 1e-2); Assert.AreEqual(14.7987738, p.Y, 1e-2); Assert.AreEqual(1.98713827, p.Scale, 1e-2); Assert.AreEqual(0.0, p.Response, 1e-2); Assert.AreEqual(4.78528404, p.Orientation, 1e-2); Assert.AreEqual(64, p.Descriptor.Length); Assert.AreEqual(0.22572951, p.Descriptor[23], 1e-2); Assert.AreEqual(0.0962982625, points[1].Descriptor[42], 1e-2); p = points[1]; Assert.AreEqual(1, p.Laplacian, 1e-2); Assert.AreEqual(20.4856224, p.X, 1e-2); Assert.AreEqual(20.4817181, p.Y, 1e-2); Assert.AreEqual(1.90549147, p.Scale, 1e-2); Assert.AreEqual(0.0, p.Response, 1e-2); Assert.AreEqual(4.89748764, p.Orientation, 1e-2); Assert.AreEqual(64, p.Descriptor.Length); Assert.AreEqual(0.14823015, p.Descriptor[23], 1e-2); Assert.AreEqual(0.0861000642, p.Descriptor[54], 1e-2); p = points[2]; Assert.AreEqual(0, p.Laplacian, 1e-2); Assert.AreEqual(14.7991896, p.X, 1e-2); Assert.AreEqual(25.3776169, p.Y, 1e-2); Assert.AreEqual(1.9869982, p.Scale, 1e-2); Assert.AreEqual(0.0, p.Response, 1e-2); Assert.AreEqual(3.07735944, p.Orientation, 1e-2); Assert.AreEqual(64, p.Descriptor.Length); Assert.AreEqual(0.209485427, p.Descriptor[23], 1e-2); Assert.AreEqual(0.0112418151, p.Descriptor[12], 1e-2); p = points[6]; Assert.AreEqual(1, p.Laplacian, 1e-2); Assert.AreEqual(22.4346638, p.X, 1e-2); Assert.AreEqual(41.4026527, p.Y, 1e-2); Assert.AreEqual(2.83586049, p.Scale, 1e-2); Assert.AreEqual(0.0, p.Response, 1e-2); Assert.AreEqual(3.13142157, p.Orientation, 1e-2); Assert.AreEqual(64, p.Descriptor.Length); Assert.AreEqual(0.0467314087, p.Descriptor[23], 1e-2); Assert.AreEqual(0.0266618263, p.Descriptor[12], 1e-2); descriptor.Extended = true; descriptor.Invariant = false; descriptor.Describe(points); p = points[5]; Assert.AreEqual(1, p.Laplacian, 1e-3); Assert.AreEqual(41.4027748, p.X, 1e-3); Assert.AreEqual(22.4343891, p.Y, 1e-3); Assert.AreEqual(2.83486962, p.Scale, 1e-3); Assert.AreEqual(0.0, p.Response, 1e-3); Assert.AreEqual(4.72728586, p.Orientation, 1e-3); Assert.AreEqual(0.00786296651, p.Descriptor[67], 1e-3); Assert.AreEqual(-0.0202884115, p.Descriptor[97], 1e-2); }