private void btnOutlierRem_Click(object sender, EventArgs e) { panRemoval.Controls.Clear(); List <Point> cleanedShape1 = new List <Point>(); List <Point> cleanedShape2 = new List <Point>(); Ransac RansacForm = new Ransac(); if (DialogResult.OK == RansacForm.ShowDialog()) { double bestCost = 0; Transformation bestT = null; int n = (int)(RansacForm.InitPercent * Shape1.Count); int d = (int)(RansacForm.TotalPercent * Shape1.Count); double tresh = RansacForm.Treshold; int iterations = RansacForm.Iterations; utils.Ransac(Shape1, Shape2, n, tresh, d, iterations, ref cleanedShape1, ref cleanedShape2, ref bestCost, ref bestT); if (bestT != null) { //We found a transformation though ransac cleanedShape2 = utils.ApplyTransformation(bestT, cleanedShape2); DrawOnPanel(panRemoval, cleanedShape1, cleanedShape2); String s = "Iter: {0}, N: {1}, D: {2}, Tresh:{3}"; MessageBox.Show(String.Format(s, iterations, n, d, tresh)); } else { MessageBox.Show("No good transformation found!"); } } }
private void OutlierRemove_OnClick_Click(object sender, RoutedEventArgs e) { if (isRansac.IsChecked == true) { if (Ransac.GetRansac(shape1, shape2, 3, 10, 500, 6) == false) { MessageBox.Show("Could not remove outliers with Ransac"); } } else { BruteForce.RemoveOutliers(shape1, shape2); } T = new Transformation(shape1, shape2); shape2T = T.Apply(shape2); Images3.Children.Add(DrawImage(shape1, Brushes.Blue)); Images3.Children.Add(DrawImage(shape2T, Brushes.Red)); }