示例#1
0
        public Bitmap ToAdaptiveSmoothing(Bitmap Im)
        {
            AForge.Imaging.Filters.AdaptiveSmoothing Img = new AdaptiveSmoothing();
            Bitmap bmImage = AForge.Imaging.Image.Clone(new Bitmap(Im), PixelFormat.Format24bppRgb);

            return(Img.Apply(bmImage));
        }
示例#2
0
        private void Adaptive_Filter_Process()
        {
            var filter = new AdaptiveSmoothing();

            AddLog("filtr AdaptiveSmoothing na " + _view.CurrentFile);
            filter.ApplyInPlace(_image);
            Thread.Sleep(200);
        }
示例#3
0
        private void Adaptive_Filter_Process(object callback)
        {
            var filter = new AdaptiveSmoothing();

            AddLog("filtr AdaptiveSmoothing na " + _view.CurrentFile);
            filter.ApplyInPlace(_image);
            Thread.Sleep(200);
            ((AutoResetEvent)callback).Set();
        }
示例#4
0
        public static Bitmap AdaptiveSmoothing(Bitmap bmp)
        {
            // create filter
            AdaptiveSmoothing filter = new AdaptiveSmoothing();

            // apply the filter
            filter.ApplyInPlace(bmp);
            return(bmp);
        }
示例#5
0
        public mSmoothAdaptive(double factor)
        {
            BitmapType = mFilter.BitmapTypes.Rgb24bpp;

            Factor = factor;

            Effect        = new AdaptiveSmoothing();
            Effect.Factor = Factor;

            filter = Effect;
        }
示例#6
0
        public ReversalGenesis(int n)
            : base(n)
        {
            T3    = new AdaptiveSmoothing(n);
            T32   = new AdaptiveSmoothing(5 * n);
            CCI   = new CCI(n);
            WILLR = new WilliamsR(n);

            Gann = new GannHiLo(n);
            KST  = new KST();
            CH   = new Chaikin();
            BB   = new BollingerBands(n);
            UO   = new UltimateOscillator(n, 2 * n, 3 * n);
        }
示例#7
0
        Pen greenPen  = new Pen(Color.Green, 7);  //is answer


        //
        public Form1()
        {
            InitializeComponent();

            /*---filters---*/
            brightnessFilter = new BrightnessCorrection(brightnessLevel);
            invertFilter     = new Invert();
            smoothFilter     = new AdaptiveSmoothing(smoothFactor);
            thresholdFilter  = new Threshold(thresholdLevel);
            blobFilter       = new BlobsFiltering();

            /*---tools---*/
            blobCounter  = new BlobCounter();
            shapeChecker = new SimpleShapeChecker();
        }
示例#8
0
        public Genesis(int n) : base(n)
        {
            T3    = new AdaptiveSmoothing(n);
            T32   = new AdaptiveSmoothing(5 * n);
            CCI   = new CCI(n);
            WILLR = new WilliamsR(n);

            Gann     = new GannHiLo(n);
            KST      = new KST();
            CH       = new Chaikin();
            BB       = new BollingerBands();
            QChannel = new QSPolyChannel();
            FI       = new ForceIndex(30);
            PFE      = new PFE(150);
            RWI      = new RWI(30);
            AC       = new AC(10);
        }
 public void AdaptiveClickHandler(object sender, EventArgs e)
 {
     if (image != null)
     {
         Bitmap            img    = new Bitmap(path);
         AdaptiveSmoothing filter = new AdaptiveSmoothing();
         img = filter.Apply(img);
         // ImageEView
         if (mov != null)
         {
             this.WorkItem.Workspaces[WorkspaceNames.TabWorkspace].Close(mov);
         }
         mov = this.WorkItem.SmartParts.AddNew <ImageEView>();
         mov.panAndZoomPictureBox1.Image = img;
         SmartPartInfo spi =
             new SmartPartInfo("Adaptive", "MyOwnDescription");
         this.WorkItem.Workspaces[WorkspaceNames.TabWorkspace].Show(mov, spi);
     }
 }
        private void SharpenSmooth(object sender, DoWorkEventArgs e)
        {
            Bitmap raw_image = null;

            if (inRb.Checked)
            {
                raw_image = Accord.Imaging.Filters.Grayscale.CommonAlgorithms.BT709.Apply((Bitmap)input_PB.Image.Clone());
            }
            else if (outRb.Checked)
            {
                raw_image = (Bitmap)outputImageBox.Image.Clone();
            }
            if (sharpenRB.Checked)
            {
                var sharpen = new Sharpen();
                sharpen.Threshold = (Byte)threshVal.Value;
                UnmanagedImage r_img = UnmanagedImage.FromManagedImage(raw_image);
                outputImageBox.Image.Dispose();
                r_img = sharpen.Apply(r_img);
                outputImageBox.Image = r_img.ToManagedImage();
            }
            else if (smoothingRB.Checked)
            {
                var Smoothing = new AdaptiveSmoothing();
                Smoothing.Factor = (double)(threshVal.Value);
                UnmanagedImage r_img = UnmanagedImage.FromManagedImage(raw_image);
                outputImageBox.Image.Dispose();
                r_img = Smoothing.Apply(r_img);
                outputImageBox.Image = r_img.ToManagedImage();
            }
            else if (radioButton1.Checked)
            {
                var Invert = new Invert();

                UnmanagedImage r_img = UnmanagedImage.FromManagedImage(raw_image);
                outputImageBox.Image.Dispose();
                r_img = Invert.Apply(r_img);
                outputImageBox.Image = r_img.ToManagedImage();
            }
        }
