Exemplo n.º 1
0
 /// <summary>
 /// Update routine for first camera.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="image"></param>
 private void Camera1_Update(object sender, ref Bitmap image)
 {
     if (Executed)
     {
         Bitmap invrt = FilterInvert.Apply(image);
         FilterColor.ApplyInPlace(invrt);
         FilterSaturateLeft.ApplyInPlace(image);
         // create an instance of blob counter algorithm.
         BlobCounter objCounter = new BlobCounter();
         objCounter.FilterBlobs          = true;
         objCounter.CoupledSizeFiltering = true;
         objCounter.MinWidth             = (int)(0.05f * Wdth);
         objCounter.MinHeight            = (int)(0.05f * Hght);
         objCounter.MaxWidth             = (int)(0.4f * Wdth);
         objCounter.MaxHeight            = (int)(0.4f * Hght);
         // process image.
         objCounter.ProcessImage(invrt);
         ObjectsLeft    = objCounter.GetObjectsRectangles();
         ObjectDescLeft = new Descriptor[ObjectsLeft.Length];
         // Draw lines.
         Graphics graphic = Graphics.FromImage(image);
         Pen      pen     = new Pen(Color.Yellow);
         pen.Width = 7;
         Font       font  = new Font("Courier", 14, FontStyle.Regular);
         SolidBrush brush = new SolidBrush(Color.Yellow);
         for (int a = 0; a < ObjectsLeft.Length; a++)
         {
             // Set descriptor of each detected object.
             SetDescriptor(ref ObjectDescLeft[a], ref ObjectsLeft[a], image);
             pen.Color = ObjectDescLeft[a].ColorMean;
             graphic.DrawRectangle(pen, ObjectsLeft[a]);
             graphic.DrawString(a.ToString() + " | " + ObjectDescLeft[a].ColorClass +
                                "\n" + ObjectDescLeft[a].PercentR.ToString() + "%\n" + ObjectDescLeft[a].PercentG.ToString() +
                                "%\n" + ObjectDescLeft[a].PercentB.ToString() + "%",
                                font, brush, ObjectsLeft[a].X, ObjectsLeft[a].Y);
         }
         pen.Dispose();
         graphic.Dispose();
     }
     else
     {
         Graphics graphic = Graphics.FromImage(image);
         Pen      pen     = new Pen(Color.Yellow);
         pen.Width = 6;
         graphic.DrawRectangle(pen, new Rectangle(30, 30, Wdth - 60, Hght - 60));
         pen.Width = 3;
         graphic.DrawRectangle(pen, new Rectangle(90, 90, Wdth - 180, Hght - 180));
         pen.Dispose();
         graphic.Dispose();
     }
 }
Exemplo n.º 2
0
        private void Button_Belirt_Click(object sender, EventArgs e)
        {
            Bitmap image = (Bitmap)pictureBox1.Image.Clone();

            ColorFiltering colorFilter = new ColorFiltering();

            colorFilter.Red   = new IntRange(red, (int)numericUpDownRed.Value);
            colorFilter.Green = new IntRange(green, (int)numericUpDownGreen.Value);
            colorFilter.Blue  = new IntRange(blue, (int)numericUpDownBlue.Value);
            colorFilter.ApplyInPlace(image);

            BlobCounter blobCounter = new BlobCounter();

            blobCounter.MinHeight = 100;
            blobCounter.MinWidth  = 300;

            blobCounter.ObjectsOrder = ObjectsOrder.Size;
            blobCounter.ProcessImage(image);

            Rectangle[] rectangle = blobCounter.GetObjectsRectangles(); // bundan bir daha oluştur
            if (rectangle.Length > 0)                                   //içerde beyazları tespit etmek için
            {
                size = rectangle[0].Size;
                //MessageBox.Show(size.ToString());
                Rectangle objectt = rectangle[0];
                Graphics  graphic = Graphics.FromImage(image);
                using (Pen pen = new Pen(Color.Turquoise, 10))
                {
                    graphic.DrawRectangle(pen, objectt);
                }
                graphic.Dispose();
            }
            pictureBox2.Image = image;
        }
Exemplo n.º 3
0
        private void doWork(object o)
        {
            var data = o as Params;

            lock (work_lock)
            {
                using (var filteredImage = new Bitmap(data.Image))
                {
                    backgroundFilter.ApplyInPlace(filteredImage);

                    blobCounter.ProcessImage(filteredImage);
                }

                var rects = blobCounter.GetObjectsRectangles();

                int rectsCount = rects.Count();

                if (rectsCount == 0)
                {
                    return;
                }

                var result = new List <Bitmap>(rectsCount);

                foreach (Rectangle rect in rects)
                {
                    result.Add(data.Image.Crop(rect));
                }

                RaiseDetectedBlobs(result);
            }
        }
