/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { IGH_Goo goo = null; Image image = new Image(); if (!DA.GetData(0, ref goo)) { return; } if (!goo.TryGetImage(ref image)) { return; } bool flipX = false; DA.GetData(1, ref flipX); bool flipY = false; DA.GetData(2, ref flipY); Filter filter = new Af.Mirror(flipY, flipX); image.Filters.Add(new Af.Mirror(flipY, flipX)); DA.SetData(0, image); DA.SetData(1, filter); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { IGH_Goo goo = null; Image image = new Image(); if (!DA.GetData(0, ref goo)) { return; } if (!goo.TryGetImage(ref image)) { return; } double angle = 0; DA.GetData(1, ref angle); double depth = 0; DA.GetData(2, ref depth); bool toPolar = true; DA.GetData(3, ref toPolar); Filter filter = new Af.Polar(toPolar, depth, angle, false, false); image.Filters.Add(new Af.Polar(toPolar, depth, angle, false, false)); DA.SetData(0, image); DA.SetData(1, filter); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { IGH_Goo goo = null; Image image = new Image(); if (!DA.GetData(0, ref goo)) { return; } if (!goo.TryGetImage(ref image)) { return; } int mode = 0; DA.GetData(1, ref mode); Filter filter = new Extract((Extract.Modes)mode); image.Filters.Add(new Extract((Extract.Modes)mode)); message = ((Extract.Modes)mode).ToString(); UpdateMessage(); DA.SetData(0, image); DA.SetData(1, filter); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { IGH_Goo goo = null; Image image = new Image(); if (!DA.GetData(0, ref goo)) { return; } if (!goo.TryGetImage(ref image)) { return; } Color color = Color.Black; DA.GetData(1, ref color); Filter filter = new Af.Shrink(color); image.Filters.Add(new Af.Shrink(color)); DA.SetData(0, image); DA.SetData(1, filter); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { IGH_Goo goo = null; Image image = new Image(); if (!DA.GetData(0, ref goo)) { return; } if (!goo.TryGetImage(ref image)) { return; } int mode = 0; DA.GetData(1, ref mode); int width = 100; DA.GetData(2, ref width); int height = 100; DA.GetData(3, ref height); Filter filter = new Af.Resize(width, height, (Af.Resize.Modes)mode); image.Filters.Add(new Af.Resize(width, height, (Af.Resize.Modes)mode)); DA.SetData(0, image); DA.SetData(1, filter); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { IGH_Goo goo = null; Image image = new Image(); if (!DA.GetData(0, ref goo)) { return; } if (!goo.TryGetImage(ref image)) { return; } Rectangle3d region = new Rectangle3d(); DA.GetData(1, ref region); bool original = false; DA.GetData(2, ref original); Color color = Color.Black; DA.GetData(3, ref color); Filter filter = new Af.Crop(original, color, region.ToDrawingRect(image.Bitmap.Height)); image.Filters.Add(new Af.Crop(original, color, region.ToDrawingRect(image.Bitmap.Height))); DA.SetData(0, image); DA.SetData(1, filter); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { IGH_Goo goo = null; Image image = new Image(); if (!DA.GetData(0, ref goo)) { return; } if (!goo.TryGetImage(ref image)) { return; } int source = 0; DA.GetData(1, ref source); int target = 0; DA.GetData(2, ref target); image.SwapChannel((Image.Channels)source, (Image.Channels)target); DA.SetData(0, new Image(image.Bitmap)); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { IGH_Goo goo = null; Image image = new Image(); if (!DA.GetData(0, ref goo)) { return; } if (!goo.TryGetImage(ref image)) { return; } Point3d point = new Point3d(100, 100, 0); DA.GetData(1, ref point); Color color = Color.Black; DA.GetData(2, ref color); point.Y = -point.Y; Filter filter = new Af.Move(color, point.ToDrawingPoint()); image.Filters.Add(new Af.Move(color, point.ToDrawingPoint())); DA.SetData(0, image); DA.SetData(1, filter); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { IGH_Goo goo = null; Image image = new Image(); if (!DA.GetData(0, ref goo)) { return; } if (!goo.TryGetImage(ref image)) { return; } int alpha = 0; DA.GetData(1, ref alpha); int red = 1; DA.GetData(2, ref red); int green = 2; DA.GetData(3, ref green); int blue = 3; DA.GetData(4, ref blue); image.SwapChannels((Image.Channels)alpha, (Image.Channels)red, (Image.Channels)green, (Image.Channels)blue); DA.SetData(0, image); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { IGH_Goo goo = null; Image image = new Image(); if (!DA.GetData(0, ref goo)) { return; } if (!goo.TryGetImage(ref image)) { return; } Interval numValA = new Interval(1, 100); DA.GetData(1, ref numValA); Interval numValB = new Interval(1, 100); DA.GetData(2, ref numValB); bool unique = false; DA.GetData(3, ref unique); bool blobs = false; DA.GetData(4, ref blobs); bool coupled = false; DA.GetData(5, ref coupled); Filter filter = new Filter(); if (unique) { filter = new BlobsUnique(numValA.ToDomain(), numValB.ToDomain(), blobs, coupled); image.Filters.Add(new BlobsUnique(numValA.ToDomain(), numValB.ToDomain(), blobs, coupled)); } else { filter = new BlobsFilter(numValA.ToDomain(), numValB.ToDomain(), coupled); image.Filters.Add(new BlobsFilter(numValA.ToDomain(), numValB.ToDomain(), coupled)); } DA.SetData(0, image); DA.SetData(1, filter); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { IGH_Goo goo = null; Image image = new Image(); if (!DA.GetData(0, ref goo)) { return; } if (!goo.TryGetImage(ref image)) { return; } int loops = 0; DA.GetData(1, ref loops); DA.SetData(0, image.GetFilteredBitmap(loops)); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { IGH_Goo goo = null; Image image = new Image(); if (!DA.GetData(0, ref goo)) { return; } if (!goo.TryGetImage(ref image)) { return; } int mode = 0; DA.GetData(1, ref mode); double scale = 1.0; DA.GetData(2, ref scale); int width = (int)(image.Bitmap.Width * scale); int height = (int)(image.Bitmap.Height * scale); if (width < 10) { width = 10; } if (height < 10) { height = 10; } Filter filter = new Af.Resize(width, height, (Af.Resize.Modes)mode); image.Filters.Add(new Af.Resize(width, height, (Af.Resize.Modes)mode)); DA.SetData(0, image); DA.SetData(1, filter); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { IGH_Goo goo = null; Image image = new Image(); if (!DA.GetData(0, ref goo)) { return; } if (!goo.TryGetImage(ref image)) { return; } List <Filter> filters = new List <Filter>(); DA.GetDataList <Filter>(1, filters); image.Filters.AddRange(filters); DA.SetData(0, image); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { IGH_Goo goo = null; Image image = new Image(); if (!DA.GetData(0, ref goo)) { return; } if (!goo.TryGetImage(ref image)) { return; } int mode = 0; DA.GetData(1, ref mode); double angle = 0; DA.GetData(2, ref angle); bool original = false; DA.GetData(3, ref original); Color color = Color.Black; DA.GetData(4, ref color); Filter filter = new Af.Rotate(angle, original, color, (Af.Rotate.Modes)mode); image.Filters.Add(new Af.Rotate(angle, original, color, (Af.Rotate.Modes)mode)); DA.SetData(0, image); DA.SetData(1, filter); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { IGH_Goo goo = null; Image image = new Image(); if (!DA.GetData(0, ref goo)) { return; } if (!goo.TryGetImage(ref image)) { return; } int mode = 0; DA.GetData(1, ref mode); double numValA = 0.5; DA.GetData(2, ref numValA); double numValB = 0.5; DA.GetData(3, ref numValB); int numValC = 1; DA.GetData(4, ref numValC); Filter filter = new Filter(); int[] indices = new int[] { 2, 3, 4 }; switch ((FilterModes)mode) { case FilterModes.Otsu: filter = new Otsu(); ClearParameters(indices); image.Filters.Add(new Otsu()); break; case FilterModes.SIS: filter = new SIS(); ClearParameters(indices); image.Filters.Add(new SIS()); break; case FilterModes.Bradley: SetParameter(2, "B", "Brightness", "Brightness difference limit"); SetParameter(3, "S", "Size", "Window size"); SetParameter(4); filter = new Bradley(numValA, (int)numValB); image.Filters.Add(new Bradley(numValA, (int)numValB)); break; case FilterModes.Iterative: SetParameter(2, "M", "Minimum", "Minimum error value"); SetParameter(3, "T", "Threshold", "Threshold value"); SetParameter(4); filter = new Iterative(numValA, numValB); image.Filters.Add(new Iterative(numValA, numValB)); break; case FilterModes.Nilback: SetParameter(2, "C", "C", "Mean offset C"); SetParameter(3, "K", "K", "Parameter K"); SetParameter(4, "R", "Radius", "Filter convolution radius"); filter = new Nilback(numValA, numValB, numValC); image.Filters.Add(new Nilback(numValA, numValB, numValC)); break; case FilterModes.Sauvola: SetParameter(2, "R", "R", "Dynamic range"); SetParameter(3, "K", "K", "Parameter K"); SetParameter(4, "R", "Radius", "Filter convolution radius"); filter = new Sauvola(numValA, numValB, numValC); image.Filters.Add(new Sauvola(numValA, numValB, numValC)); break; case FilterModes.WolfJolion: SetParameter(2, "R", "R", "Dynamic range"); SetParameter(3, "K", "K", "Parameter K"); SetParameter(4, "R", "Radius", "Filter convolution radius"); filter = new WolfJolion(numValA, numValB, numValC); image.Filters.Add(new WolfJolion(numValA, numValB, numValC)); break; } message = ((FilterModes)mode).ToString(); UpdateMessage(); DA.SetData(0, image); DA.SetData(1, filter); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { IGH_Goo goo = null; Image image = new Image(); if (!DA.GetData(0, ref goo)) { return; } if (!goo.TryGetImage(ref image)) { return; } int mode = 0; DA.GetData(1, ref mode); Interval valA = new Interval(0, 1); DA.GetData(2, ref valA); Interval valB = new Interval(0, 1); DA.GetData(3, ref valB); Interval valC = new Interval(0, 1); DA.GetData(4, ref valC); bool flip = true; DA.GetData(5, ref flip); Color color = Color.Black; DA.GetData(6, ref color); Filter filter = new Filter(); switch ((FilterModes)mode) { case FilterModes.Channel: SetParameter(2, "R", "Red", "[0-1] Unitized adjustment value"); SetParameter(3, "G", "Green", "[0-1] Unitized adjustment value"); SetParameter(4, "B", "Blue", "[0-1] Unitized adjustment value"); SetParameter(5, "F", "Outside", "Flip between inside and outside range"); filter = new Channel(valA.ToDomain(), valB.ToDomain(), valC.ToDomain(), flip); image.Filters.Add(new Channel(valA.ToDomain(), valB.ToDomain(), valC.ToDomain(), flip)); break; case FilterModes.HSL: SetParameter(2, "H", "Hue", "[0-1] Unitized adjustment value"); SetParameter(3, "S", "Saturation", "[0-1] Unitized adjustment value"); SetParameter(4, "L", "Luminance", "[0-1] Unitized adjustment value"); SetParameter(5, "F", "Outside", "Flip between inside and outside range"); SetParameter(6, "C", "Color", "Replacement Color"); filter = new ColorFilter(valA.ToDomain(), valB.ToDomain(), valC.ToDomain(), flip, color); image.Filters.Add(new ColorFilter(valA.ToDomain(), valB.ToDomain(), valC.ToDomain(), flip, color)); break; case FilterModes.RGB: SetParameter(2, "R", "Red", "[0-1] Unitized adjustment value"); SetParameter(3, "G", "Green", "[0-1] Unitized adjustment value"); SetParameter(4, "B", "Blue", "[0-1] Unitized adjustment value"); SetParameter(5, "F", "Outside", "Flip between inside and outside range"); SetParameter(6, "C", "Color", "Replacement Color"); filter = new HSL(valA.ToDomain(), valB.ToDomain(), valC.ToDomain(), flip, color); image.Filters.Add(new HSL(valA.ToDomain(), valB.ToDomain(), valC.ToDomain(), flip, color)); break; case FilterModes.YCbCr: SetParameter(2, "Y", "Y", "[0-1] Unitized adjustment value"); SetParameter(3, "Cb", "Cb", "[0-1] Unitized adjustment value"); SetParameter(4, "Cr", "Cr", "[0-1] Unitized adjustment value"); SetParameter(5, "F", "Outside", "Flip between inside and outside range"); SetParameter(6, "C", "Color", "Replacement Color"); filter = new YCbCr(valA.ToDomain(), valB.ToDomain(), valC.ToDomain(), flip, color); image.Filters.Add(new YCbCr(valA.ToDomain(), valB.ToDomain(), valC.ToDomain(), flip, color)); break; } message = ((FilterModes)mode).ToString(); UpdateMessage(); DA.SetData(0, image); DA.SetData(1, filter); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { IGH_Goo goo = null; Image image = new Image(); if (!DA.GetData(0, ref goo)) { return; } if (!goo.TryGetImage(ref image)) { return; } int mode = 0; DA.GetData(1, ref mode); bool valueA = false; DA.GetData(2, ref valueA); int valueB = 1; DA.GetData(3, ref valueB); int valueC = 1; DA.GetData(4, ref valueC); Filter filter = new Filter(); switch ((FilterModes)mode) { case FilterModes.Closing: SetParameter(2); SetParameter(3); SetParameter(4); filter = new Closing(); image.Filters.Add(new Closing()); break; case FilterModes.Dilation: SetParameter(2); SetParameter(3); SetParameter(4); filter = new Dilation(); image.Filters.Add(new Dilation()); break; case FilterModes.DilationBinary: SetParameter(2); SetParameter(3); SetParameter(4); filter = new DilationBinary(); image.Filters.Add(new DilationBinary()); break; case FilterModes.Erosion: SetParameter(2); SetParameter(3); SetParameter(4); filter = new Erosion(); image.Filters.Add(new Erosion()); break; case FilterModes.ErosionBinary: SetParameter(2); SetParameter(3); SetParameter(4); filter = new ErosionBinary(); image.Filters.Add(new ErosionBinary()); break; case FilterModes.HatBottom: SetParameter(2); SetParameter(3); SetParameter(4); filter = new HatBottom(); image.Filters.Add(new HatBottom()); break; case FilterModes.HatTop: SetParameter(2); SetParameter(3); SetParameter(4); filter = new HatTop(); image.Filters.Add(new HatTop()); break; case FilterModes.Opening: SetParameter(2); SetParameter(3); SetParameter(4); filter = new Opening(); image.Filters.Add(new Opening()); break; case FilterModes.Skeletonization: SetParameter(2); SetParameter(3); SetParameter(4); filter = new Skeletonization(); image.Filters.Add(new Skeletonization()); break; case FilterModes.SkeletonizationZhangSuen: SetParameter(2); SetParameter(3); SetParameter(4); filter = new SkeletonizationZhangSuen(); image.Filters.Add(new SkeletonizationZhangSuen()); break; case FilterModes.HorizontalBands: SetParameter(2, "B", "Borders", "Process gaps"); SetParameter(3, "G", "Gap", "The pixel gap size"); SetParameter(4); filter = new BandsHorizontal(valueB, valueA); image.Filters.Add(new BandsHorizontal(valueB, valueA)); break; case FilterModes.VerticalBands: SetParameter(2, "B", "Borders", "Process gaps"); SetParameter(3, "G", "Gap", "The pixel gap size"); SetParameter(4); filter = new BandsVertical(valueB, valueA); image.Filters.Add(new BandsVertical(valueB, valueA)); break; case FilterModes.FillHoles: SetParameter(2, "B", "Borders", "Process gaps"); SetParameter(3, "W", "Width", "The pixel threshold"); SetParameter(4, "H", "Height", "The pixel threshold"); filter = new FillHoles(valueC, valueB, valueA); image.Filters.Add(new FillHoles(valueC, valueB, valueA)); break; } message = ((FilterModes)mode).ToString(); UpdateMessage(); DA.SetData(0, image); DA.SetData(1, filter); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { IGH_Goo goo = null; Image image = new Image(); if (!DA.GetData(0, ref goo)) { return; } if (!goo.TryGetImage(ref image)) { return; } int mode = 0; DA.GetData(1, ref mode); Interval numValA = new Interval(0, 1); DA.GetData(2, ref numValA); Interval numValB = new Interval(0, 1); DA.GetData(3, ref numValB); Interval numValC = new Interval(0, 1); DA.GetData(4, ref numValC); Interval numValD = new Interval(0, 1); DA.GetData(5, ref numValD); Interval numValE = new Interval(0, 1); DA.GetData(6, ref numValE); Interval numValF = new Interval(0, 1); DA.GetData(7, ref numValF); Filter filter = new Filter(); switch ((FilterModes)mode) { case FilterModes.HSL: SetParameter(2, "Si", "Saturation In", "Domain [0,1]"); SetParameter(3, "So", "Saturation Out", "Domain [0,1]"); SetParameter(4, "Li", "Luminance In", "Domain [0,1]"); SetParameter(5, "Lo", "Luminance Out", "Domain [0,1]"); SetParameter(6, "-", "Not Used", "Parameter not used by this filter"); SetParameter(7, "-", "Not Used", "Parameter not used by this filter"); filter = new HSL(numValA.ToDomain(), numValB.ToDomain(), numValC.ToDomain(), numValD.ToDomain()); image.Filters.Add(new HSL(numValA.ToDomain(), numValB.ToDomain(), numValC.ToDomain(), numValD.ToDomain())); break; case FilterModes.RGB: SetParameter(2, "Ri", "Red In", "Domain [0,1]"); SetParameter(3, "Ro", "Red Out", "Domain [0,1]"); SetParameter(4, "Gi", "Green In", "Domain [0,1]"); SetParameter(5, "Go", "Green Out", "Domain [0,1]"); SetParameter(6, "Bi", "Blue In", "Domain [0,1]"); SetParameter(7, "Bo", "Blue Out", "Domain [0,1]"); filter = new RGB(numValA.ToDomain(), numValB.ToDomain(), numValC.ToDomain(), numValD.ToDomain(), numValE.ToDomain(), numValF.ToDomain()); image.Filters.Add(new RGB(numValA.ToDomain(), numValB.ToDomain(), numValC.ToDomain(), numValD.ToDomain(), numValE.ToDomain(), numValF.ToDomain())); break; case FilterModes.YCbCr: SetParameter(2, "Ri", "Red In", "Domain [0,1]"); SetParameter(3, "Ro", "Red Out", "Domain [0,1]"); SetParameter(4, "Yi", "Y In", "Domain [0,1]"); SetParameter(5, "Yo", "Y Out", "Domain [0,1]"); SetParameter(6, "Bi", "Blue In", "Domain [0,1]"); SetParameter(7, "Bo", "Blue Out", "Domain [0,1]"); filter = new YCbCr(numValC.ToDomain(), numValD.ToDomain(), numValE.ToDomain(), numValF.ToDomain(), numValA.ToDomain(), numValB.ToDomain()); image.Filters.Add(new YCbCr(numValC.ToDomain(), numValD.ToDomain(), numValE.ToDomain(), numValF.ToDomain(), numValA.ToDomain(), numValB.ToDomain())); break; } message = ((FilterModes)mode).ToString(); UpdateMessage(); DA.SetData(0, image); DA.SetData(1, filter); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { IGH_Goo goo = null; Image image = new Image(); if (!DA.GetData(0, ref goo)) { return; } if (!goo.TryGetImage(ref image)) { return; } int mode = 0; DA.GetData(1, ref mode); IGH_Goo gooA = null; Bitmap overlay = new Bitmap(100, 100); if (DA.GetData(2, ref gooA)) { if (goo.TryGetBitmap(ref overlay)) { ; } } double numVal = 1.0; DA.GetData(3, ref numVal); Filter filter = new Filter(); switch ((FilterModes)mode) { case FilterModes.Add: filter = new Add(overlay); image.Filters.Add(new Add(overlay)); break; case FilterModes.Subtract: filter = new Subtract(overlay); image.Filters.Add(new Subtract(overlay)); break; case FilterModes.Multiply: filter = new Multiply(overlay); image.Filters.Add(new Multiply(overlay)); break; case FilterModes.Divide: filter = new Divide(overlay); image.Filters.Add(new Divide(overlay)); break; case FilterModes.Euclidean: filter = new Euclidean(overlay, (int)numVal); image.Filters.Add(new Euclidean(overlay, (int)numVal)); break; case FilterModes.FlatField: filter = new FlatField(overlay); image.Filters.Add(new FlatField(overlay)); break; case FilterModes.Intersect: filter = new Intersect(overlay); image.Filters.Add(new Intersect(overlay)); break; case FilterModes.Merge: filter = new Merge(overlay); image.Filters.Add(new Merge(overlay)); break; case FilterModes.Morph: filter = new Morph(overlay, numVal); image.Filters.Add(new Morph(overlay, numVal)); break; case FilterModes.MoveTowards: filter = new MoveTowards(overlay, (int)numVal); image.Filters.Add(new MoveTowards(overlay, (int)numVal)); break; case FilterModes.Simple: filter = new Simple(overlay, (int)numVal); image.Filters.Add(new Simple(overlay, (int)numVal)); break; } message = ((FilterModes)mode).ToString(); UpdateMessage(); DA.SetData(0, image); DA.SetData(1, filter); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { IGH_Goo goo = null; Image image = new Image(); if (!DA.GetData(0, ref goo)) { return; } if (!goo.TryGetImage(ref image)) { return; } int mode = 0; DA.GetData(1, ref mode); double numValA = 0; DA.GetData(2, ref numValA); double numValB = 0; DA.GetData(3, ref numValB); Filter filter = new Filter(); switch ((FilterModes)mode) { case FilterModes.Additive: SetParameter(2); SetParameter(3); filter = new Additive(); image.Filters.Add(new Additive()); break; case FilterModes.Daube: SetParameter(2, "S", "Size", "[0-1] Unitized adjustment value"); SetParameter(3); filter = new Daube(numValA); image.Filters.Add(new Daube(numValA)); break; case FilterModes.SaltPepper: SetParameter(2, "N", "Noise", "[0-1] Unitized adjustment value"); SetParameter(3); filter = new SaltPepper(numValA); image.Filters.Add(new SaltPepper(numValA)); break; case FilterModes.Jitter: SetParameter(2, "R", "Radius", "[0-1] Unitized adjustment value"); SetParameter(3); filter = new Jitter(numValA); image.Filters.Add(new Jitter(numValA)); break; case FilterModes.Kuwahara: SetParameter(2, "S", "Size", "[0-1] Unitized adjustment value"); SetParameter(3); filter = new Kuwahara(numValA); image.Filters.Add(new Kuwahara(numValA)); break; case FilterModes.Posterize: SetParameter(2, "I", "Interval", "[0-1] Unitized adjustment value"); SetParameter(3); filter = new Posterize(numValA); image.Filters.Add(new Posterize(numValA)); break; case FilterModes.GaussianBlur: SetParameter(2, "X", "Sigma", "[0-1] Unitized adjustment value"); SetParameter(3, "S", "Size", "[0-1] Unitized adjustment value"); filter = new GaussianBlur(numValA, numValB); image.Filters.Add(new GaussianBlur(numValA, numValB)); break; case FilterModes.Pixellate: SetParameter(2, "W", "Width", "[0-1] Unitized adjustment value"); SetParameter(3, "H", "Height", "[0-1] Unitized adjustment value"); filter = new Pixellate(numValA, numValB); image.Filters.Add(new Pixellate(numValA, numValB)); break; case FilterModes.Blur: SetParameter(2, "D", "Divisor", "[0-1] Unitized adjustment value"); SetParameter(3, "T", "Threshold", "[0-1] Unitized adjustment value"); filter = new Blur(numValA, numValB); image.Filters.Add(new Blur(numValA, numValB)); break; } message = ((FilterModes)mode).ToString(); UpdateMessage(); DA.SetData(0, image); DA.SetData(1, filter); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { IGH_Goo goo = null; Bitmap top = new Bitmap(100, 100); if (!DA.GetData(0, ref goo)) { return; } if (!goo.TryGetBitmap(ref top)) { return; } Mp.Layer topLayer = new Mp.Layer(top); IGH_Goo gooT = null; Bitmap bottom = new Bitmap(100, 100); if (!DA.GetData(1, ref gooT)) { return; } if (!gooT.TryGetBitmap(ref bottom)) { return; } Mp.Layer bottomLayer = new Mp.Layer(bottom); IGH_Goo gooM = null; Image img = new Image(); bool hasMask = false; Bitmap mask = new Bitmap(100, 100); if (DA.GetData(2, ref gooM)) { if (gooM.TryGetImage(ref img)) { hasMask = true; img.SwapChannel(Image.Channels.Luminance, Image.Channels.Alpha); mask = img.Bitmap; } } int blendMode = 0; DA.GetData(3, ref blendMode); double opacity = 1.0; DA.GetData(4, ref opacity); topLayer.BlendMode = (Mp.Layer.BlendModes)blendMode; topLayer.Opacity = 100 * opacity; if (hasMask) { topLayer.Mask = mask; } Mp.Composition composition = new Mp.Composition(); composition.Layers.Add(bottomLayer); composition.Layers.Add(topLayer); DA.SetData(0, new Image(composition.GetBitmap())); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { IGH_Goo goo = null; Image image = new Image(); if (!DA.GetData(0, ref goo)) { return; } if (!goo.TryGetImage(ref image)) { return; } int mode = 0; DA.GetData(1, ref mode); double numVal = 0.5; DA.GetData(2, ref numVal); Filter filter = new Filter(); switch ((FilterModes)mode) { case FilterModes.GrayWorld: SetParameter(2); filter = new GrayWorld(); break; case FilterModes.Histogram: SetParameter(2); filter = new Histogram(); break; case FilterModes.Invert: SetParameter(2); filter = new Invert(); break; case FilterModes.Stretch: SetParameter(2); filter = new Stretch(); break; case FilterModes.WhitePatch: SetParameter(2); filter = new WhitePatch(); break; case FilterModes.Sepia: SetParameter(2); filter = new Sepia(); break; case FilterModes.RGChromacity: SetParameter(2); filter = new RGChromacity(); break; case FilterModes.Brightness: SetParameter(2, "V", "Adjust Value", "[0-1] Unitized adjustment value"); filter = new Brightness(numVal); break; case FilterModes.Contrast: SetParameter(2, "V", "Factor Value", "[0-1] Unitized adjustment value"); filter = new Contrast(numVal); break; case FilterModes.Gamma: SetParameter(2, "V", "Gamma Value", "[0-1] Unitized adjustment value"); filter = new Gamma(numVal); break; case FilterModes.Hue: SetParameter(2, "V", "Hue Value", "[0-1] Unitized adjustment value"); filter = new Hue(numVal); break; case FilterModes.Saturation: SetParameter(2, "V", "Adjust Value", "[0-1] Unitized adjustment value"); filter = new Saturation(numVal); break; } message = ((FilterModes)mode).ToString(); UpdateMessage(); image.Filters.Add(filter); DA.SetData(0, image); DA.SetData(1, filter); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { IGH_Goo goo = null; Image image = new Image(); if (!DA.GetData(0, ref goo)) { return; } if (!goo.TryGetImage(ref image)) { return; } int mode = 0; DA.GetData(1, ref mode); double numValA = 1.0; DA.GetData(2, ref numValA); double numValB = 1.0; DA.GetData(3, ref numValB); double numValC = 1.0; DA.GetData(3, ref numValC); Filter filter = new Filter(); int[] indices = new int[] { 2, 3, 4 }; switch ((FilterModes)mode) { case FilterModes.BT709: ClearParameter(indices); filter = new GrayscaleBT709(); image.Filters.Add(new GrayscaleBT709()); break; case FilterModes.RMY: ClearParameter(indices); filter = new GrayscaleRMY(); image.Filters.Add(new GrayscaleRMY()); break; case FilterModes.Y: ClearParameter(indices); filter = new GrayscaleY(); image.Filters.Add(new GrayscaleY()); break; case FilterModes.Simple: SetParameter(2, "R", "Red", "The Red coefficient"); SetParameter(3, "G", "Green", "The Green coefficient"); SetParameter(4, "B", "Blue", "The Blue coefficient"); filter = new Simple(numValA, numValB, numValC); image.Filters.Add(new Simple(numValA, numValB, numValC)); break; } message = ((FilterModes)mode).ToString(); UpdateMessage(); DA.SetData(0, image); DA.SetData(1, filter); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { IGH_Goo goo = null; Image image = new Image(); if (!DA.GetData(0, ref goo)) { return; } if (!goo.TryGetImage(ref image)) { return; } int mode = 0; DA.GetData(1, ref mode); double numValA = 1.0; DA.GetData(2, ref numValA); int numValB = 1; DA.GetData(3, ref numValB); int numValC = 1; DA.GetData(4, ref numValC); int numValD = 1; DA.GetData(5, ref numValD); Filter filter = new Filter(); int[] indices = new int[] { 2, 3, 4, 5 }; switch ((FilterModes)mode) { case FilterModes.Canny: SetParameter(2, "X", "Sigma", "Gaussian sigma"); SetParameter(3, "S", "Size", "Gaussian size"); SetParameter(4, "L", "Low Threshold", "High threshold value used for hysteresis"); SetParameter(5, "H", "High Threshold", "Low threshold value used for hysteresis"); filter = new Canny(numValA, numValB, numValC, numValD); image.Filters.Add(new Canny()); break; case FilterModes.Difference: ClearParameter(indices); filter = new Difference(); image.Filters.Add(new Difference()); break; case FilterModes.Homogeneity: ClearParameter(indices); filter = new Homogeneity(); image.Filters.Add(new Homogeneity()); break; case FilterModes.Kirsch: ClearParameter(indices); filter = new Kirsch(); image.Filters.Add(new Kirsch()); break; case FilterModes.Robinson: ClearParameter(indices); filter = new Robinson(); image.Filters.Add(new Robinson()); break; case FilterModes.Sobel: ClearParameter(indices); filter = new Sobel(); image.Filters.Add(new Sobel()); break; } message = ((FilterModes)mode).ToString(); UpdateMessage(); DA.SetData(0, image); DA.SetData(1, filter); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { IGH_Goo goo = null; Image image = new Image(); if (!DA.GetData(0, ref goo)) { return; } if (!goo.TryGetImage(ref image)) { return; } int mode = 0; DA.GetData(1, ref mode); int numValA = 1; DA.GetData(2, ref numValA); int numValB = 1; DA.GetData(3, ref numValB); Filter filter = new Filter(); int[] indices = new int[] { 2, 3 }; switch ((FilterModes)mode) { case FilterModes.Adaptive: ClearParameters(indices); filter = new Adaptive(); image.Filters.Add(new Adaptive()); break; case FilterModes.Conservative: ClearParameters(indices); filter = new Conservative(); image.Filters.Add(new Conservative()); break; case FilterModes.Median: ClearParameters(indices); filter = new Median(); image.Filters.Add(new Median()); break; case FilterModes.Gaussian: SetParameter(2, "D", "Divisor", "Division factor"); SetParameter(3, "T", "Threshold", "Threshold weighted sum"); filter = new Gaussian(numValA, numValB); image.Filters.Add(new Gaussian(numValA, numValB)); break; case FilterModes.HighBoost: SetParameter(2, "D", "Divisor", "Division factor"); SetParameter(3, "T", "Threshold", "Threshold weighted sum"); filter = new HighBoost(numValA, numValB); image.Filters.Add(new HighBoost(numValA, numValB)); break; case FilterModes.Mean: SetParameter(2, "D", "Divisor", "Division factor"); SetParameter(3, "T", "Threshold", "Threshold weighted sum"); filter = new Mean(numValA, numValB); image.Filters.Add(new Mean(numValA, numValB)); break; case FilterModes.Simple: SetParameter(2, "D", "Divisor", "Division factor"); SetParameter(3, "T", "Threshold", "Threshold weighted sum"); filter = new Simple(numValA, numValB); image.Filters.Add(new Simple(numValA, numValB)); break; } message = ((FilterModes)mode).ToString(); UpdateMessage(); DA.SetData(0, image); DA.SetData(1, filter); }
/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param> protected override void SolveInstance(IGH_DataAccess DA) { IGH_Goo goo = null; Image image = new Image(); if (!DA.GetData(0, ref goo)) { return; } if (!goo.TryGetImage(ref image)) { return; } int mode = 0; DA.GetData(1, ref mode); int numVal = 0; DA.GetData(2, ref numVal); Filter filter = new Filter(); switch ((FilterModes)mode) { case FilterModes.Bayer: filter = new Bayer(); image.Filters.Add(new Bayer()); break; case FilterModes.Ordered: filter = new Ordered(); image.Filters.Add(new Ordered()); break; case FilterModes.Burkes: filter = new Burkes(numVal); image.Filters.Add(new Burkes(numVal)); break; case FilterModes.Carry: filter = new Carry(numVal); image.Filters.Add(new Carry(numVal)); break; case FilterModes.FloydSteinberg: filter = new FloydSteinberg(numVal); image.Filters.Add(new FloydSteinberg(numVal)); break; case FilterModes.JarvisJudiceNinke: filter = new JarvisJudiceNinke(numVal); image.Filters.Add(new JarvisJudiceNinke(numVal)); break; case FilterModes.Sierra: filter = new Sierra(numVal); image.Filters.Add(new Sierra(numVal)); break; case FilterModes.Stucki: filter = new Stucki(numVal); image.Filters.Add(new Stucki(numVal)); break; } message = ((FilterModes)mode).ToString(); UpdateMessage(); DA.SetData(0, image); DA.SetData(1, filter); }