Beispiel #1
0
        private Bitmap filter(string ft)
        {
            Bitmap effect = sourceImage;

            filteredImage = sourceImage;

            if (ft == "none")
            {
                effect = sourceImage;
            }
            else if (ft == "grayscale")
            {
                effect = ApplyFilter(Grayscale.CommonAlgorithms.BT709);
            }
            else if (ft == "sepia")
            {
                effect = ApplyFilter(new Sepia());
            }
            else if (ft == "invert")
            {
                effect = ApplyFilter(new Invert());
            }
            else if (ft == "rotate")
            {
                effect = ApplyFilter(new RotateChannels());
            }
            else if (ft == "color")
            {
                effect = ApplyFilter(new ColorFiltering(new IntRange(25, 230), new IntRange(25, 230), new IntRange(25, 230)));
            }
            else if (ft == "hue")
            {
                effect = ApplyFilter(new HueModifier(50));
            }
            else if (ft == "saturation")
            {
                effect = ApplyFilter(new SaturationCorrection(0.15f));
            }
            else if (ft == "brightness")
            {
                effect = ApplyFilter(new BrightnessCorrection());
            }
            else if (ft == "contrast")
            {
                effect = ApplyFilter(new ContrastCorrection());
            }
            else if (ft == "hsl")
            {
                effect = ApplyFilter(new HSLFiltering(new IntRange(330, 30), new Range(0, 1), new Range(0, 1)));
            }
            else if (ft == "YCbCr")
            {
                YCbCrLinear f = new YCbCrLinear();
                f.InCb = new Range(-0.3f, 0.3f);
                effect = ApplyFilter(f);
            }
            else if (ft == "YCbCr")
            {
                effect = ApplyFilter(new YCbCrFiltering(new Range(0.2f, 0.9f), new Range(-0.3f, 0.3f), new Range(-0.3f, 0.3f)));
            }
            else if (ft == "threshold")
            {
                Bitmap originalImage = sourceImage;
                // get grayscale image
                sourceImage = Grayscale.CommonAlgorithms.RMY.Apply(sourceImage);
                // apply threshold filter
                effect = ApplyFilter(new Threshold());
                // delete grayscale image and restore original
                sourceImage.Dispose();
                sourceImage = originalImage;
            }
            else if (ft == "floyd")
            {
                Bitmap originalImage = sourceImage;
                // get grayscale image
                sourceImage = Grayscale.CommonAlgorithms.RMY.Apply(sourceImage);
                // apply threshold filter
                effect = ApplyFilter(new FloydSteinbergDithering());
                // delete grayscale image and restore original
                sourceImage.Dispose();
                sourceImage = originalImage;
            }
            else if (ft == "ordered")
            {
                // save original image
                Bitmap originalImage = sourceImage;
                // get grayscale image
                sourceImage = Grayscale.CommonAlgorithms.RMY.Apply(sourceImage);
                // apply threshold filter
                effect = ApplyFilter(new OrderedDithering());
                // delete grayscale image and restore original
                sourceImage.Dispose();
                sourceImage = originalImage;
            }
            else if (ft == "correlation")
            {
                effect = ApplyFilter(new Convolution(new int[,] {
                                { 1, 2, 3, 2, 1 },
                                { 2, 4, 5, 4, 2 },
                                { 3, 5, 6, 5, 3 },
                                { 2, 4, 5, 4, 2 },
                                { 1, 2, 3, 2, 1 } }));
            }
            else if (ft == "sharpen")
            {
                effect = ApplyFilter(new Sharpen());
            }
            else if (ft == "edgedetector")
            {
                // save original image
                Bitmap originalImage = sourceImage;
                // get grayscale image
                sourceImage = Grayscale.CommonAlgorithms.RMY.Apply(sourceImage);
                // apply edge filter
                effect = ApplyFilter(new DifferenceEdgeDetector());
                // delete grayscale image and restore original
                sourceImage.Dispose();
                sourceImage = originalImage;
            }
            else if (ft == "homogenity")
            {
                // save original image
                Bitmap originalImage = sourceImage;
                // get grayscale image
                sourceImage = Grayscale.CommonAlgorithms.RMY.Apply(sourceImage);
                // apply edge filter
                effect = ApplyFilter(new HomogenityEdgeDetector());
                // delete grayscale image and restore original
                sourceImage.Dispose();
                sourceImage = originalImage;
            }
            else if (ft == "sobel")
            {
                // save original image
                Bitmap originalImage = sourceImage;
                // get grayscale image
                sourceImage = Grayscale.CommonAlgorithms.RMY.Apply(sourceImage);
                // apply edge filter
                effect = ApplyFilter(new SobelEdgeDetector());
                // delete grayscale image and restore original
                sourceImage.Dispose();
                sourceImage = originalImage;
            }
            else if (ft == "rgbLinear")
            {
                LevelsLinear f = new LevelsLinear();

                f.InRed = new IntRange(30, 230);
                f.InGreen = new IntRange(50, 240);
                f.InBlue = new IntRange(10, 210);

                effect = ApplyFilter(f);
            }
            else if (ft == "jitter")
            {
                effect = ApplyFilter(new Jitter());
            }
            else if (ft == "oilpainting")
            {
                effect = ApplyFilter(new OilPainting());
            }
            else if (ft == "gaussinblur")
            {
                effect = ApplyFilter(new GaussianBlur(2.0, 7));
            }
            else if (ft == "texture")
            {
                effect = ApplyFilter(new Texturer(new TextileTexture(), 1.0, 0.8));
            }

            return effect;
        }
Beispiel #2
0
        // On Filters->YCbCr filtering
        private void yCbCrLinearFiltersItem_Click( object sender, System.EventArgs e )
        {
            YCbCrLinear filter = new YCbCrLinear( );

            filter.InCb = new DoubleRange( -0.3, 0.3 );

            ApplyFilter( filter );
            yCbCrLinearFiltersItem.Checked = true;
        }