public void ProcessImageTest() { double[,] diag = Matrix.Magic(5); Bitmap input; new MatrixToImage() { Format = PixelFormat.Format24bppRgb }.Convert(diag, out input); var whitePatch = new WhitePatch(); // Apply the filter Bitmap output = whitePatch.Apply(input); double[,] actual; new ImageToMatrix().Convert(output, out actual); string str = actual.ToString(CSharpMatrixFormatProvider.InvariantCulture); double[,] expected = { { 1, 0.968627450980392, 1, 1, 1 }, { 0.972549019607843, 1, 1, 1, 1 }, { 1, 1, 1, 0.984313725490196, 0.976470588235294 }, { 1, 1, 0.988235294117647, 0.980392156862745, 1 }, { 1, 0.992156862745098, 0.964705882352941, 1, 1 } }; Assert.IsTrue(expected.IsEqual(actual, 1e-6)); }
/// <summary> /// Applies White Patch filter for color normalization (Accord.NET function) /// </summary> /// <param name="img">image.</param> /// <param name="inPlace">Apply in place or not. If it is set to true return value can be omitted.</param> /// <returns>Processed image.</returns> internal static Image <TColor, TDepth> WhitePatch <TColor, TDepth>(this Image <TColor, TDepth> img, bool inPlace = true) where TColor : IColor where TDepth : struct { WhitePatch wp = new WhitePatch(); return(img.ApplyFilter(wp, inPlace)); }
public void ApplyTest1() { Bitmap image = Accord.Imaging.Image.Clone(Resources.lena_color); // Create the White Patch filter var whitePatch = new WhitePatch(); // Apply the filter Bitmap result = whitePatch.Apply(image); // ImageBox.Show(result); Assert.IsNotNull(result); }
/// <summary> /// Applies White Patch filter for color normalization (Accord.NET function) /// </summary> /// <param name="img">image.</param> /// <param name="inPlace">Apply in place or not. If it is set to true return value can be omitted.</param> /// <returns>Processed image.</returns> public static Bgra <byte>[,] WhitePatch(this Bgra <byte>[,] img, bool inPlace = true) { WhitePatch wp = new WhitePatch(); return(img.ApplyFilter(wp, inPlace)); }
/// <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); }
public mAdjustWhitePatch() { BitmapType = mFilter.BitmapTypes.None; filter = new WhitePatch(); }