Exemplo n.º 4
0
        private void sonYeni(object sender, NewFrameEventArgs eventArgs)
        {
            pictureBox1.Image = (Bitmap)eventArgs.Frame.Clone();
            Bitmap video = (Bitmap)eventArgs.Frame.Clone();

            if (takip == 1)
            {
                ColorFiltering colorfilter = new ColorFiltering();
                colorfilter.Red   = new IntRange(Red, redMax);
                colorfilter.Green = new IntRange(Green, greenMax);
                colorfilter.Blue  = new IntRange(Blue, blueMax);
                colorfilter.ApplyInPlace(video);
                BlobCounter blobCounter = new BlobCounter();
                blobCounter.MinHeight    = 20;
                blobCounter.MinWidth     = 20;
                blobCounter.ObjectsOrder = ObjectsOrder.Size;
                blobCounter.ProcessImage(video);
                Rectangle[] rect = blobCounter.GetObjectsRectangles();
                if (rect.Length > 0)
                {
                    Rectangle obj = rect[0];
                    Graphics  gr  = Graphics.FromImage(video);
                    using (Pen pen = new Pen(Color.White, 3))
                    {
                        gr.DrawRectangle(pen, obj);
                    }
                    gr.Dispose();
                }
                pictureBox2.Image = video;
            }
        }
Exemplo n.º 5
0
        private bool BlobCounter()
        {
            // lock image
            BitmapData bitmapData = _bitmap.LockBits(ImageLockMode.ReadWrite);

            // step 1 - turn background to black
            ColorFiltering colorFilter = new ColorFiltering();

            colorFilter.Red              = new IntRange(0, 64);
            colorFilter.Green            = new IntRange(0, 64);
            colorFilter.Blue             = new IntRange(0, 64);
            colorFilter.FillOutsideRange = false;

            colorFilter.ApplyInPlace(bitmapData);

            // step 2 - locating objects
            BlobCounter blobCounter = new BlobCounter();

            blobCounter.FilterBlobs = true;
            blobCounter.MinHeight   = 100;


            blobCounter.ProcessImage(bitmapData);
            Blob[] blobs = blobCounter.GetObjectsInformation();
            _bitmap.UnlockBits(bitmapData);

            // step 3 - check objects' type and highlight
            SimpleShapeChecker shapeChecker = new SimpleShapeChecker();

            using (var g = Graphics.FromImage(_bitmap))
                using (Pen pen = new Pen(Color.Red, 2)) {
                    for (int i = 0; i < blobs.Length; i++)
                    {
                        //Debug.WriteLine(String.Format("Blob {0}: W: {1}   H:{2}   ", i, blobs[i].Rectangle.Width, blobs[i].Rectangle.Height));

                        List <IntPoint> edgePoints = blobCounter.GetBlobsEdgePoints(blobs[i]);
                        List <IntPoint> corners;

                        if (shapeChecker.IsConvexPolygon(edgePoints, out corners))
                        {
                            pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;
                            g.DrawRectangle(pen, blobs[i].Rectangle);
                        }
                    }
                }

            RectRight = new Rectangle();
            RectLeft  = new Rectangle();

            if (blobs.Length != 2 || blobs.Any(b => b.Rectangle.Width > 47))
            {
                return(false);
            }
            else
            {
                RectLeft  = blobs.OrderBy(b => b.Rectangle.Left).First().Rectangle;
                RectRight = blobs.OrderBy(b => b.Rectangle.Left).Last().Rectangle;
                return(true);
            }
        }
Exemplo n.º 6
0
        public static void FilterToRed(Bitmap img)
        {
            // create filter
            //EuclideanColorFiltering filter = new EuclideanColorFiltering();
            //// set center colol and radius
            //filter.CenterColor = new RGB(180, 30, 30);
            //filter.Radius = 30;
            //// apply the filter
            //filter.ApplyInPlace(img);

            //HSLFiltering filter = new HSLFiltering();
            //filter.Hue = new IntRange(0, 6); //these settings should works, if not
            //filter.Saturation = new Range(0.6f, 1f);
            //filter.Luminance = new Range(0.3f, 0.60f);
            ////filter

            ColorFiltering colorFilter = new ColorFiltering();

            colorFilter.Red   = new IntRange(140, 210);
            colorFilter.Green = new IntRange(0, 80);
            colorFilter.Blue  = new IntRange(0, 80);
            colorFilter.ApplyInPlace(img);

            //BlobsFiltering filter = new BlobsFiltering();
            //filter.CoupledSizeFiltering = true;
            //filter.MinWidth = 3;
            //filter.MinHeight = 3;
            //// apply the filter
            //filter.ApplyInPlace(img);
        }
