private void Button_Click_1(object sender, RoutedEventArgs e) { System.DateTime start = System.DateTime.Now; drawPanel.Children.Clear(); grayscalePanel.Source = originalImage; List <double[]> Blobs = ImageProcessing.getBlobCoordsUsingLaplacianKernel(originalImageBytes); foreach (double[] coord in Blobs) { Ellipse el = new Ellipse(); el.Stroke = System.Windows.Media.Brushes.Red; el.StrokeThickness = 1.3; double r = coord[2] * originalPanel.ActualWidth; el.Width = 2 * r; el.Height = 2 * r; Canvas.SetLeft(el, coord[0] * originalPanel.ActualWidth - r); Canvas.SetTop(el, coord[1] * originalPanel.ActualHeight - r); drawPanel.Children.Add(el); } drawPanel.Visibility = System.Windows.Visibility.Visible; System.DateTime finish = System.DateTime.Now; MessageBox.Show(String.Format("It took us {0} sec to find blobs", (finish - start).TotalSeconds.ToString())); }
private void gaussSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs <double> e) { if (e.NewValue == 1) { return; } if (_blobs == null) { _blobs = ImageProcessing.getBlobCoordsUsingLaplacianKernel(originalImageBytes); } drawPanel.Children.Clear(); grayscalePanel.Source = originalImage; List <double[]> Blobs = _blobs.OrderByDescending(x => x[3]).Take((int)e.NewValue).ToList(); foreach (double[] coord in Blobs) { Ellipse el = new Ellipse(); el.Stroke = System.Windows.Media.Brushes.Red; el.StrokeThickness = 1.3; double r = coord[2] * originalPanel.ActualWidth; el.Width = 2 * r; el.Height = 2 * r; Canvas.SetLeft(el, coord[0] * originalPanel.ActualWidth - r); Canvas.SetTop(el, coord[1] * originalPanel.ActualHeight - r); drawPanel.Children.Add(el); } drawPanel.Visibility = System.Windows.Visibility.Visible; //if (e.NewValue <= 1) // return; //processedImageBytes = ImageProcessing.getDifferenceOfGaussins(originalImageBytes, (int) e.NewValue); //grayscalePanel.Source = ImageConvertor.ByteArrayToImage(processedImageBytes, originalImage.PixelWidth, originalImage.PixelHeight, 1); }