Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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());
            }
        }
Exemplo n.º 3
0
 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;
 }
Exemplo n.º 4
0
        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;
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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();
     }
 }
Exemplo n.º 10
0
        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;
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
 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();
 }
Exemplo n.º 13
0
        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);
            }
        }
Exemplo n.º 14
0
        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);
            }
        }
Exemplo n.º 16
0
        /// <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);
        }
Exemplo n.º 17
0
Arquivo: UsbCam.cs Projeto: Krl1/UP_L
        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;
        }
Exemplo n.º 18
0
        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();
                }
            }
        }
Exemplo n.º 19
0
        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;
            }
        }
Exemplo n.º 20
0
 /// <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);
        }
Exemplo n.º 22
0
        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);
            }
        }
Exemplo n.º 23
0
        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;
 }
Exemplo n.º 25
0
        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));
        }
Exemplo n.º 26
0
        /// <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!";
            }
        }
Exemplo n.º 27
0
        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;
            }
        }
Exemplo n.º 28
0
        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) {
Exemplo n.º 29
0
        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;
                        }
                    }
                }
            }
        }
Exemplo n.º 30
0
        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);
        }