Exemplo n.º 7
0
 public void ApplyRGB(Bitmap video, int minR, int maxR, int minG, int maxG, int minB, int maxB)
 {
     // set color ranges to keep
     filter.Red   = new IntRange(minR, maxR);
     filter.Green = new IntRange(minG, maxG);
     filter.Blue  = new IntRange(minB, maxB);
     filter.ApplyInPlace(video);
 }
Exemplo n.º 8
0
        public static void Face_Detection(Bitmap video)
        {
            ColorFiltering filter = new ColorFiltering();

            // set color ranges to keep
            filter.Red   = new IntRange(0, 75);
            filter.Green = new IntRange(0, 75);
            filter.Blue  = new IntRange(10, 255);
            filter.ApplyInPlace(video);
        }
Exemplo n.º 9
0
        /// <summary>
        /// Méthode qui analyse les images envoyées par le client
        /// Repère les formes présentes, les découpe et les enregistre en ficiers distincts
        /// </summary>
        public void ProcessImage()
        {
            using (CamCapturer.CamCapturer cam = new CamCapturer.CamCapturer())
            {
                Picture = cam.GetCapture();
                Copy    = cam.GetCapture();
            }

            ShapeChecker  = new SimpleShapeChecker();
            ShapeAnalyser = new BlobCounter();
            string date = DateTime.Now.Date.ToString("dMyyyy");

            FolderName = string.Format("Kuhlschrank-{0}", date);

            ShapeAnalyser.FilterBlobs = true;
            ShapeAnalyser.MinHeight   = 200;
            ShapeAnalyser.MinWidth    = 500;
            Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), FolderName));

            BitmapData bitData = Picture.LockBits(new Rectangle(0, 0, Picture.Width, Picture.Height), ImageLockMode.ReadWrite, Picture.PixelFormat);

            ColorFiltering filter = new ColorFiltering();

            filter.Red              = new IntRange(0, 64);
            filter.Green            = new IntRange(0, 64);
            filter.Blue             = new IntRange(0, 64);
            filter.FillOutsideRange = false;

            filter.ApplyInPlace(bitData);

            ShapeAnalyser.ProcessImage(bitData);
            Blob[] blobs = ShapeAnalyser.GetObjectsInformation();
            Picture.UnlockBits(bitData);

            for (int i = 0; i < blobs.Length; i++)
            {
                List <IntPoint> edgePoints = ShapeAnalyser.GetBlobsEdgePoints(blobs[i]);
                List <IntPoint> corners;
                ShapeChecker.IsConvexPolygon(edgePoints, out corners);

                IntPoint pt0 = corners[0];
                IntPoint pt1 = corners[1];
                IntPoint pt2 = corners[2];

                double width  = Math.Sqrt(Math.Pow(pt1.X - pt0.X, 2) + Math.Pow(pt1.Y - pt0.Y, 2));
                double height = Math.Sqrt(Math.Pow(pt2.X - pt1.X, 2) + Math.Pow(pt2.Y - pt1.Y, 2));

                Rectangle crop   = new Rectangle(corners[0].X, corners[1].Y, (int)width + 50, (int)height + 50);
                Bitmap    target = new Bitmap(crop.Width, crop.Height);
                using (Graphics gr = Graphics.FromImage(target))
                    gr.DrawImage(Copy, new Rectangle(0, 0, target.Width, target.Height), crop, GraphicsUnit.Pixel);

                target.Save(string.Format(@"{0}\{1}\crop{2}.jpg", Path.GetTempPath(), FolderName, i));
            }
        }
Exemplo n.º 10
0
        public static void FilterColors(ref Bitmap bm, IntRange red, IntRange green, IntRange blue)
        {
            ColorFiltering colorFilter = new ColorFiltering
            {
                Red   = red,
                Green = green,
                Blue  = blue
            };

            colorFilter.ApplyInPlace(bm);
        }
Exemplo n.º 11
0
        public static Bitmap FilterImage(Bitmap originalBitmap)
        {
            var bitmap = new Bitmap(originalBitmap);

            var imagem      = bitmap.Clone(new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height), System.Drawing.Imaging.PixelFormat.Format24bppRgb);
            var colorFilter = new ColorFiltering();

            colorFilter.FillColor = new RGB(255, 255, 255);
            colorFilter.Red       = colorFilter.Green = colorFilter.Blue = new IntRange(0, 40);
            colorFilter.ApplyInPlace(bitmap);
            bitmap = new FiltersSequence(colorFilter, new Invert(), new Erosion()).Apply(imagem);
            return(bitmap);
        }
