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)); }
private void Adaptive_Filter_Process() { var filter = new AdaptiveSmoothing(); AddLog("filtr AdaptiveSmoothing na " + _view.CurrentFile); filter.ApplyInPlace(_image); Thread.Sleep(200); }
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(); }
public static Bitmap AdaptiveSmoothing(Bitmap bmp) { // create filter AdaptiveSmoothing filter = new AdaptiveSmoothing(); // apply the filter filter.ApplyInPlace(bmp); return(bmp); }
public mSmoothAdaptive(double factor) { BitmapType = mFilter.BitmapTypes.Rgb24bpp; Factor = factor; Effect = new AdaptiveSmoothing(); Effect.Factor = Factor; filter = Effect; }
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); }
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(); }
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(); } }
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); }