示例#11
0
        public Bitmap Detect(Bitmap bitmap)
        {
            Bitmap grayscaleBitmap = Grayscale.CommonAlgorithms.BT709.Apply(bitmap);

            IFilter smoothingFilter = null;

            switch (_smoothMode)
            {
            case "None": smoothingFilter = null; break;

            case "Mean": smoothingFilter = new Mean(); break;

            case "Median": smoothingFilter = new Median(); break;

            case "Conservative": smoothingFilter = new ConservativeSmoothing(); break;

            case "Adaptive": smoothingFilter = new AdaptiveSmoothing(); break;

            case "Bilateral": smoothingFilter = new BilateralSmoothing(); break;
            }
            Bitmap smoothBitmap = smoothingFilter != null?smoothingFilter.Apply(grayscaleBitmap) : grayscaleBitmap;

            IFilter edgeFilter = null;

            switch (_edgeMode)
            {
            case "Homogenity": edgeFilter = new HomogenityEdgeDetector(); break;

            case "Difference": edgeFilter = new DifferenceEdgeDetector(); break;

            case "Sobel": edgeFilter = new SobelEdgeDetector(); break;

            case "Canny": edgeFilter = new CannyEdgeDetector(); break;
            }
            Bitmap edgeBitmap = edgeFilter != null?edgeFilter.Apply(smoothBitmap) : smoothBitmap;

            IFilter threshholdFilter = new Threshold(_threshold);
            Bitmap  thresholdBitmap  = _threshold == 0 ? edgeBitmap : threshholdFilter.Apply(edgeBitmap);

            BlobCounter blobCounter = new BlobCounter();

            blobCounter.FilterBlobs = true;
            blobCounter.MinHeight   = _minHeight;
            blobCounter.MinWidth    = _minWidth;
            blobCounter.ProcessImage(thresholdBitmap);
            Blob[] blobs = blobCounter.GetObjectsInformation();

            Bitmap   outputBitmap   = new Bitmap(thresholdBitmap.Width, thresholdBitmap.Height, PixelFormat.Format24bppRgb);
            Graphics bitmapGraphics = Graphics.FromImage(outputBitmap);
            Bitmap   inputBitmap    = null;

            switch (_drawMode)
            {
            case "Original": inputBitmap = bitmap; break;

            case "Grayscale": inputBitmap = grayscaleBitmap; break;

            case "Smooth": inputBitmap = smoothBitmap; break;

            case "Edge": inputBitmap = edgeBitmap; break;

            case "Threshold": inputBitmap = thresholdBitmap; break;
            }
            if (inputBitmap != null)
            {
                bitmapGraphics.DrawImage(inputBitmap, 0, 0);
            }

            Pen nonConvexPen = new Pen(Color.Red, 2);
            Pen nonRectPen   = new Pen(Color.Orange, 2);
            Pen cardPen      = new Pen(Color.Blue, 2);

            SimpleShapeChecker shapeChecker  = new SimpleShapeChecker();
            List <IntPoint>    cardPositions = new List <IntPoint>();

            for (int i = 0; i < blobs.Length; i++)
            {
                List <IntPoint> edgePoints = blobCounter.GetBlobsEdgePoints(blobs[i]);
                List <IntPoint> corners;

                if (shapeChecker.IsConvexPolygon(edgePoints, out corners))
                {
                    PolygonSubType subType = shapeChecker.CheckPolygonSubType(corners);

                    if ((subType == PolygonSubType.Parallelogram || subType == PolygonSubType.Rectangle) && corners.Count == 4)
                    {
                        // Check if its sideways, if so rearrange the corners so it's vertical.
                        RearrangeCorners(corners);

                        // Prevent detecting the same card twice by comparing distance against other detected cards.
                        bool sameCard = false;
                        foreach (IntPoint point in cardPositions)
                        {
                            if (corners[0].DistanceTo(point) < _minDistance)
                            {
                                sameCard = true;
                                break;
                            }
                        }
                        if (sameCard)
                        {
                            continue;
                        }

                        // Hack to prevent it from detecting smaller sections of the card instead of the whole card.
                        if (GetArea(corners) < _minArea)
                        {
                            continue;
                        }

                        cardPositions.Add(corners[0]);

                        bitmapGraphics.DrawPolygon(cardPen, ToPointsArray(corners));
                    }
                    else
                    {
                        foreach (IntPoint point in edgePoints.Take(300))
                        {
                            bitmapGraphics.DrawEllipse(nonRectPen, point.X, point.Y, 1, 1);
                        }
                    }
                }
                else
                {
                    foreach (IntPoint point in edgePoints.Take(300))
                    {
                        bitmapGraphics.DrawEllipse(nonConvexPen, point.X, point.Y, 1, 1);
                    }
                }
            }

            bitmapGraphics.Dispose();
            nonConvexPen.Dispose();
            nonRectPen.Dispose();
            cardPen.Dispose();

            return(outputBitmap);
        }