Exemplo n.º 12
0
        public Bitmap FindTextBitmap()
        {
            Bitmap textBmp = new Bitmap(sets.BmpTextWidth, sets.BmpTextHeight);

            textBmp = sourceImage.Clone(new Rectangle(match.X + sets.TextMarginRight, match.Y + sets.TextMarginTop, sets.BmpTextWidth, sets.BmpTextHeight), PixelFormat.Format24bppRgb);
            Grayscale        gs = new Grayscale(0.2125, 0.7154, 0.0721);
            SISThreshold     th = new SISThreshold();
            BinaryErosion3x3 bs = new BinaryErosion3x3();

            ColorFiltering cf = new ColorFiltering();

            cf.Red   = new IntRange(90, 160);
            cf.Green = new IntRange(55, 110);
            cf.Blue  = new IntRange(15, 85);
            cf.ApplyInPlace(textBmp);

            //for (int i = 0; i < textBmp.Width; i++)
            //{
            //    for (int j = 0; j < textBmp.Height; j++)
            //    {
            //        if (((textBmp.GetPixel(i, j).R > 95) && (textBmp.GetPixel(i, j).R < 155)) && ((textBmp.GetPixel(i, j).G > 60) && (textBmp.GetPixel(i, j).G > 105)) && ((textBmp.GetPixel(i, j).B > 20 && (textBmp.GetPixel(i, j).B < 80))))
            //        {
            //            textBmp.SetPixel(i, j, Color.Black);
            //        }
            //        else
            //        {
            //            textBmp.SetPixel(i, j, Color.White);
            //        }
            //    }
            //}

            BilateralSmoothing bss = new BilateralSmoothing();

            bss.KernelSize    = 7;
            bss.SpatialFactor = 5;
            bss.ColorFactor   = 30;
            bss.ColorPower    = 0.5;



            bss.ApplyInPlace(textBmp);

            textBmp = gs.Apply(textBmp);
            th.ApplyInPlace(textBmp);
            //bs.ApplyInPlace(textBmp);
            //erose.ApplyInPlace(textBmp);


            return(textBmp);
        }
Exemplo n.º 13
0
        private Bitmap rdraw()
        {
            Bitmap result = (Bitmap)mf.pictureBox.Image;


            ColorFiltering cf = new ColorFiltering();

            cf.Red   = new IntRange(redmin.Value, redmax.Value);
            cf.Green = new IntRange(greenmin.Value, greenmax.Value);
            cf.Blue  = new IntRange(bluemin.Value, bluemax.Value);
            cf.ApplyInPlace(result);

            return(result);
        }
        void FinalVideoSource_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            Bitmap image  = (Bitmap)eventArgs.Frame.Clone();
            Bitmap image1 = (Bitmap)eventArgs.Frame.Clone();

            pictureBox1.Image = image;

            try
            {
                //kırmızı
                if (radioButton1.Checked)
                {
                    //ColorFilter'in yapildigi yer
                    ColorFiltering filter = new ColorFiltering();
                    int            a1     = int.Parse(textBox1.Text);
                    int            a2     = int.Parse(textBox2.Text);
                    int            a3     = int.Parse(textBox3.Text);
                    int            b1     = int.Parse(textBox4.Text);
                    int            b2     = int.Parse(textBox5.Text);
                    int            b3     = int.Parse(textBox6.Text);
                    filter.Red   = new IntRange(a1, b1);
                    filter.Green = new IntRange(a2, b2);
                    filter.Blue  = new IntRange(a3, b3);
                    filter.ApplyInPlace(image1);

                    //Görüntü üzerinde algilanan renk kare icine aliniyor
                    cevresiniciz(image1);
                }

                //mavi
                if (radioButton2.Checked)
                {
                    int a1 = int.Parse(textBox7.Text);
                    int a2 = int.Parse(textBox8.Text);
                    int a3 = int.Parse(textBox9.Text);
                    // Euclidean Color Filterin yapildigi yer
                    EuclideanColorFiltering filter = new EuclideanColorFiltering();
                    // Algilanacak renk belirleniyor ve orta noktasi belirleniyor
                    filter.CenterColor = new RGB(Color.FromArgb(a1, a2, a3));
                    filter.Radius      = 50;
                    // filtre calistiriliyor
                    filter.ApplyInPlace(image1);

                    //Görüntü üzerinde algilanan rengi cevrcevelemek veya hedeflemek icin gerekli Methodlar
                    cevresiniciz(image1);
                    //hedefal(image);
                }
            }
            catch { }
        }
