Exemple #1
0
        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);
            }
        }
Exemple #3
0
        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);
        }
Exemple #4
0
    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));
        }
Exemple #7
0
        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;
 }
Exemple #10
0
        public mEdgeSobel(bool scale)
        {
            BitmapType = BitmapTypes.GrayscaleBT709;

            Effect = new SobelEdgeDetector();
            Effect.ScaleIntensity = scale;
            filter = Effect;
        }
Exemple #11
0
        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);
        }
Exemple #12
0
        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);
        }
Exemple #13
0
        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");
        }
Exemple #14
0
        public Bitmap SobelEdges(System.Drawing.Image imgOrigin)
        {
            Bitmap            bmp          = (Bitmap)imgOrigin;
            SobelEdgeDetector _filterSobel = new SobelEdgeDetector();

            _filterSobel.ApplyInPlace(bmp);

            return(bmp);
        }
Exemple #15
0
        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
            });
        }
Exemple #17
0
        /// <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);
        }
Exemple #18
0
        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)));
        }
Exemple #19
0
    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();
    }
Exemple #20
0
        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();
        }
Exemple #21
0
 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);
 }
Exemple #25
0
 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);
 }
Exemple #26
0
        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);
     }
 }
Exemple #29
0
        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());
        }