public Bitmap ToSaturationCorrection(Bitmap Im) { AForge.Imaging.Filters.SaturationCorrection Img = new SaturationCorrection(); Bitmap bmImage = AForge.Imaging.Image.Clone(new Bitmap(Im), PixelFormat.Format24bppRgb); return(Img.Apply(bmImage)); }
private void videoNewFrame(object sender, NewFrameEventArgs eventArgs) { Bitmap bitmap = (Bitmap)eventArgs.Frame.Clone(); Threshold thresholdFilter = new Threshold(120); Grayscale grayscaleFilter = new Grayscale(0.2, 0.7, 0.07); BrightnessCorrection brightnessFilter = new BrightnessCorrection(brightnessVal); ContrastCorrection contrastFilter = new ContrastCorrection(contrastVal); SaturationCorrection saturationFilter = new SaturationCorrection(saturationVal); bitmap = brightnessFilter.Apply((Bitmap)bitmap.Clone()); bitmap = contrastFilter.Apply((Bitmap)bitmap.Clone()); bitmap = saturationFilter.Apply((Bitmap)bitmap.Clone()); if (isGray) { bitmap = grayscaleFilter.Apply((Bitmap)bitmap.Clone()); } if (isBW) { bitmap = grayscaleFilter.Apply((Bitmap)bitmap.Clone()); bitmap = thresholdFilter.Apply(bitmap); } currentFrame = (Bitmap)bitmap.Clone(); if (fileWriter != null) { fileWriter.WriteVideoFrame((Bitmap)bitmap.Clone()); } }
private static Bitmap CreateGrayscale(Bitmap image) { const int size = 512; float scale = Math.Min(size / (float)image.Width, size / (float)image.Height); ResizeBicubic resize = new ResizeBicubic((int)(image.Width*scale), (int)(image.Height*scale)); ImageStatistics stat = new ImageStatistics( image ); LevelsLinear levelsLinear = new LevelsLinear { Output = new IntRange(0, 255), InRed = stat.Red.GetRange(.95), InBlue = stat.Blue.GetRange(.95), InGreen = stat.Green.GetRange(.95) }; SaturationCorrection sc = new SaturationCorrection(-1); Bitmap square = new Bitmap(size, size); using(Bitmap resized = resize.Apply(sc.Apply(levelsLinear.Apply(image)).MakeGrayscale())) using (Graphics g = Graphics.FromImage(square)) { g.DrawImage(resized, new Point((size-resized.Width) / 2 ,0)); } return square; }
private void CameraOne_NewFrame(object sender, NewFrameEventArgs eventArgs) { if (isRecording1) { using (var bitmap = (Bitmap)eventArgs.Frame.Clone()) { if (firstFrameTime != null) { writer.WriteVideoFrame(bitmap, DateTime.Now - firstFrameTime.Value); } else { writer.WriteVideoFrame(bitmap); firstFrameTime = DateTime.Now; } } } Bitmap bitmap1 = (Bitmap)eventArgs.Frame.Clone(); BrightnessCorrection br = new BrightnessCorrection(brightess1); ContrastCorrection cr = new ContrastCorrection(contrast1); SaturationCorrection sr = new SaturationCorrection(saturation1); bitmap1 = br.Apply((Bitmap)bitmap1.Clone()); bitmap1 = cr.Apply((Bitmap)bitmap1.Clone()); bitmap1 = sr.Apply((Bitmap)bitmap1.Clone()); try { pbCam1.Image = bitmap1; } catch (NullReferenceException ex) { Console.WriteLine("A problem with image loading occured! You may want to close other apps using your camera!"); } }
private void reminiscentFilterButton_Click(object sender, EventArgs e) { SaturationCorrection filter = new SaturationCorrection((float)-0.2); processedImage = filter.Apply(originImage); processedPictureBox.Image = processedImage; }
public static Bitmap SaturationCorrection(Bitmap Imagem) { SaturationCorrection filter = new SaturationCorrection(); Imagem = Imagem.Clone(new Rectangle(0, 0, Imagem.Width, Imagem.Height), System.Drawing.Imaging.PixelFormat.Format24bppRgb); Imagem = filter.Apply(Imagem); return(Imagem); }
public mAdjustSaturation(float adjustValue) { AdjustValue = adjustValue; BitmapType = BitmapTypes.None; filter = new SaturationCorrection(AdjustValue); }
/// <summary> /// Initializes saturation/contrast/exposure/gamma/brightess filter. /// </summary> public SaturationContrastBrightnessFilter() { this.ce = new ContrastEnhancement(0, Space.YCbCr); this.sc = new SaturationCorrection(0); this.bc = new BrightnessCorrection(0, Space.YCbCr); this.ec = new ShiftCorrection(0, Space.YCbCr); this.gc = new GammaCorrection(0, Space.YCbCr); }
private void streamedFrame(object sender, NewFrameEventArgs eventArgs) { try { if (_isRecording) { recordVideo(eventArgs); } using (var bitmap = (Bitmap)eventArgs.Frame.Clone()) { if (_isMonochromatic) { using (var isgrayscaledBitmap = Grayscale.CommonAlgorithms.BT709.Apply(bitmap)) using (var monochromaticcBitmap = new Threshold(100).Apply(isgrayscaledBitmap)) { bitmapImage = monochromaticcBitmap.ToBitmapImage(); } } else if (_isGrayScaled) { using (var isGrayscaledBitmap = Grayscale.CommonAlgorithms.BT709.Apply(bitmap)) { bitmapImage = isGrayscaledBitmap.ToBitmapImage(); } } else if (contrast != 0) { ContrastCorrection filter = new ContrastCorrection((int)contrast); using (var contrastBitMap = filter.Apply(bitmap)) bitmapImage = contrastBitMap.ToBitmapImage(); } else if (brightness != 0) { BrightnessCorrection bfilter = new BrightnessCorrection((int)brightness); using (var brightnessBitMap = bfilter.Apply(bitmap)) bitmapImage = brightnessBitMap.ToBitmapImage(); } else if (saturation != 0) { SaturationCorrection bfilter = new SaturationCorrection((int)brightness); using (var saturationBitMap = bfilter.Apply(bitmap)) bitmapImage = saturationBitMap.ToBitmapImage(); } else { bitmapImage = bitmap.ToBitmapImage(); } } bitmapImage.Freeze(); Dispatcher.BeginInvoke(new ThreadStart(delegate { VideoSource.Source = bitmapImage; })); motionDetect(eventArgs); } catch (Exception e) { MessageBox.Show("Error:\n", "Error", MessageBoxButton.OK, MessageBoxImage.Error); StopCamera(); } }
private void ImgHSLC(string type) { if (this.tb_Contrast.Value == 50 && this.tb_Hue.Value == 0 && this.tb_Light.Value == 0 && this.tb_Saturation.Value == 0) { this.drawArea.Image = this.sourceImage; return; } Bitmap bt = this.filteredImage; switch (type) { case "Hue": if (huemodifierFilter == null) { huemodifierFilter = new HueModifier(); } huemodifierFilter.Hue = this.tb_Hue.Value; bt = ApplyFilter(huemodifierFilter, bt); xml += this.SaveImageToXml.SaveImgProcess(this.drawArea, this.lb_ImageName.Text, "HueModifier", huemodifierFilter); break; case "Saturation": if (saturationcorrFilter == null) { saturationcorrFilter = new SaturationCorrection(); } saturationcorrFilter.AdjustValue = Convert.ToDouble(this.tb_Saturation.Value) / Convert.ToDouble(255); bt = ApplyFilter(saturationcorrFilter, bt); xml += this.SaveImageToXml.SaveImgProcess(this.drawArea, this.lb_ImageName.Text, "Saturation", saturationcorrFilter); break; case "Light": if (brightnesscorr == null) { brightnesscorr = new BrightnessCorrection(); } brightnesscorr.AdjustValue = Convert.ToDouble(tb_Light.Value) / Convert.ToDouble(255); bt = ApplyFilter(brightnesscorr, bt); xml += this.SaveImageToXml.SaveImgProcess(this.drawArea, this.lb_ImageName.Text, "BrightnessCorrection", brightnesscorr); break; case "Contrast": if (contrastCorr == null) { contrastCorr = new ContrastCorrection(); } contrastCorr.Factor = Convert.ToDouble(tb_Contrast.Value) / Convert.ToDouble(40); bt = ApplyFilter(contrastCorr, bt); xml += this.SaveImageToXml.SaveImgProcess(this.drawArea, this.lb_ImageName.Text, "ContrastCorrection", contrastCorr); break; } this.drawArea.Image = bt; }
public static Bitmap Sketch(Bitmap image) { var layerA = new SaturationCorrection(-71).Apply(image); var layerB = new Invert().Apply(layerA); layerB = new GaussianBlur().Apply(layerB); layerA = new BlendFilter(BlendMode.ColorDodge, layerB).Apply(layerA); layerA = new GammaCorrection(-5).Apply(layerA); //layerA = new BlendFilter(BlendMode.Overlay, layerA).Apply(image); return(layerA); }
public Saturation() { InitializeComponent(); this.l_track1_L.Text = "-250"; this.l_track1_R.Text = "250"; this.trackBar_1.Maximum = 250; this.trackBar_1.Minimum = -250; this.trackBar_1.SmallChange = 1; this.trackBar_1.TickFrequency = 10; saturationcorrFilter = new SaturationCorrection(); drawArea.Filter = saturationcorrFilter; drawArea.Image = (Bitmap)frmImgProcess.imgProcess.drawArea.Image; saveImg = new SaveBackImageToXml(); }
private void Saturation_ValueChanged(object sender, RoutedPropertyChangedEventArgs <double> e) { SaturationLabel.Content = (int)(Saturation.Value * 100); saturation = (float)Saturation.Value; if (mainPhoto != null) { sc = new SaturationCorrection(saturation); System.Drawing.Bitmap tmp = sc.Apply((System.Drawing.Bitmap)mainPhoto.Clone()); //BitmapImage tmpBmpIs = ToBitmapImage(tmp); Photography.Source = ToBitmapImage(tmp); UpdateHistograms(tmp); UpdateChannelPreviews(tmp); } }
private void video_NewFrame(object sender, NewFrameEventArgs eventArgs)//get picture from camera { Bitmap bitmap = (Bitmap)eventArgs.Frame.Clone(); if (flag == 0) { //bitmap.Save(img); flag = 1; bitmap = new Bitmap(bitmap, new Size(320, 240)); ContrastCorrection filter = new ContrastCorrection(tempform.contrast); BrightnessCorrection bfilter = new BrightnessCorrection(tempform.brightness); SaturationCorrection sfilter = new SaturationCorrection(tempform.saturation); bfilter.ApplyInPlace(bitmap); filter.ApplyInPlace(bitmap); sfilter.ApplyInPlace(bitmap); pictureBox1.Image = bitmap; } }
private void CameraTwo_NewFrame(object sender, NewFrameEventArgs eventArgs) { Bitmap bitmap2 = (Bitmap)eventArgs.Frame.Clone(); BrightnessCorrection br = new BrightnessCorrection(brightess1); ContrastCorrection cr = new ContrastCorrection(contrast1); SaturationCorrection sr = new SaturationCorrection(saturation1); bitmap2 = br.Apply((Bitmap)bitmap2.Clone()); bitmap2 = cr.Apply((Bitmap)bitmap2.Clone()); bitmap2 = sr.Apply((Bitmap)bitmap2.Clone()); pbCam2.Image = bitmap2; if (isRecording2) { writer.WriteVideoFrame(bitmap2); } }
/// <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) { Bitmap sourceImage = null; DA.GetData(0, ref sourceImage); int C = 0; DA.GetData(1, ref C); int B = 0; DA.GetData(2, ref B); double S = 0; DA.GetData(3, ref S); sourceImage = ImageUtil.convert(sourceImage, System.Drawing.Imaging.PixelFormat.Format32bppArgb); Bitmap filteredImage = sourceImage; if (C >= 0) { IFilter myFilterContrast = new ContrastCorrection(C); filteredImage = myFilterContrast.Apply(sourceImage); } else { IFilter myFilterContrast = new ContrastStretch(); filteredImage = myFilterContrast.Apply(sourceImage); } IFilter myFilterBrightness = new BrightnessCorrection(B); filteredImage = myFilterBrightness.Apply(filteredImage); IFilter mySaturationFilter = new SaturationCorrection(Convert.ToSingle(S)); filteredImage = mySaturationFilter.Apply(filteredImage); DA.SetData(0, filteredImage); }
private void DisplayCapturedPicture(object sender, NewFrameEventArgs eventArgs) { Bitmap bitmap = new Bitmap(eventArgs.Frame, new Size(cameraPictureBox.Width, cameraPictureBox.Height)); BrightnessCorrection brightnessCorrection = new BrightnessCorrection(Brightness); ContrastCorrection contrastCorrection = new ContrastCorrection(Contrast); SaturationCorrection saturationCorrection = new SaturationCorrection(Saturation * 0.1f); HueModifier hueModifier = new HueModifier(Hue); bitmap = brightnessCorrection.Apply((Bitmap)bitmap.Clone()); bitmap = contrastCorrection.Apply((Bitmap)bitmap.Clone()); bitmap = saturationCorrection.Apply((Bitmap)bitmap.Clone()); bitmap = hueModifier.Apply((Bitmap)bitmap.Clone()); if (connectedCameraIsRecording) { videoWriter.WriteVideoFrame(bitmap); } cameraPictureBox.Image = bitmap; }
private void video_NewFrame(object sender, NewFrameEventArgs eventArgs) { Bitmap bitmap = (Bitmap)eventArgs.Frame.Clone(); if (flag == 0) { flag = 1; bitmap = new Bitmap(bitmap, new Size(320, 240)); ContrastCorrection filter = new ContrastCorrection(contrast); BrightnessCorrection bfilter = new BrightnessCorrection(brightness); SaturationCorrection sfilter = new SaturationCorrection(saturation); bfilter.ApplyInPlace(bitmap); filter.ApplyInPlace(bitmap); sfilter.ApplyInPlace(bitmap); for (int j = 0; j < methodtemp.getsettinglist().Count; j++) { ((PictureBox)tabControl1.Controls[j].Controls[0].Controls[0]).Image = (Bitmap)bitmap.Clone(); } } }
private void recordEventHandler(object sender, NewFrameEventArgs eventArgs) { Bitmap bitmap = (Bitmap)eventArgs.Frame.Clone(); BrightnessCorrection br = new BrightnessCorrection(brightess); ContrastCorrection cr = new ContrastCorrection(contrast); SaturationCorrection sr = new SaturationCorrection(saturation); bitmap = br.Apply((Bitmap)bitmap.Clone()); bitmap = cr.Apply((Bitmap)bitmap.Clone()); bitmap = sr.Apply((Bitmap)bitmap.Clone()); if (isRecording) { writer.WriteVideoFrame(bitmap); } else { oldBitmap = bitmap; view.Image = bitmap; } }
/// <summary> /// Execute image processing. /// </summary> private void Execute() { if (CameraReady) { OutputVectors = new Vector3f[9]; for (int a = 0; a < OutputVectors.Length; a++) { OutputVectors[a].X = 0f; OutputVectors[a].Y = 0f; OutputVectors[a].Z = 0f; } ProcessedImage = new Bitmap(640, 480); FilterSaturateLeft = new SaturationCorrection(OptionsControl.SaturationLeft.Value / 10f); FilterSaturateRight = new SaturationCorrection(OptionsControl.SaturationRight.Value / 10f); FilterInvert = new Invert(); FilterColor = new ColorFiltering( new IntRange((int)OptionsControl.MinRed.Value, (int)OptionsControl.MaxRed.Value), new IntRange((int)OptionsControl.MinGreen.Value, (int)OptionsControl.MaxGreen.Value), new IntRange((int)OptionsControl.MinBlue.Value, (int)OptionsControl.MaxBlue.Value) ); OptionsControl.Show(); Executed = true; Console.WriteLine("Executed!"); } }
public Image ProcessImage(Image input, ProjectSetting ps) { Bitmap image = new Bitmap(input); if (input.PixelFormat != PixelFormat.Format24bppRgb && input.PixelFormat != PixelFormat.Format16bppGrayScale && input.PixelFormat != PixelFormat.Format8bppIndexed) { // Aforge library only support certian bpp, need to do a convert first image = this.ChangePixelFormat(image, PixelFormat.Format24bppRgb); } var layerA = new SaturationCorrection(-71).Apply(image); var layerB = new Invert().Apply(layerA); layerB = new GaussianBlur().Apply(layerB); layerA = new BlendFilter(BlendMode.ColorDodge, layerB).Apply(layerA); layerA = new GammaCorrection(-5).Apply(layerA); //layerA = new BlendFilter(BlendMode.Overlay, layerA).Apply(image); return((Image)layerA); }
private void CameraTwo_NewFrame(object sender, NewFrameEventArgs eventArgs) { Bitmap bitmap2 = (Bitmap)eventArgs.Frame.Clone(); BrightnessCorrection br = new BrightnessCorrection(brightess2); ContrastCorrection cr = new ContrastCorrection(contrast2); SaturationCorrection sr = new SaturationCorrection(saturation2); bitmap2 = br.Apply((Bitmap)bitmap2.Clone()); bitmap2 = cr.Apply((Bitmap)bitmap2.Clone()); bitmap2 = sr.Apply((Bitmap)bitmap2.Clone()); try { pbCam2.Image = bitmap2; } catch (NullReferenceException ex) { Console.WriteLine("A problem with image loading occured! You may want to close other apps using your camera!"); } if (isRecording2) { writer.WriteVideoFrame(bitmap2); } }
private void VideoCaptureDevice_NewFrame(object sender, NewFrameEventArgs e) { Bitmap image = (Bitmap)e.Frame.Clone(); brightness = new BrightnessCorrection(jasnosc); image = brightness.Apply((Bitmap)image.Clone()); saturation = new SaturationCorrection(nasycenie); image = saturation.Apply((Bitmap)image.Clone()); contrast = new ContrastCorrection(kontrast); image = contrast.Apply((Bitmap)image.Clone()); if (recording == true) { writer.WriteVideoFrame(image); } if (detecting) { if (motionDetector.ProcessFrame(image) > 0.05) { textBox4.Text = "Wykryto ruch"; pictureBox1.Image = image; } else { textBox4.Text = "Brak ruchu"; pictureBox1.Image = image; } } else { pictureBox1.Image = image; } }
public SaturationCorrectionFilter() { saturationCorrection = new SaturationCorrection(); saturationCorrection.AdjustValue = 0.3f; }
public static byte[] ApplyFilter(byte[] imageBytes, ImageProcessingFilters filter, ImageFormat format = null) { IFilter baseFilter = null; switch (filter) { case ImageProcessingFilters.Default: return(imageBytes); case ImageProcessingFilters.GrayscaleBT709: baseFilter = new GrayscaleBT709(); break; case ImageProcessingFilters.GrayscaleRMY: baseFilter = new GrayscaleRMY(); break; case ImageProcessingFilters.GrayscaleY: baseFilter = new GrayscaleY(); break; case ImageProcessingFilters.BayerFilter: baseFilter = new FiltersSequence(); ((FiltersSequence)baseFilter).Add(new ExtractChannel(RGB.B)); ((FiltersSequence)baseFilter).Add(new BayerFilter()); break; /* * case ImageProcessingFilters.ImageWarp: * baseFilter = new ImageWarp( * break; * */ case ImageProcessingFilters.Channel_Red: baseFilter = new ExtractChannel(RGB.R); break; case ImageProcessingFilters.Channel_Green: baseFilter = new ExtractChannel(RGB.G); break; case ImageProcessingFilters.Channel_Blue: baseFilter = new ExtractChannel(RGB.B); break; case ImageProcessingFilters.WaterWave: baseFilter = new WaterWave(); ((WaterWave)baseFilter).HorizontalWavesCount = 10; ((WaterWave)baseFilter).HorizontalWavesAmplitude = 5; ((WaterWave)baseFilter).VerticalWavesCount = 3; ((WaterWave)baseFilter).VerticalWavesAmplitude = 15; break; case ImageProcessingFilters.Sepia: baseFilter = new Sepia(); break; case ImageProcessingFilters.BrightnessCorrection: baseFilter = new BrightnessCorrection(-50); break; case ImageProcessingFilters.ContrastCorrection: baseFilter = new ContrastCorrection(15); break; case ImageProcessingFilters.SaturationCorrection1: baseFilter = new SaturationCorrection(-0.5f); break; case ImageProcessingFilters.SaturationCorrection2: baseFilter = new SaturationCorrection(-.25f); break; case ImageProcessingFilters.SaturationCorrection3: baseFilter = new SaturationCorrection(+0.5f); break; case ImageProcessingFilters.Invert: baseFilter = new Invert(); break; case ImageProcessingFilters.Blur: baseFilter = new Blur(); break; case ImageProcessingFilters.RotateChannels: baseFilter = new RotateChannels(); break; case ImageProcessingFilters.RotateChannels2: baseFilter = new FiltersSequence(); ((FiltersSequence)baseFilter).Add(new RotateChannels()); ((FiltersSequence)baseFilter).Add(new RotateChannels()); break; case ImageProcessingFilters.AdditiveNoise: IRandomNumberGenerator generator = new UniformGenerator(new Range(-50, 50)); baseFilter = new AdditiveNoise(generator); break; case ImageProcessingFilters.GammaCorrection: baseFilter = new GammaCorrection(0.5); break; case ImageProcessingFilters.HistogramEqualization: baseFilter = new HistogramEqualization(); break; case ImageProcessingFilters.OrderedDithering: byte[,] matrix = new byte[4, 4] { { 95, 233, 127, 255 }, { 159, 31, 191, 63 }, { 111, 239, 79, 207 }, { 175, 47, 143, 15 } }; baseFilter = new FiltersSequence(); ((FiltersSequence)baseFilter).Add(new GrayscaleBT709()); ((FiltersSequence)baseFilter).Add(new OrderedDithering(matrix)); break; case ImageProcessingFilters.Pixallete: baseFilter = new Pixellate(); break; case ImageProcessingFilters.SimplePosterization: baseFilter = new SimplePosterization(); break; case ImageProcessingFilters.Texturer_Textile: baseFilter = new Texturer(new AForge.Imaging.Textures.TextileTexture(), 0.3, 0.7); break; case ImageProcessingFilters.Texturer_Cloud: baseFilter = new Texturer(new AForge.Imaging.Textures.CloudsTexture(), 0.3, 0.7); break; case ImageProcessingFilters.Texturer_Marble: baseFilter = new Texturer(new AForge.Imaging.Textures.MarbleTexture(), 0.3, 0.7); break; case ImageProcessingFilters.Texturer_Wood: baseFilter = new Texturer(new AForge.Imaging.Textures.WoodTexture(), 0.3, 0.7); break; case ImageProcessingFilters.Texturer_Labyrinth: baseFilter = new Texturer(new AForge.Imaging.Textures.LabyrinthTexture(), 0.3, 0.7); break; case ImageProcessingFilters.SobelEdgeDetector: baseFilter = new FiltersSequence(); ((FiltersSequence)baseFilter).Add(new ExtractChannel(RGB.R)); ((FiltersSequence)baseFilter).Add(new SobelEdgeDetector()); break; case ImageProcessingFilters.SobelEdgeDetectorInvert: baseFilter = new FiltersSequence(); ((FiltersSequence)baseFilter).Add(new ExtractChannel(RGB.R)); ((FiltersSequence)baseFilter).Add(new SobelEdgeDetector()); ((FiltersSequence)baseFilter).Add(new Invert()); break; case ImageProcessingFilters.SobelEdgeDetectorSepia: baseFilter = new FiltersSequence(); ((FiltersSequence)baseFilter).Add(new ExtractChannel(RGB.R)); ((FiltersSequence)baseFilter).Add(new SobelEdgeDetector()); ((FiltersSequence)baseFilter).Add(new GrayscaleToRGB()); ((FiltersSequence)baseFilter).Add(new Sepia()); break; case ImageProcessingFilters.SobelEdgeDetectorSepiaCanvas: baseFilter = new FiltersSequence(); ((FiltersSequence)baseFilter).Add(new ExtractChannel(RGB.R)); ((FiltersSequence)baseFilter).Add(new SobelEdgeDetector()); ((FiltersSequence)baseFilter).Add(new GrayscaleToRGB()); ((FiltersSequence)baseFilter).Add(new Sepia()); ((FiltersSequence)baseFilter).Add(new SimplePosterization()); ((FiltersSequence)baseFilter).Add(new Texturer(new AForge.Imaging.Textures.TextileTexture(), 0.3, 0.7)); break; case ImageProcessingFilters.Drawing: baseFilter = new FiltersSequence(); ((FiltersSequence)baseFilter).Add(new GrayscaleBT709()); ((FiltersSequence)baseFilter).Add(new SobelEdgeDetector()); ((FiltersSequence)baseFilter).Add(new Invert()); ((FiltersSequence)baseFilter).Add(new SimplePosterization()); break; case ImageProcessingFilters.DrawingSepia: baseFilter = new FiltersSequence(); ((FiltersSequence)baseFilter).Add(new GrayscaleBT709()); ((FiltersSequence)baseFilter).Add(new SobelEdgeDetector()); ((FiltersSequence)baseFilter).Add(new Invert()); ((FiltersSequence)baseFilter).Add(new SimplePosterization()); ((FiltersSequence)baseFilter).Add(new GrayscaleToRGB()); ((FiltersSequence)baseFilter).Add(new Sepia()); break; case ImageProcessingFilters.OilCanvas: baseFilter = new FiltersSequence(); ((FiltersSequence)baseFilter).Add(new SimplePosterization()); ((FiltersSequence)baseFilter).Add(new Texturer(new AForge.Imaging.Textures.TextileTexture(), 0.3, 0.7)); break; case ImageProcessingFilters.OilCanvasGray: baseFilter = new FiltersSequence(); ((FiltersSequence)baseFilter).Add(new SimplePosterization()); ((FiltersSequence)baseFilter).Add(new Texturer(new AForge.Imaging.Textures.TextileTexture(), 0.3, 0.7)); ((FiltersSequence)baseFilter).Add(new GrayscaleBT709()); break; case ImageProcessingFilters.OilCanvasSepia: baseFilter = new FiltersSequence(); ((FiltersSequence)baseFilter).Add(new SimplePosterization()); ((FiltersSequence)baseFilter).Add(new Texturer(new AForge.Imaging.Textures.TextileTexture(), 0.3, 0.7)); ((FiltersSequence)baseFilter).Add(new Sepia()); break; } if (baseFilter == null) { return(null); } return(ApplyFilter(imageBytes, baseFilter, format)); }
/// <summary>Handles the Click event of the Process button which crops the main image and applies the filter stack to generate the output image.</summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> private void cmdProcess_Click(object sender, EventArgs e) { if (!_placed) { return; } if (pcFullImage.Image == null) { return; } Bitmap b = new Bitmap(pbSource.Width, pbSource.Height); Graphics g = Graphics.FromImage(b); g.Clear(Color.White); g.DrawImage(pcFullImage.Image, new Rectangle(0, 0, pbSource.Width, pbSource.Height), _selection.X, _selection.Y, _selection.Width, _selection.Height, GraphicsUnit.Pixel); g.Dispose(); pbSource.Image = b; if (filterStack.Count != 0) { b = filterStack.Apply(b); } var sc = new SaturationCorrection(); if (sc.FormatTranslations.ContainsKey(b.PixelFormat)) { sc.AdjustValue = hsbSaturation.Value / 100.0f; // apply the filter sc.ApplyInPlace(b); } Bitmap greyb = null; if (AForge.Imaging.Filters.Grayscale.CommonAlgorithms.BT709.FormatTranslations.ContainsKey(b.PixelFormat)) { greyb = AForge.Imaging.Filters.Grayscale.CommonAlgorithms.BT709.Apply(b); } else { this.Text = "Cannot convert to greyscale"; greyb = b; } var bc = new BrightnessCorrection(); if (bc.FormatTranslations.ContainsKey(b.PixelFormat)) { bc.AdjustValue = hsbBrightness.Value; bc.ApplyInPlace(greyb); } var cc = new ContrastCorrection(); if (cc.FormatTranslations.ContainsKey(b.PixelFormat)) { cc.Factor = hsbContrast.Value; cc.ApplyInPlace(greyb); } if (filterStack.Count == 0) { var sharpen = new Sharpen(); if (sharpen.FormatTranslations.ContainsKey(b.PixelFormat)) { sharpen.ApplyInPlace(greyb); } } if (chkInvert.Checked) { var invert = new Invert(); invert.ApplyInPlace(greyb); } pbInt.Image = greyb; b = greyb; //BaseInPlacePartialFilter filter = new AForge.Imaging.Filters.FloydSteinbergDithering(); BaseInPlacePartialFilter filter = null; if (cmbAlgorithm.SelectedItem != null && cmbAlgorithm.SelectedItem is AForge.Imaging.Filters.BaseInPlacePartialFilter) { filter = cmbAlgorithm.SelectedItem as AForge.Imaging.Filters.BaseInPlacePartialFilter; } if (filter == null) { filter = new AForge.Imaging.Filters.SierraDithering(); } if (filter.FormatTranslations.ContainsKey(b.PixelFormat)) { var ditheredb = filter.Apply(b); pbDest.Image = ditheredb; this.Text = "Badger!"; } else { this.Text = "Cannot dither this image!"; } }
private void cBFilters_SelectedIndexChanged(object sender, EventArgs e) { Bitmap pictureTransform = (Bitmap)pbChoose.Image; if ((string)cBFilters.SelectedItem == "HSL_Filter") { AForge.Imaging.Filters.SaturationCorrection filter = new SaturationCorrection(0.1); Bitmap newImage = filter.Apply(pictureTransform); pbChoose.SizeMode = PictureBoxSizeMode.CenterImage; pBNew.Image = newImage; } if ((string)cBFilters.SelectedItem == "Mediana") { AForge.Imaging.Filters.Median filter = new Median(); Bitmap newImage = filter.Apply(pictureTransform); pbChoose.SizeMode = PictureBoxSizeMode.CenterImage; pBNew.Image = newImage; } /*if ((string)cBFilters.SelectedItem == "Fourier_Transformation") * { * Complex[] dst = new Complex[n]; * * AForge.Math.FourierTransform filter = AForge.Math.FourierTransform.DFT();// .FromBitmap(pictureTransform); * Bitmap newImage = filter.Apply(); * pbChoose.SizeMode = PictureBoxSizeMode.CenterImage; * pBNew.Image = newImage; * }*/ if ((string)cBFilters.SelectedItem == "Binarization") { pictureTransform = Grayscale.CommonAlgorithms.BT709.Apply(pictureTransform); Threshold threshold = new Threshold(127); threshold.ApplyInPlace(pictureTransform); pbChoose.SizeMode = PictureBoxSizeMode.CenterImage; pBNew.Image = pictureTransform; } if ((string)cBFilters.SelectedItem == "Grayscale") { AForge.Imaging.Filters.Grayscale filter = new AForge.Imaging.Filters.Grayscale(0.2125, 0.7154, 0.0721); Bitmap newImage = filter.Apply(pictureTransform); pbChoose.SizeMode = PictureBoxSizeMode.CenterImage; pBNew.Image = newImage; } if ((string)cBFilters.SelectedItem == "FillHoles") { pictureTransform = Grayscale.CommonAlgorithms.BT709.Apply(pictureTransform); Threshold threshold = new Threshold(127); threshold.ApplyInPlace(pictureTransform); AForge.Imaging.Filters.FillHoles filter = new AForge.Imaging.Filters.FillHoles(); filter.MaxHoleHeight = 5; filter.MaxHoleWidth = 15; filter.CoupledSizeFiltering = false; Bitmap newImage = filter.Apply(pictureTransform); pbChoose.SizeMode = PictureBoxSizeMode.CenterImage; pBNew.Image = newImage; } if ((string)cBFilters.SelectedItem == "Opening") { AForge.Imaging.Filters.Opening filter = new AForge.Imaging.Filters.Opening(); Bitmap newImage = filter.Apply(pictureTransform); pbChoose.SizeMode = PictureBoxSizeMode.CenterImage; pBNew.Image = newImage; } if ((string)cBFilters.SelectedItem == "Closing") { AForge.Imaging.Filters.Closing filter = new AForge.Imaging.Filters.Closing(); Bitmap newImage = filter.Apply(pictureTransform); pbChoose.SizeMode = PictureBoxSizeMode.CenterImage; pBNew.Image = newImage; } if ((string)cBFilters.SelectedItem == "Erosion") { AForge.Imaging.Filters.Erosion filter = new AForge.Imaging.Filters.Erosion(); Bitmap newImage = filter.Apply(pictureTransform); pbChoose.SizeMode = PictureBoxSizeMode.CenterImage; pBNew.Image = newImage; } if ((string)cBFilters.SelectedItem == "Dilatation") { AForge.Imaging.Filters.Dilatation filter = new AForge.Imaging.Filters.Dilatation(); Bitmap newImage = filter.Apply(pictureTransform); pbChoose.SizeMode = PictureBoxSizeMode.CenterImage; pBNew.Image = newImage; } if ((string)cBFilters.SelectedItem == "Edges") { AForge.Imaging.Filters.Edges filter = new AForge.Imaging.Filters.Edges(); Bitmap newImage = filter.Apply(pictureTransform); pbChoose.SizeMode = PictureBoxSizeMode.CenterImage; pBNew.Image = newImage; } }
public static Image ApplyImageProperties(byte[] blobContent, ImageProperties properties) { Bitmap image = null; try { using (var ms = new MemoryStream(blobContent)) { image = (Bitmap)System.Drawing.Image.FromStream(ms, false, false); image = AForge.Imaging.Image.Clone(image, PixelFormat.Format24bppRgb); if (properties.Crop != null) { AForge.Imaging.Filters.Crop filter = new AForge.Imaging.Filters.Crop(new Rectangle(properties.Crop.XOffset, properties.Crop.YOffset, properties.Crop.CropWidth, properties.Crop.CropHeight)); image = filter.Apply(image); } if (properties.ImageWidth != properties.OriginalWidth || properties.ImageHeight != properties.OriginalHeight) { var filter = new ResizeBicubic(properties.ImageWidth, properties.ImageHeight); image = filter.Apply(image); } if (properties.Colors != null) { if (properties.Colors.TransparentColor != null) { image.MakeTransparent(ColorTranslator.FromHtml("#" + properties.Colors.TransparentColor)); } var brightness = properties.Colors.Brightness; var bfilter = new BrightnessCorrection(brightness); bfilter.ApplyInPlace(image); var contrast = properties.Colors.Contrast; var cfilter = new ContrastCorrection(contrast); cfilter.ApplyInPlace(image); if (properties.Colors.Hue != 0) { var hue = properties.Colors.Hue; HueModifier filter = new HueModifier(hue); filter.ApplyInPlace(image); } var saturation = properties.Colors.Saturation; var sfilter = new SaturationCorrection(saturation * 0.01f); sfilter.ApplyInPlace(image); } # region Effects if (!String.IsNullOrEmpty(properties.Effects)) { var effects = properties.Effects.Split(';'); foreach (var item in effects) { switch (item) { case "Grayscale": var g = new Grayscale(0.2125, 0.7154, 0.0721); image = g.Apply(image); break; case "Sepia": var s = new Sepia(); image = AForge.Imaging.Image.Clone(image, PixelFormat.Format24bppRgb); s.ApplyInPlace(image); break; case "Rotate Channels": image = AForge.Imaging.Image.Clone(image, PixelFormat.Format24bppRgb); var r = new RotateChannels(); r.ApplyInPlace(image); break; case "Invert": var i = new Invert(); i.ApplyInPlace(image); break; case "Blur": var b = new Blur(); b.ApplyInPlace(image); break; case "Gaussian Blur": var gb = new GaussianBlur(4, 11); gb.ApplyInPlace(image); break; case "Convolution": int[,] kernel = { { -2, -1, 0 }, { -1, 1, 1 }, { 0, 1, 2 } }; var c = new Convolution(kernel); c.ApplyInPlace(image); break; case "Edges": var e = new Edges(); e.ApplyInPlace(image); break; } } } # endregion } } catch (Exception) {
public void GetImageProcess()//显示图片时读取 { XmlNode node = xmlDoc.SelectSingleNode("PatientBackImage/Image[@Name='" + ImageName + "'] "); if (node != null) { if (node.HasChildNodes) { XmlNodeList xmlNolist = node.ChildNodes; foreach (XmlNode xn in xmlNolist) { XmlElement xmlE = (XmlElement)xn; switch (xmlE.Name) { case "DrawLine": DrawLine dl = new DrawLine(Convert.ToInt32(xmlE.GetAttribute("StartPointX")), Convert.ToInt32(xmlE.GetAttribute("StartPointY")), Convert.ToInt32(xmlE.GetAttribute("EndPointX")), Convert.ToInt32(xmlE.GetAttribute("EndPointY"))); dl.ID = Convert.ToInt32(xmlE.GetAttribute("ID")); frmImgProcess.imgProcess.drawArea.GraphicsList.UnselectAll(); frmImgProcess.imgProcess.drawArea.GraphicsList.Add(dl); frmImgProcess.imgProcess.drawArea.Capture = true; frmImgProcess.imgProcess.drawArea.Refresh(); break; case "DrawRectangle": DrawRectangle dr = new DrawRectangle(Convert.ToInt32(xmlE.GetAttribute("X")), Convert.ToInt32(xmlE.GetAttribute("Y")), Convert.ToInt32(xmlE.GetAttribute("Width")), Convert.ToInt32(xmlE.GetAttribute("Height"))); dr.ID = Convert.ToInt32(xmlE.GetAttribute("ID")); frmImgProcess.imgProcess.drawArea.GraphicsList.UnselectAll(); frmImgProcess.imgProcess.drawArea.GraphicsList.Add(dr); frmImgProcess.imgProcess.drawArea.Capture = true; frmImgProcess.imgProcess.drawArea.Refresh(); break; case "DrawEllipse": DrawEllipse de = new DrawEllipse(Convert.ToInt32(xmlE.GetAttribute("X")), Convert.ToInt32(xmlE.GetAttribute("Y")), Convert.ToInt32(xmlE.GetAttribute("Width")), Convert.ToInt32(xmlE.GetAttribute("Height"))); de.ID = Convert.ToInt32(xmlE.GetAttribute("ID")); frmImgProcess.imgProcess.drawArea.GraphicsList.UnselectAll(); frmImgProcess.imgProcess.drawArea.GraphicsList.Add(de); frmImgProcess.imgProcess.drawArea.Capture = true; frmImgProcess.imgProcess.drawArea.Refresh(); break; case "DrawPoint": DrawPoint dp = new DrawPoint(Convert.ToInt32(xmlE.GetAttribute("X")), Convert.ToInt32(xmlE.GetAttribute("Y"))); dp.ID = Convert.ToInt32(xmlE.GetAttribute("ID")); frmImgProcess.imgProcess.drawArea.GraphicsList.UnselectAll(); frmImgProcess.imgProcess.drawArea.GraphicsList.Add(dp); frmImgProcess.imgProcess.drawArea.Capture = true; frmImgProcess.imgProcess.drawArea.Refresh(); break; case "DrawPolygon": DrawPolygon dpy = new DrawPolygon(); string pointStr = xmlE.GetAttribute("pointStr"); string[] poList = pointStr.Split('$'); string[] p = { }; for (int i = 0; i < poList.Length; i++) { if (poList[i].ToString() != "") { p = poList[i].Split(','); Point point = new Point(Convert.ToInt32(p[0]), Convert.ToInt32(p[1])); dpy.pointArray.Add(point); } } dpy.ID = Convert.ToInt32(xmlE.GetAttribute("ID")); frmImgProcess.imgProcess.drawArea.GraphicsList.UnselectAll(); frmImgProcess.imgProcess.drawArea.GraphicsList.Add(dpy); frmImgProcess.imgProcess.drawArea.Capture = true; frmImgProcess.imgProcess.drawArea.Refresh(); break; case "TextBox": ToolText tx = new ToolText(frmImgProcess.imgProcess.drawArea); tx.Location = new Point(Convert.ToInt32(xmlE.GetAttribute("X")), Convert.ToInt32(xmlE.GetAttribute("Y"))); tx.Width = Convert.ToInt32(xmlE.GetAttribute("Width")); tx.Height = Convert.ToInt32(xmlE.GetAttribute("Height")); tx.Name = xmlE.GetAttribute("ID"); tx.Min = true; tx.Max = true; tx.IsChangeSize = true; tx.ReadOnly = false; tx.IsMove = true; tx.Text = xmlE.GetAttribute("Content"); tx.ForeColor = System.Drawing.Color.Red; frmImgProcess.imgProcess.drawArea.Controls.Add(tx); break; case "Process": XmlNode nodeProcess = xmlDoc.SelectSingleNode("PatientBackImage/Image[@Name='" + ImageName + "']/Process "); if (nodeProcess != null) { if (nodeProcess.HasChildNodes) { XmlNodeList xmlNodeProcesslist = nodeProcess.ChildNodes; foreach (XmlNode xn2 in xmlNodeProcesslist) { XmlElement xmlE2 = (XmlElement)xn2; switch (xmlE2.Name) { case "BrightnessCorrection": //亮度 BrightnessCorrection brightnesscorr = new BrightnessCorrection(); brightnesscorr.AdjustValue = double.Parse(xmlE2.GetAttribute("Value")); frmImgProcess.imgProcess.ApplyFilter(brightnesscorr); break; case "ContrastCorrection": //对比 ContrastCorrection contrastCorr = new ContrastCorrection(); contrastCorr.Factor = double.Parse(xmlE2.GetAttribute("Value")); frmImgProcess.imgProcess.ApplyFilter(contrastCorr); break; case "HueModifier": //色相 HueModifier huemodifier = new HueModifier(); huemodifier.Hue = int.Parse(xmlE2.GetAttribute("Value")); frmImgProcess.imgProcess.ApplyFilter(huemodifier); break; case "Saturation": //饱和度 SaturationCorrection saturationcorr = new SaturationCorrection(); saturationcorr.AdjustValue = double.Parse(xmlE2.GetAttribute("Value")); frmImgProcess.imgProcess.ApplyFilter(saturationcorr); break; case "GrayscaleBT709": //灰度 GrayscaleBT709 grayscalebt = new GrayscaleBT709(); frmImgProcess.imgProcess.ApplyFilter(grayscalebt); break; case "Filter": //过滤 ColorFiltering colorfilter = new ColorFiltering(); IntRange red = new IntRange(0, 255); IntRange green = new IntRange(0, 255); IntRange blue = new IntRange(0, 255); byte fillR = 0, fillG = 0, fillB = 0; string fillType = ""; red.Min = int.Parse(xmlE2.GetAttribute("RedMin")); red.Max = int.Parse(xmlE2.GetAttribute("RedMax")); green.Min = int.Parse(xmlE2.GetAttribute("GreenMin")); green.Max = int.Parse(xmlE2.GetAttribute("GreenMax")); blue.Min = int.Parse(xmlE2.GetAttribute("BlueMin")); blue.Max = int.Parse(xmlE2.GetAttribute("BlueMax")); fillR = byte.Parse(xmlE2.GetAttribute("FillRed")); fillG = byte.Parse(xmlE2.GetAttribute("FillGreen")); fillB = byte.Parse(xmlE2.GetAttribute("FillBlue")); fillType = xmlE2.GetAttribute("FillType"); colorfilter.Red = red; colorfilter.Green = green; colorfilter.Blue = blue; colorfilter.FillColor = new RGB(fillR, fillG, fillB); if (fillType == "OutSide") { colorfilter.FillOutsideRange = true; } else { colorfilter.FillOutsideRange = false; } frmImgProcess.imgProcess.ApplyFilter(colorfilter); break; case "Gaussian": //柔化 GaussianBlur gaussianBlur = new GaussianBlur(); gaussianBlur.Sigma = double.Parse(xmlE2.GetAttribute("Sigma")); gaussianBlur.Size = int.Parse(xmlE2.GetAttribute("Size")); frmImgProcess.imgProcess.ApplyFilter(gaussianBlur); break; case "DifferenceEdgeDetector": //边缘增强 DifferenceEdgeDetector differenceEdgeD = new DifferenceEdgeDetector(); frmImgProcess.imgProcess.ApplyFilter(differenceEdgeD); break; case "RotateFlip": //镜像 frmImgProcess.imgProcess.drawArea.Image.RotateFlip(RotateFlipType.RotateNoneFlipX); frmImgProcess.imgProcess.drawArea.Refresh(); break; case "PerlinNoise": //去噪 string value = ""; value = xmlE2.GetAttribute("Value"); float imageWidth = 0; float imageHeight = 0; switch (value) { case "Marble": filter = new Texturer(new MarbleTexture(imageWidth / 96, imageHeight / 48), 0.7f, 0.3f); break; case "Wood": filter = new Texturer(new WoodTexture(), 0.7f, 0.3f); break; case "Clouds": filter = new Texturer(new CloudsTexture(), 0.7f, 0.3f); break; case "Labyrinth": filter = new Texturer(new LabyrinthTexture(), 0.7f, 0.3f); break; case "Textile": filter = new Texturer(new TextileTexture(), 0.7f, 0.3f); break; case "Dirty": TexturedFilter f = new TexturedFilter(new CloudsTexture(), new Sepia()); f.PreserveLevel = 0.30f; f.FilterLevel = 0.90f; filter = f; break; case "Rusty": filter = new TexturedFilter(new CloudsTexture(), new Sepia(), new GrayscaleBT709()); break; } frmImgProcess.imgProcess.ApplyFilter(filter); break; case "Sharpen": Sharpen sharpen = new Sharpen(); frmImgProcess.imgProcess.ApplyFilter(sharpen); break; case "Mean": Mean mean = new Mean(); frmImgProcess.imgProcess.ApplyFilter(mean); break; } } } } break; } } } } }
public IList <IFilter> GetFilterList(ImageProcessingSettings imageProcessingSettings) { var filterList = new List <IFilter>(); // Brightness if (imageProcessingSettings.BrightnessAdjustment.Value != 0) { BrightnessCorrection filter = new BrightnessCorrection(imageProcessingSettings.BrightnessAdjustment.Value); filterList.Add(filter); } // Contrast if (imageProcessingSettings.ContrastAdjustment.Value != 0) { ContrastCorrection filter = new ContrastCorrection(imageProcessingSettings.ContrastAdjustment.Value); filterList.Add(filter); } // Saturation if (imageProcessingSettings.SaturationAdjustment.Value != 0) { // Only use 60% of the available correction range float adjustedValue = ((float)imageProcessingSettings.SaturationAdjustment.Value / 100) * 60; float value = (float)adjustedValue / 100; SaturationCorrection filter = new SaturationCorrection(value); filterList.Add(filter); } // Sharpness if (imageProcessingSettings.SharpnessAdjustment.Value != 0) { double sigma = 1.5; GaussianSharpen filter = new GaussianSharpen(sigma, imageProcessingSettings.SharpnessAdjustment.Value); filterList.Add(filter); } // Red, Green, Blue if (imageProcessingSettings.RedAdjustment.Value != 0 || imageProcessingSettings.GreenAdjustment.Value != 0 || imageProcessingSettings.BlueAdjustment.Value != 0) { LevelsLinear filter = new LevelsLinear(); if (imageProcessingSettings.RedAdjustment.Value != 0) { float val = ((float)imageProcessingSettings.RedAdjustment.Value / 100) * 255; if (imageProcessingSettings.RedAdjustment.Value > 0) { var finalVal = 255 - (int)val; filter.InRed = new IntRange(0, finalVal); } else { val = val * -1; filter.InRed = new IntRange((int)val, 255); } } if (imageProcessingSettings.GreenAdjustment.Value != 0) { float val = ((float)imageProcessingSettings.GreenAdjustment.Value / 100) * 255; if (imageProcessingSettings.GreenAdjustment.Value > 0) { var finalVal = 255 - (int)val; filter.InGreen = new IntRange(0, finalVal); } else { val = val * -1; filter.InGreen = new IntRange((int)val, 255); } } if (imageProcessingSettings.BlueAdjustment.Value != 0) { float val = ((float)imageProcessingSettings.BlueAdjustment.Value / 100) * 255; if (imageProcessingSettings.BlueAdjustment.Value > 0) { var finalVal = 255 - (int)val; filter.InBlue = new IntRange(0, finalVal); } else { val = val * -1; filter.InBlue = new IntRange((int)val, 255); } } filterList.Add(filter); } return(filterList); }