Exemplo n.º 15
0
        public Bitmap CutImage(System.Drawing.Image imgOrigin)
        {
            Bitmap bmp = (Bitmap)imgOrigin;

            GetBrightness(bmp);
            Bitmap         bmpAux  = bmp.Clone(new Rectangle(0, 0, bmp.Width, bmp.Height), PixelFormat.Format32bppRgb);
            ColorFiltering cFilter = new ColorFiltering();

            cFilter.Red              = new IntRange(170, 255);
            cFilter.Green            = new IntRange(100, 255);
            cFilter.Blue             = new IntRange(80, 255);
            cFilter.FillOutsideRange = false;
            cFilter.ApplyInPlace(bmpAux);

            return(bmpAux);
        }
Exemplo n.º 16
0
        public Bitmap DetectJupiter(Bitmap image)
        {
            ColorFiltering cf = new ColorFiltering(new IntRange(0, 255), new IntRange(76, 165), new IntRange(64, 154));

            cf.FillOutsideRange = false;
            cf.ApplyInPlace(image);
            BlobCounter bc = new BlobCounter();

            bc.FilterBlobs = true;
            bc.MinHeight   = 50;
            bc.MinWidth    = 50;
            bc.ProcessImage(image);
            Blob[] blobs = bc.GetObjectsInformation();
            Console.WriteLine(blobs.Count());
            return(image);
        }
Exemplo n.º 17
0
        private void colourFiltering()
        // Colour filtering
        {
            // Declare variables
            Bitmap bitmap = new Bitmap(pictureBox1.Image);
            // create filter
            ColorFiltering filter = new ColorFiltering();

            // set color ranges to keep
            filter.Red   = new IntRange(100, 255);
            filter.Green = new IntRange(0, 75);
            filter.Blue  = new IntRange(0, 75);
            // apply the filter
            filter.ApplyInPlace(bitmap);
            pictureBox1.Image = bitmap;
        }
Exemplo n.º 18
0
        public static Bitmap buscaRectangulos(Bitmap bitmap)
        {
            Blob[]    blobs;
            Rectangle area = new Rectangle(0, 0, bitmap.Width, bitmap.Height);
            // lock image
            BitmapData bitmapData = bitmap.LockBits(area, ImageLockMode.ReadWrite, bitmap.PixelFormat);
            // Filtramos la imagen para determinar hasts cuando de ROJO, VERDE Y AZUL se permitiráanalizar
            ColorFiltering colorFilter = new ColorFiltering();

            colorFilter.Red              = new IntRange(0, 104);
            colorFilter.Green            = new IntRange(0, 104);
            colorFilter.Blue             = new IntRange(0, 104);
            colorFilter.FillOutsideRange = false; colorFilter.ApplyInPlace(bitmapData);
            // Localizamos objetos en la imagen
            BlobCounter blobCounter = new BlobCounter();

            blobCounter.FilterBlobs = true;
            blobCounter.MinHeight   = 15;
            blobCounter.MinWidth    = 15;
            blobCounter.ProcessImage(bitmapData);
            blobs = blobCounter.GetObjectsInformation();
            bitmap.UnlockBits(bitmapData);
            // step 3 -check objects' type and highlight
            SimpleShapeChecker shapeChecker = new SimpleShapeChecker();
            Graphics           g            = Graphics.FromImage(bitmap);
            Pen yellowPen = new Pen(Color.Yellow, 2);

            // Para cada figuura encontrada
            for (int i = 0, n = blobs.Length; i < n; i++)
            {
                List <IntPoint> edgePoints = blobCounter.GetBlobsEdgePoints(blobs[i]);
                List <IntPoint> corners;
                // Cuadrado
                if (shapeChecker.IsQuadrilateral(edgePoints, out corners))
                {//Obtenemos cuantas esquinas tiene el shape
                    PolygonSubType subType = shapeChecker.CheckPolygonSubType(corners);
                    //Pintamos las áreas detectadas
                    areaInteres(g, corners);
                }
            }
            //yellowPen.Dispose();
            g.Dispose();
            // put new image to clipboard
            Clipboard.SetDataObject(bitmap);
            // and to picture box
            return(bitmap);
        }
