/// <summary> /// /// </summary> /// <param name="image"></param> /// <returns></returns> public override Image Apply(Image image) { GetParams(fm); if (!(image is Image)) { return(image); } Bitmap dst = AddinUtils.CloneImage(image) as Bitmap; SharpenMode sharpenMode = (SharpenMode)Params["SharpenMode"].Value; double gaussianSigma = (double)Params["GaussianSigma"].Value; int gaussianSize = (int)Params["GaussianSize"].Value; int gaussianThreshold = (int)Params["GaussianThreshold"].Value; float gdiRatio = (float)Params["GdiRatio"].Value; float gdiAmount = (float)Params["GdiAmount"].Value; Accord.Imaging.Filters.IFilter filter = null; switch (sharpenMode) { case SharpenMode.Normal: filter = new Accord.Imaging.Filters.Sharpen(); dst = (filter as Accord.Imaging.Filters.Sharpen).Apply(dst); break; case SharpenMode.Gaussian: filter = new Accord.Imaging.Filters.GaussianSharpen(); (filter as Accord.Imaging.Filters.GaussianSharpen).Sigma = gaussianSigma; (filter as Accord.Imaging.Filters.GaussianSharpen).Size = gaussianSize; (filter as Accord.Imaging.Filters.GaussianSharpen).Threshold = gaussianThreshold; dst = filter.Apply(dst); break; case SharpenMode.GDI: var effect = new SharpenEffect(gdiRatio, gdiAmount); dst.ApplyEffect(effect, new Rectangle(0, 0, dst.Width, dst.Height)); break; } AddinUtils.CloneExif(image, dst); return(dst); }
public rettype runalgo(string s) { string dupImagePath = s; Bitmap org0 = (Bitmap)Accord.Imaging.Image.FromFile(dupImagePath); // Bitmap org1 = org0.Clone(System.Drawing.Imaging.PixelFormat.Format24bppRgb); if (greyscaleenable) { Accord.Imaging.Filters.GrayscaleBT709 gr = new Accord.Imaging.Filters.GrayscaleBT709(); org0 = gr.Apply(org0); } Bitmap org1 = org0.Clone(System.Drawing.Imaging.PixelFormat.Format24bppRgb); Accord.Imaging.Filters.Difference filter = new Accord.Imaging.Filters.Difference(org1); Bitmap noiserem = org1.Clone(System.Drawing.Imaging.PixelFormat.Format24bppRgb); foreach (string filterid in algorithm) { int filterno = getfilter(filterid); if (filterno == 2) { // Console.WriteLine("AdaptiveSmoothing"); Accord.Imaging.Filters.AdaptiveSmoothing noisefilter = new Accord.Imaging.Filters.AdaptiveSmoothing(); noiserem = noisefilter.Apply(noiserem); } else if (filterno == 4) { // Console.WriteLine("AdditiveNoise"); Accord.Imaging.Filters.AdditiveNoise noisefilter = new Accord.Imaging.Filters.AdditiveNoise(); noiserem = noisefilter.Apply(noiserem); } else if (filterno == 3) { // Console.WriteLine("BilateralSmoothing"); Accord.Imaging.Filters.BilateralSmoothing noisefilter = new Accord.Imaging.Filters.BilateralSmoothing(); noiserem = noisefilter.Apply(noiserem); } if (filterno == 5) { //Bitmap gra = new Bitmap(noiserem.Width, noiserem.Height, PixelFormat.Format8bppIndexed); // Bitmap gra = new bnoiserem.Clone(System.Drawing.Imaging.PixelFormat.form); // Console.WriteLine("AdaptiveSmoothing"); Accord.Imaging.Filters.Erosion noisefilter = new Accord.Imaging.Filters.Erosion(); noiserem = noisefilter.Apply(noiserem); } else if (filterno == 6) { // Console.WriteLine("AdditiveNoise"); Accord.Imaging.Filters.Pixellate noisefilter = new Accord.Imaging.Filters.Pixellate(); noiserem = noisefilter.Apply(noiserem); } else if (filterno == 7) { // Console.WriteLine("BilateralSmoothing"); Accord.Imaging.Filters.GaussianBlur noisefilter = new Accord.Imaging.Filters.GaussianBlur(); noiserem = noisefilter.Apply(noiserem); } else if (filterno == 8) { // Console.WriteLine("BilateralSmoothing"); Accord.Imaging.Filters.GaussianSharpen noisefilter = new Accord.Imaging.Filters.GaussianSharpen(); noiserem = noisefilter.Apply(noiserem); } else { ///donothing } } // apply the filter Bitmap resultImage = filter.Apply(noiserem); double mean = 0.0;// histogram.Mean; // mean red value Accord.Statistics.Visualizations.Histogram histogram = null;; if (greyscaleenable == false) { Accord.Imaging.ImageStatistics statistics = new Accord.Imaging.ImageStatistics(resultImage); histogram = statistics.Red; mean = histogram.Mean; // mean red value } else { Accord.Imaging.Filters.GrayscaleBT709 gr = new Accord.Imaging.Filters.GrayscaleBT709(); resultImage = gr.Apply(resultImage); Accord.Imaging.ImageStatistics statistics = new Accord.Imaging.ImageStatistics(resultImage); histogram = statistics.Gray; mean = histogram.Mean; // mean red value } var lbp = new LocalBinaryPattern(blockSize: 3, cellSize: 6); // Use it to extract descriptors from the Lena image: var descriptors = lbp.ProcessImage(resultImage); double av = 0.0; foreach (var d in descriptors) { av = av + d.Average(); } av = av / descriptors.Count; rettype ret = new rettype(); ret.histogram = histogram; ret.lbpavg = av; ret.histoavg = mean; return(ret); }