public Bitmap GreyscaleEdgeDetectionImage(Bitmap bitmap) { // Greyscale var greyscaleImage = Grayscale.CommonAlgorithms.BT709.Apply(bitmap); // Contrast - try to sharpen edges //ContrastStretch filter = new ContrastStretch(); //filter.ApplyInPlace(filteredBitmap); // edge filter // This filters accepts 8 bpp grayscale images for processing //Alternatives: //DifferenceEdgeDetector edgeFilter = new DifferenceEdgeDetector(); //HomogenityEdgeDetector filter = new HomogenityEdgeDetector(); //CannyEdgeDetector filter = new CannyEdgeDetector( ); var edgeFilter = new SobelEdgeDetector(); edgeFilter.ApplyInPlace(greyscaleImage); var threshholdFilter = new Threshold(240); //180 threshholdFilter.ApplyInPlace(greyscaleImage); return(greyscaleImage); }
/// <summary> /// Apply filter /// </summary> /// <returns>Bitmap - filtered image</returns> public Bitmap Apply() { try { bitmap = Grayscale.CommonAlgorithms.BT709.Apply(bitmap); var normalizer = new ContrastStretch(); normalizer.ApplyInPlace(bitmap); var er = new Erosion(); er.ApplyInPlace(bitmap); var ed = new SobelEdgeDetector(); ed.ApplyInPlace(bitmap); var th = new Threshold(); th.ApplyInPlace(bitmap); return(bitmap); } catch { return(bitmap); } }
private void EdgeDetectImg(ref Bitmap frame) { frame = Grayscale.CommonAlgorithms.RMY.Apply(frame); // Make gray switch (EdgeDetectValue) { case 1: SobelEdgeDetector SobelFilter = new SobelEdgeDetector(); SobelFilter.ApplyInPlace(frame); break; case 2: DifferenceEdgeDetector DifferenceFilter = new DifferenceEdgeDetector(); DifferenceFilter.ApplyInPlace(frame); break; case 3: HomogenityEdgeDetector HomogenityFilter = new HomogenityEdgeDetector(); HomogenityFilter.ApplyInPlace(frame); break; case 4: CannyEdgeDetector Cannyfilter = new CannyEdgeDetector(); // apply the MirrFilter Cannyfilter.ApplyInPlace(frame); break; default: HomogenityEdgeDetector filter = new HomogenityEdgeDetector(); filter.ApplyInPlace(frame); break; } GrayscaleToRGB RGBfilter = new GrayscaleToRGB(); // back to color format frame = RGBfilter.Apply(frame); }
private void loadImage(string imageFileName) { // Clear everything radUpdateManual.Checked = true; m_snake.deleteAllPoints(); if (m_bmpOrig != null) { m_bmpOrig.Dispose(); m_bmpOrig = null; } if (m_bmpGray != null) { m_bmpGray.Dispose(); m_bmpGray = null; } if (m_bmpSmoo != null) { m_bmpSmoo.Dispose(); m_bmpSmoo = null; } if (m_bmpEdge != null) { m_bmpEdge.Dispose(); m_bmpEdge = null; } // Load image m_bmpOrig = (Bitmap)System.Drawing.Image.FromFile(imageFileName); m_imageFI = new FileInfo(imageFileName); this.Text = "Snake Demo: " + m_imageFI.Name + " (" + m_bmpOrig.Width.ToString() + "x" + m_bmpOrig.Height.ToString() + ", Scale: " + m_imageScale.ToString("0") + ")"; // Build grayscale image if (m_bmpOrig.PixelFormat == PixelFormat.Format8bppIndexed) { m_bmpGray = (Bitmap)m_bmpOrig.Clone(); } else { Grayscale filterGray = new Grayscale(0.257, 0.504, 0.098); m_bmpGray = filterGray.Apply(m_bmpOrig); } // Build smoothed imgage with a gaussian blur filter GaussianBlur filterGauss = new GaussianBlur(1, (int)numGauss.Value); m_bmpSmoo = filterGauss.Apply(m_bmpGray); // Build edges with a Sobel filter SobelEdgeDetector filterSobel = new SobelEdgeDetector(); m_bmpEdge = filterSobel.Apply(m_bmpSmoo); filterGauss.ApplyInPlace(m_bmpEdge); // Enabel controls btnDeleteSnake.Enabled = false; btnDoublePoints.Enabled = false; btnHalfPoints.Enabled = false; grpSnakeForces.Enabled = true; grpImageForce.Enabled = true; grpDisplay.Enabled = true; grpUpdate.Enabled = true; }
private void SobelEdgeDetectionToolStripMenuItem_Click(object sender, EventArgs e) { SobelEdgeDetector ro = new SobelEdgeDetector(); Bitmap s4 = ro.Apply(grayImage); pictureBox6.Image = s4; }
public static Bitmap SobelEdgeFilter(Bitmap bmp) { var converted = bmp.Clone(new Rectangle(0, 0, bmp.Width, bmp.Height), PixelFormat.Format8bppIndexed); SobelEdgeDetector filter = new SobelEdgeDetector(); return(filter.Apply(converted)); }
private void WorkerProc() { // 源图片 Bitmap srcBMP = new Bitmap(128, 128, PixelFormat.Format24bppRgb); Graphics g = Graphics.FromImage(srcBMP); int ncount = 0; // 路径 DirectoryInfo folder = Directory.CreateDirectory(Path.Combine("C:\\capture", DateTime.Now.ToString("yyyyMMdd_HHmmss"))); // 图像变换 SobelEdgeDetector sobel = new SobelEdgeDetector(); while (m_bRunning) { ncount++; g.CopyFromScreen(Cursor.Position.X - srcBMP.Width / 2, Cursor.Position.Y - srcBMP.Height / 2, 0, 0, srcBMP.Size); // 文件名统一前缀 string prefix = Path.Combine(folder.FullName, ncount.ToString("000000")); // 分别存盘 srcBMP.Save(prefix + ".bmp"); Bitmap grayscaleBMP = Grayscale.CommonAlgorithms.RMY.Apply(srcBMP); grayscaleBMP.Save(prefix + "_0灰度.bmp"); Bitmap edgeBMP = sobel.Apply(grayscaleBMP); edgeBMP.Save(prefix + "_1边缘检测.bmp"); } g.Dispose(); }
void SobelToolStripMenuItemClick(object sender, EventArgs e) { //jika gambar kosong/null maka akan mengembalikan nilai kosong/null if (gambar == null) { return; } //clone variable gambar ke variable gambar2 dan menginisiasi class Rectangle //dan menerapkan format pixel 24bppRgb gambar2 = gambar.Clone(new Rectangle(0, 0, gambar.Width, gambar.Height), System.Drawing.Imaging.PixelFormat.Format24bppRgb); //convert ke grayscale terlebih dahulu lalu aplikasikan filter Sobel. //inisiasi filter grayscale disertai argumen Grayscale grayscaleF = new Grayscale(0.2125, 0.7154, 0.0721); //aplikasikan filter grayscale ke gambar2 gambar2 = grayscaleF.Apply(gambar2); //inisiasi filter Sobel SobelEdgeDetector sobelEdgeDetector = new SobelEdgeDetector(); //aplikasikan filter pada gambar2 sobelEdgeDetector.ApplyInPlace(gambar2); //tampilkan pada picturebox2 pictureBox2.Image = gambar2; }
private void sobelToolStripMenuItem_Click(object sender, EventArgs e) { islem = new GrayscaleBT709().Apply(kaynak); //islem = new Blur().Apply(islem); islem = new SobelEdgeDetector().Apply(islem); islemBox.Image = islem; }
public mEdgeSobel(bool scale) { BitmapType = BitmapTypes.GrayscaleBT709; Effect = new SobelEdgeDetector(); Effect.ScaleIntensity = scale; filter = Effect; }
private void reapplyToolStripMenuItem5_Click(object sender, EventArgs e) { //GrayscaleBT709 grayObject = new GrayscaleBT709(); //pictureBox2.Image = grayObject.Apply((Bitmap)pictureBox2.Image); SobelEdgeDetector filter = new SobelEdgeDetector(); pictureBox2.Image = filter.Apply((Bitmap)pictureBox2.Image); }
private Bitmap ProcessImage(Bitmap frame) { // convert the image to grayscale var grayConverter = new GrayscaleBT709(); var grayFrame = grayConverter.Apply(frame); // use a sobel edge detector to find color edges var edgeDetector = new SobelEdgeDetector(); var edgeFrame = edgeDetector.Apply(grayFrame); // threshold the edges var thresholdConverter = new Threshold(200); thresholdConverter.ApplyInPlace(edgeFrame); // use a blobcounter to find interesting shapes var detector = new BlobCounter() { FilterBlobs = true, MinWidth = 25, MinHeight = 25 }; detector.ProcessImage(edgeFrame); // find the circular shape var shapeDetector = new SimpleShapeChecker(); var blobs = detector.GetObjectsInformation(); var circles = from blob in blobs let edgePoints = detector.GetBlobsEdgePoints(blob) where shapeDetector.CheckShapeType(edgePoints) == ShapeType.Circle select blob; // show the traffic sign if (circles.Count() > 0) { var circleFrame = frame.Clone(circles.First().Rectangle, PixelFormat.DontCare); trafficSignBox.Image = circleFrame; } // highlight every circle in the image using (Graphics g = Graphics.FromImage(frame)) { var rects = detector.GetObjectsRectangles(); var pen = new Pen(Color.Blue, 4); foreach (var circle in circles) { g.DrawRectangle(pen, circle.Rectangle); } } // update picture boxes thresholdBox.Image = edgeFrame; return(frame); }
public void ApplyCannyFilter(byte low, byte high, double sigma) { var f = new SobelEdgeDetector(); var filter = new CannyEdgeDetector(low, high, sigma); _bitmap = filter.Apply(_bitmap); OnPropertyChanged("ShowBitmap"); }
public Bitmap SobelEdges(System.Drawing.Image imgOrigin) { Bitmap bmp = (Bitmap)imgOrigin; SobelEdgeDetector _filterSobel = new SobelEdgeDetector(); _filterSobel.ApplyInPlace(bmp); return(bmp); }
private Bitmap preProcessImage(Bitmap image, Grayscale gScale, SobelEdgeDetector sEgDetector, SimplePosterization posterization) { Bitmap temp = image; temp = gScale.Apply(temp); posterization.ApplyInPlace(temp); return(temp); }
public EdgeImage Generate(Bitmap source) { // Make GrayScale Version of image Grayscale filter = new Grayscale(0.2125, 0.7154, 0.0721); Bitmap grayImage = filter.Apply(source); // Apply Sobel Edge Detection to the image SobelEdgeDetector sobelFilter = new SobelEdgeDetector(); Bitmap edgeImage = sobelFilter.Apply(grayImage); // Apply Threshold to edge detected image // Edges are white pixels with value 255 otherwise black with value 0 Threshold thresholdFilter = new Threshold(Threshold); Bitmap thresholdImage = thresholdFilter.Apply(edgeImage); // Render Image var newImg = new Bitmap(thresholdImage.Width, thresholdImage.Height); if (thresholdImage != null) { var g = Graphics.FromImage(newImg); var srcRect = new Rectangle(0, 0, thresholdImage.Width, thresholdImage.Height); var destRect = new Rectangle(0, 0, thresholdImage.Width, thresholdImage.Height); g.DrawImage(thresholdImage, destRect, srcRect, GraphicsUnit.Pixel); } var edgeLocations = new List <PixelCoordinates>(); // Save location of edges for (int x = 0; x < newImg.Width; x++) { for (int y = 0; y < newImg.Height; y++) { if (newImg.GetPixel(x, y).R >= Threshold) { edgeLocations.Add(new PixelCoordinates() { X = x, Y = y }); } } } // Dispose of the created images grayImage.Dispose(); edgeImage.Dispose(); thresholdImage.Dispose(); return(new EdgeImage() { Image = newImg, Edges = edgeLocations }); }
/// <summary> /// Creates a comic rendered copy of the input image. /// </summary> public override Bitmap Render(Bitmap sourceImage) { GrayscaleToRGB convertColor = new GrayscaleToRGB(); if (sourceImage.PixelFormat == PixelFormat.Format8bppIndexed) { sourceImage = convertColor.Apply(sourceImage); } BilateralBlur blur = new BilateralBlur(3, 0.1); Bitmap comic = blur.Apply(sourceImage); // Edges Bitmap grayscale = Grayscale.CommonAlgorithms.Y.Apply(comic); SobelEdgeDetector sobelEdge = new SobelEdgeDetector(); sobelEdge.ScaleIntensity = true; Bitmap edgeLayer = sobelEdge.Apply(grayscale); edgeLayer = convertColor.Apply(edgeLayer); Invert invertEdge = new Invert(); invertEdge.ApplyInPlace(edgeLayer); HSLLinear edgeLinear = new HSLLinear(); edgeLinear.InLuminance.Min = 0; edgeLinear.InLuminance.Max = 0.8; edgeLinear.ApplyInPlace(edgeLayer); // highlights Bitmap highlightLayer = invertEdge.Apply(edgeLayer); Dilatation highlightDilitation = new Dilatation(); highlightDilitation.ApplyInPlace(highlightLayer); BrightnessCorrection highlightBright = new BrightnessCorrection(-0.35); highlightBright.ApplyInPlace(highlightLayer); ColorDodge highlightBlend = new ColorDodge(highlightLayer); highlightBlend.ApplyInPlace(comic); // Merge edges with working layer Multiply multEdge = new Multiply(edgeLayer); multEdge.ApplyInPlace(comic); return(comic); }
private void video_NewFrame(object sender, NewFrameEventArgs eventArgs) { Bitmap img = FilterResize.Apply((Bitmap)eventArgs.Frame.Clone()); pictureBox1.Image = (Bitmap)img.Clone(); Grayscale FilterGrayscale = new Grayscale(red, green, blue); img = FilterGrayscale.Apply((Bitmap)img.Clone()); pictureBox2.Image = (Bitmap)img.Clone(); SobelEdgeDetector FilterSobelEdgeDetector = new SobelEdgeDetector(); img = FilterSobelEdgeDetector.Apply((Bitmap)img.Clone()); pictureBox3.Image = (Bitmap)img.Clone(); pictureBox5.Image = (Bitmap)img.Clone(); pictureBox8.Image = (Bitmap)img.Clone(); if (mutex) { gest = (Bitmap)img.Clone(); mutex = false; pictureBox11.Image = (Bitmap)gest.Clone(); } float sim = 0; ExhaustiveTemplateMatching tm = new ExhaustiveTemplateMatching(0.5f); TemplateMatch[] matchings; Bitmap overlay = (Bitmap)img.Clone(); Add AddFilter = new Add(overlay); if (gest != null) { overlay = AddFilter.Apply((Bitmap)gest.Clone()); } pictureBox9.Image = (Bitmap)overlay.Clone(); matchings = tm.ProcessImage(img, overlay); if (matchings.Length > 0) { sim = matchings[0].Similarity; } this.label4.BeginInvoke((MethodInvoker)(() => this.label4.Text = Convert.ToString(sim))); }
private void numGauss_ValueChanged(object sender, EventArgs e) { GaussianBlur filterGauss = new GaussianBlur(1, (int)numGauss.Value); m_bmpSmoo = filterGauss.Apply(m_bmpGray); SobelEdgeDetector filterSobel = new SobelEdgeDetector(); m_bmpEdge = filterSobel.Apply(m_bmpSmoo); filterGauss.ApplyInPlace(m_bmpEdge); Invalidate(); }
public void Create(Bitmap img, string name) { Bitmap bmp = (Bitmap)img.Clone(); Grayscale FilterGrayscale = new Grayscale(Data.Red, Data.Green, Data.Blue); SobelEdgeDetector FilterSobelEdgeDetector = new SobelEdgeDetector(); bmp = FilterGrayscale.Apply(bmp); bmp = FilterSobelEdgeDetector.Apply(bmp); bmp.Save(Data.Path + "/" + name + ".jpg", ImageFormat.Jpeg); Gesture.Update_Base(); }
public void CreateFilters() { grayscaleFilter = new Grayscale(0.2125, 0.7154, 0.0721); sobelFilter = new SobelEdgeDetector(); dilitationFilter = new Dilatation3x3(); thresholdFilter = new Threshold(100); blobCounter = new BlobCounter {MinHeight = 200, MinWidth = 200, FilterBlobs = true, ObjectsOrder = ObjectsOrder.Size}; shapeChecker = new SimpleShapeChecker(); binaryGlyphRecognizer = new SquareBinaryGlyphRecognizer(5); // 5x5 matrica invertFilter = new Invert(); rotateFilter = new RotateBilinear(90); pen = new Pen(Color.CornflowerBlue, 4); mirrorFilter = new Mirror(false, true); hullFinder = new GrahamConvexHull(); otsuThresholdFilter = new OtsuThreshold(); }
public static Bitmap ProcessImage(string imagePath) { var img = AForge.Imaging.Image.FromFile(imagePath); ContrastStretch filterContrastStretch = new ContrastStretch(); filterContrastStretch.ApplyInPlace(img); try { img = Grayscale.CommonAlgorithms.BT709.Apply(img); } catch { System.Windows.Forms.MessageBox.Show("The image should not be grayscale"); } Opening filterOpening = new Opening(); filterOpening.ApplyInPlace(img); SobelEdgeDetector sobel = new SobelEdgeDetector(); sobel.ApplyInPlace(img); Closing filterClosing = new Closing(); filterClosing.ApplyInPlace(img); Threshold threshold = new Threshold(100); threshold.ApplyInPlace(img); FillHoles fillHoles = new FillHoles(); fillHoles.MaxHoleWidth = img.Width; fillHoles.MaxHoleHeight = img.Height; fillHoles.CoupledSizeFiltering = false; fillHoles.ApplyInPlace(img); filterOpening.ApplyInPlace(img); Erosion filterErosion = new Erosion(); filterErosion.ApplyInPlace(img); return(img); }
public void ApplyEdge(object sender, DoWorkEventArgs e) { Bitmap raw_image = null; if (edgeInputRB.Checked) { raw_image = Accord.Imaging.Filters.Grayscale.CommonAlgorithms.BT709.Apply((Bitmap)input_PB.Image.Clone()); } else if (edgeOutputRb.Checked) { raw_image = (Bitmap)outputImageBox.Image.Clone(); } if (sobelRb.Checked) { var sobel = new SobelEdgeDetector(); Bitmap raw_img = raw_image; UnmanagedImage res = sobel.Apply(UnmanagedImage.FromManagedImage(raw_img)); outputImageBox.Image.Dispose(); outputImageBox.Image = res.ToManagedImage(); } else if (prewittRb.Checked) { var prewitt = new DifferenceEdgeDetector(); Bitmap raw_img = raw_image; UnmanagedImage res = prewitt.Apply(UnmanagedImage.FromManagedImage(raw_img)); outputImageBox.Image.Dispose(); outputImageBox.Image = res.ToManagedImage(); } else if (CannyRb.Checked) { var canny = new CannyEdgeDetector(); Bitmap raw_img = raw_image; byte High = byte.Parse(textBox3.Text); byte Low = byte.Parse(textBox2.Text); double GaussSigma = double.Parse(textBox1.Text); int GaussSize = int.Parse(textBox4.Text); canny.GaussianSize = GaussSize; canny.HighThreshold = High; canny.LowThreshold = Low; canny.GaussianSigma = GaussSigma; UnmanagedImage res = canny.Apply(UnmanagedImage.FromManagedImage(raw_img)); outputImageBox.Image.Dispose(); outputImageBox.Image = res.ToManagedImage(); } }
public bool ApplySobelEdgeFilter() { if (currentImage != null) { try { SobelEdgeDetector filter = new SobelEdgeDetector(); filter.ApplyInPlace(currentImage); return(true); } catch (Exception e) { MessageBox.Show(e.ToString()); } } return(false); }
public bool applySobelEdgeFilter() { if (currentImage != null) { try { // create filter SobelEdgeDetector filter = new SobelEdgeDetector(); // apply the filter filter.ApplyInPlace(currentImage); return(true); } catch (Exception) { } } return(false); }
private static void video_NewFrame(object sender, NewFrameEventArgs eventArgs) { Bitmap img = FilterResize.Apply((Bitmap)eventArgs.Frame.Clone()); Image_original = (Bitmap)img.Clone(); Bitmap bmp = (Bitmap)img.Clone(); Grayscale FilterGrayscale = new Grayscale(Data.Red, Data.Green, Data.Blue); SobelEdgeDetector FilterSobelEdgeDetector = new SobelEdgeDetector(); bmp = FilterGrayscale.Apply(bmp); bmp = FilterSobelEdgeDetector.Apply(bmp); Image_ready = (Bitmap)bmp.Clone(); Update_frame(); }
public static void TestEdge() { try { Bitmap bmp = Image.FromFile(PATH + @"\test.png") as Bitmap; bmp = bmp.Clone(new Rectangle(0, 0, bmp.Width, bmp.Height), PixelFormat.Format8bppIndexed); //AForge.Imaging.Image.SetGrayscalePalette(bmp); SobelEdgeDetector filter = new SobelEdgeDetector(); Bitmap newBmp = filter.Apply(bmp); newBmp.Save(PATH + @"\outtest.png"); } catch (Exception ex) { Debug.WriteLine(ex.StackTrace); } }
public void SobelClickHandler(object sender, EventArgs e) { if (image != null) { Bitmap imx = new Bitmap(path); imx = Grayscale.CommonAlgorithms.Y.Apply(imx); SobelEdgeDetector gb = new SobelEdgeDetector(); imx = gb.Apply(imx); if (mov != null) { this.WorkItem.Workspaces[WorkspaceNames.TabWorkspace].Close(mov); } mov = this.WorkItem.SmartParts.AddNew <ImageAView>(); mov.panAndZoomPictureBox1.Image = imx; SmartPartInfo spi = new SmartPartInfo("Sobel", "MyOwnDescription"); this.WorkItem.Workspaces[WorkspaceNames.TabWorkspace].Show(mov, spi); } }
private void TakeSnapshot_funct(Bitmap img) { Bitmap image = Grayscale.CommonAlgorithms.RMY.Apply(img); // find edges SobelEdgeDetector EdgeFilter = new SobelEdgeDetector(); EdgeFilter.ApplyInPlace(image); // back to color format GrayscaleToRGB RGBfilter = new GrayscaleToRGB(); image = RGBfilter.Apply(image); // get rid of grays EuclideanColorFiltering filter = new EuclideanColorFiltering(); filter.CenterColor.Red = 20; filter.CenterColor.Green = 20; filter.CenterColor.Blue = 20; filter.FillOutside = false; filter.Radius = 200; filter.ApplyInPlace(image); Color peek; for (int y = 0; y < image.Height; y++) { for (int x = 0; x < image.Width; x++) { peek = image.GetPixel(x, y); if (peek.R != 0) { image.SetPixel(x, y, Color.Blue); } } } image.MakeTransparent(Color.Black); SnapshotImage = image; SnapshotOriginalImage = image; }
private void btnLoad_Click(object sender, RoutedEventArgs e) { // todo Achtung, für die richtige verwendung von autofac use MVVM //var imageSrc = new ImageHelper(@"C:\apps\OcrOpenCvNET\MeterImage\MeterImage\BilderMartin\pic1\WP_20160226_006.jpg"); var imageSrc = new ImageHelper(@"C:\apps\OcrOpenCvNET\MeterImage\MeterImage\BilderMartin\pic2\WP_20160226_017.jpg"); this.image.Source = imageSrc.JpgToBitmapImage(); // create filter //HomogenityEdgeDetector filter = new HomogenityEdgeDetector(); // apply the filter Bitmap imageBm = imageSrc.JpgToBitmap(); Bitmap gsImage = Grayscale.CommonAlgorithms.BT709.Apply(imageBm); var filter = new SobelEdgeDetector();//new CannyEdgeDetector(); Bitmap edge = filter.Apply(gsImage); imageGray.Source = imageSrc.BitmapToImageSource(this.DetectCorners(imageBm)); //this.imageGray.Source = imageSrc.BitmapToImageSource(WithLines); //this.imageGray.Source = imageSrc.BitmapToImageSource(gsImage); //this.imageGray.Source = imageSrc.JpgToBitmapImage(); //this.imageGray.Source = imageSrc.BitmapToImageSource(edge); //this.imageGray.Source = imageSrc.BitmapToImageSource(lineTransform.ToBitmap()); }