Exemplo n.º 19
0
        private void FinalFrame_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            //pictureBox1.Image = (Bitmap)eventArgs.Frame.Clone();

            video = (Bitmap)eventArgs.Frame.Clone();
            Bitmap video2 = (Bitmap)eventArgs.Frame.Clone();



            // this is mode 1
            if (mode == 1)
            {
                //
                ColorFiltering colorfilter = new ColorFiltering();
                colorfilter.Red   = new IntRange(Red, (int)numericUpDownRed.Value);
                colorfilter.Green = new IntRange(Green, (int)numericUpDownGreen.Value);
                colorfilter.Blue  = new IntRange(Blue, (int)numericUpDownBlue.Value);
                colorfilter.ApplyInPlace(video2);


                //BlobCounter
                BlobCounter blobcounter = new BlobCounter();
                blobcounter.MinHeight    = 20;
                blobcounter.MinWidth     = 20;
                blobcounter.ObjectsOrder = ObjectsOrder.Size;
                blobcounter.ProcessImage(video2);
                Rectangle[] rect = blobcounter.GetObjectsRectangles();
                if (rect.Length > 0)
                {
                    Rectangle target  = rect[0];
                    Graphics  graphic = Graphics.FromImage(video2); // To apply Grapghics on video2, that is, pictureBox2.

                    g = Graphics.FromImage(video2);

                    using (Pen pen = new Pen(Color.White, 3))
                    {
                        graphic.DrawRectangle(pen, target);

                        g.DrawString("Target Located !", new Font("Arial", 20), new SolidBrush(Color.White), new PointF(2, 2)); // to demonstrate 'recognition' of target.
                        g.Dispose();
                    }
                    graphic.Dispose();
                }
                pictureBox2.Image = video2;
            }
            pictureBox1.Image = video;
        }
Exemplo n.º 20
0
        private void GetPicBlobs()
        {
            // create filter
            ColorFiltering filter = new ColorFiltering();

            // set color ranges to keep
            filter.Red   = new IntRange(190, 255);
            filter.Green = new IntRange(200, 255);
            filter.Blue  = new IntRange(180, 255);
            // apply the filter
            filter.ApplyInPlace(GameZonePic);

            // locate objects using blob counter
            BlobCounter = new BlobCounter();
            BlobCounter.ProcessImage(GameZonePic);
            Blobs = BlobCounter.GetObjectsInformation();
        }
Exemplo n.º 21
0
        /// <summary>
        /// Extracts Images from smallSize CameraImage, No feed Back given during process
        /// </summary>
        /// <param name="SmallCameraImage"></param>
        /// <param name="OMRSpecsSheetAddress"></param>
        /// <returns>Formated, Right sized OMR Sheet</returns>
        private Bitmap flatten(Bitmap bmp, int fillint, int contint)
        {
            // step 1 - turn background to black
            ColorFiltering colorFilter = new ColorFiltering();

            colorFilter.Red              = new IntRange(0, fillint);
            colorFilter.Green            = new IntRange(0, fillint);
            colorFilter.Blue             = new IntRange(0, fillint);
            colorFilter.FillOutsideRange = false;
            colorFilter.ApplyInPlace(bmp);
            AForge.Imaging.Filters.ContrastCorrection Contrast        = new ContrastCorrection(contint);
            AForge.Imaging.Filters.Invert             invert          = new Invert();
            AForge.Imaging.Filters.ExtractChannel     extract_channel = new ExtractChannel(0);
            AForge.Imaging.Filters.Threshold          thresh_hold     = new Threshold(44);
            bmp = invert.Apply(thresh_hold.Apply(extract_channel.Apply(Contrast.Apply(bmp))));
            return(bmp);
        }
Exemplo n.º 22
0
        private void FinalFrame_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            video = (Bitmap)eventArgs.Frame.Clone();
            Bitmap video2 = (Bitmap)eventArgs.Frame.Clone();

            switch (mode)
            {
            case 2:
                g = Graphics.FromImage(video2);
                g.DrawString(degisken.ToString(), new Font("Arial", 20), Brushes.Cyan, new PointF(2, 2));
                g.Dispose();

                break;

            case 1:

                ColorFiltering colorFilter = new ColorFiltering();
                colorFilter.Red   = new IntRange(red, (int)numericUpDownRed.Value);
                colorFilter.Green = new IntRange(green, (int)numericUpDownGreen.Value);
                colorFilter.Blue  = new IntRange(blue, (int)numericUpDownBlue.Value);
                colorFilter.ApplyInPlace(video2);

                BlobCounter blobCounter = new BlobCounter();
                blobCounter.MinHeight    = 20;
                blobCounter.MinWidth     = 20;
                blobCounter.ObjectsOrder = ObjectsOrder.Size;
                blobCounter.ProcessImage(video2);
                Rectangle[] rect = blobCounter.GetObjectsRectangles();
                if (rect.Length > 0)
                {
                    Rectangle objectt = rect[0];
                    Graphics  graph   = Graphics.FromImage(video2);
                    using (Pen pen = new Pen(Color.White, 3))
                    {
                        graph.DrawRectangle(pen, objectt);
                    }
                    graph.Dispose();
                }
                pictureBox2.Image = video2;

                break;
            }
            pictureBox1.Image = video;
            //pictureBox1.Image = (Bitmap)eventArgs.Frame.Clone();
        }
Exemplo n.º 23
0
        private void kullanilacakcihaz_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            video = (Bitmap)eventArgs.Frame.Clone();
            Bitmap video2 = (Bitmap)eventArgs.Frame.Clone();

            switch (mode)
            {
            case 1:
            {
                //
                ColorFiltering colorfiller = new ColorFiltering();
                colorfiller.Red   = new IntRange(Red, (int)numericUpDown1.Value);
                colorfiller.Green = new IntRange(Green, (int)numericUpDown2.Value);
                colorfiller.Blue  = new IntRange(Blue, (int)numericUpDown3.Value);
                colorfiller.ApplyInPlace(video2);
                //
                BlobCounter blobcounter = new BlobCounter();
                blobcounter.MinHeight    = 20;
                blobcounter.MinWidth     = 20;
                blobcounter.ObjectsOrder = ObjectsOrder.Size;
                blobcounter.ProcessImage(video2);
                Rectangle[] rect = blobcounter.GetObjectsRectangles();
                if (rect.Length > 0)
                {
                    Rectangle objec   = rect[0];
                    Graphics  graphic = Graphics.FromImage(video2);
                    using (Pen pen = new Pen(Color.White, 3))
                    {
                        graphic.DrawRectangle(pen, objec);
                        g = Graphics.FromImage(video);
                        g.DrawRectangle(pen, objec);
                        objectX = objec.X + (objec.Width / 2);
                        objectY = objec.Y + (objec.Height / 2);
                        g.DrawString(objectX.ToString() + "X" + objectY.ToString(), new Font("Arial", 12), Brushes.Red, new System.Drawing.Point(1, 1));
                        g.Dispose();
                    }
                    graphic.Dispose();
                }
            }
            break;
            }

            pictureBox1.Image = video;
        }
Exemplo n.º 24
0
        private void doWork(object o)
        {
            var data = o as WorkData;

            lock (dwlock)
            {
                using (var filteredImage = new Bitmap(data.Blob))
                {
                    colorFiltering.ApplyInPlace(filteredImage);

                    blobCounter.ProcessImage(filteredImage);
                }

                if (blobCounter.ObjectsCount == 0)
                {
                    return;
                }

                var listBlobs = new List <WorkData>();

                var rects = blobCounter.GetObjectsRectangles();

                foreach (Rectangle r in rects)
                {
                    Rectangle rct = new Rectangle(
                        r.X + 1, r.Y + 1, r.Width - 2, r.Height - 4
                        );

                    Bitmap blobBmp = data.Blob.Clone(rct, PixelFormat.Format8bppIndexed);

                    var info = new WorkData
                    {
                        Blob = blobBmp
                    };

                    listBlobs.Add(info);
                }

                RaiseBlobsFound(listBlobs);
            }
        }
Exemplo n.º 25
0
        private void button4_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < 305; i++)
            {
                Bitmap image    = (Bitmap)System.Drawing.Image.FromFile("C:\\Users\\Halil\\Desktop\\frames\\image" + i + ".jpg");
                Bitmap resim    = new Bitmap(image);
                Bitmap resimson = new Bitmap(image);

                ColorFiltering filter = new ColorFiltering();

                filter.Red = new IntRange(40, 87);

                filter.Green = new IntRange(43, 85);

                filter.Blue = new IntRange(63, 95);

                filter.ApplyInPlace(resim);
                nesnebul(resim, i, resimson);
            }
            MessageBox.Show("Yeni Resimler Oluşturuldu");
            button3.Enabled = true;
        }
Exemplo n.º 26
0
        public Boolean ContainOrange(Bitmap bitmap)
        {
            ColorFiltering RedFilter = new ColorFiltering();

            RedFilter.Red   = new IntRange(100, 255);
            RedFilter.Green = new IntRange(0, 100);
            RedFilter.Blue  = new IntRange(0, 100);
            RedFilter.ApplyInPlace(bitmap);
            AForge.Imaging.BlobCounter blobCounterGreen = new AForge.Imaging.BlobCounter();

            blobCounterGreen.FilterBlobs = true;
            blobCounterGreen.MinHeight   = 5;
            blobCounterGreen.MinWidth    = 5;
            blobCounterGreen.ProcessImage(bitmap);
            AForge.Imaging.Blob[] blobsGreen        = blobCounterGreen.GetObjectsInformation();
            SimpleShapeChecker    shapeCheckerGreen = new SimpleShapeChecker();

            if (blobsGreen.Length > 0)
            {
                return(true);
            }
            return(false);
        }
Exemplo n.º 27
0
        public List <List <System.Drawing.Point> > GetEdges()
        {
            // lock image
            BitmapData bitmapData = bitmap.LockBits(
                new Rectangle(0, 0, bitmap.Width, bitmap.Height),
                ImageLockMode.ReadWrite, bitmap.PixelFormat);

            // step 1 - turn background to black
            ColorFiltering colorFilter = new ColorFiltering();

            colorFilter.Red              = new IntRange(0, 64);
            colorFilter.Green            = new IntRange(0, 64);
            colorFilter.Blue             = new IntRange(0, 64);
            colorFilter.FillOutsideRange = false;

            colorFilter.ApplyInPlace(bitmapData);

            // step 2 - locating objects
            BlobCounter blobCounter = new BlobCounter();

            blobCounter.FilterBlobs = true;
            blobCounter.MinHeight   = 5;
            blobCounter.MinWidth    = 5;

            blobCounter.ProcessImage(bitmapData);
            Blob[] blobs = blobCounter.GetObjectsInformation();
            bitmap.UnlockBits(bitmapData);
            List <List <System.Drawing.Point> > edges = new List <List <System.Drawing.Point> >();

            for (int i = 0; i < blobs.Length; i++)
            {
                List <IntPoint>             edgePoints       = blobCounter.GetBlobsEdgePoints(blobs[i]);
                List <System.Drawing.Point> edgePointsNormal = ToPointsArray(edgePoints);
                edges.Add(edgePointsNormal);
            }
            return(edges);
        }
        //*****************************************

        void cam_goruntu_new_frame(object sender, NewFrameEventArgs eventArgs)
        {
            Bitmap image  = (Bitmap)eventArgs.Frame.Clone();
            Bitmap image1 = (Bitmap)eventArgs.Frame.Clone();

            pictureBox1.Image = image;

            if (radioButton1.Checked == true)
            {
                ColorFiltering filter = new ColorFiltering();
                filter.Red   = new IntRange(255, 0);
                filter.Green = new IntRange(0, 75);
                filter.Blue  = new IntRange(0, 75);
                filter.ApplyInPlace(image1);
                nesnebul(image1);
            }

            if (radioButton2.Checked == true)
            {
                ColorFiltering filter = new ColorFiltering();
                filter.Red   = new IntRange(0, 75);
                filter.Green = new IntRange(0, 75);
                filter.Blue  = new IntRange(100, 255);
                filter.ApplyInPlace(image1);
                nesnebul(image1);
            }

            if (radioButton3.Checked == true)
            {
                ColorFiltering filter = new ColorFiltering();
                filter.Red   = new IntRange(80, 255);
                filter.Green = new IntRange(80, 255);
                filter.Blue  = new IntRange(30, 80);
                filter.ApplyInPlace(image1);
                nesnebul(image1);
            }
        }
        public static Bitmap PrepareForObjectDetection(this System.Drawing.Image bmpOriginalImage, int whiteLevel, bool overrideWhite)
        {
            Bitmap bmp = (Bitmap)bmpOriginalImage.Clone();

            ColorFiltering colorFilter = new ColorFiltering();

            int white = whiteLevel;

            if (!overrideWhite)
            {
                white = PreprocessingHelper.GetWhiteLevel(bmp);
            }

            colorFilter.Red              = new IntRange(0, white / 3);
            colorFilter.Green            = new IntRange(0, white / 3);
            colorFilter.Blue             = new IntRange(0, white / 3);
            colorFilter.FillOutsideRange = true;

            colorFilter.FillColor = new RGB(Color.White);
            colorFilter.ApplyInPlace(bmp);

            ExtractChannel extract_channel = new ExtractChannel(0);

            bmp = extract_channel.Apply(bmp);

            Invert invert = new Invert();

            invert.ApplyInPlace(bmp);

            Threshold threshholdFilter = new Threshold(10);

            threshholdFilter.ApplyInPlace(bmp);

            bmp = bmp.Clone(new Rectangle(0, 0, bmp.Width, bmp.Height), PixelFormat.Format24bppRgb);

            return(bmp);
        }
Exemplo n.º 30
0
        /// <summary>
        /// The ColorFilter is applied with the ColorRange from the background
        /// </summary>
        public void FilterImgBgSelect()
        {
            // CREATE NEW BITMAP IMAGE
            this.bitmap = new Bitmap((Bitmap)pictureBox.Image);

            // LOCK IMAGE
            this.bitmapData = bitmap.LockBits(
                new Rectangle(0, 0, bitmap.Width, bitmap.Height),
                ImageLockMode.ReadWrite, bitmap.PixelFormat);

            // CREATE NEW FILTER
            ColorFiltering colorFilter = new ColorFiltering();

            // SET COLOR RANGE FOR BACKGROUND
            colorFilter.Red   = RangeRed;
            colorFilter.Green = RangeGreen;
            colorFilter.Blue  = RangeBlue;

            // DONT FILL OUTSIDE RANGE
            colorFilter.FillOutsideRange = false;

            // APPLY FILTER ON IMAGE
            colorFilter.ApplyInPlace(bitmapData);
        }