Пример #1
0
        private void ChangeContrast(breinImage image)
        {
            byte[] precalc = new byte[256];

            // Precalculate all changes
            for(int i = 0;i < 256;i++) {
                double val = i / 255.0;
                val -= 0.5;
                val *= _contrast;
                val += 0.5;
                val = (int)Math.Round(val * 255);
                if(val < 0) {
                    val = 0;
                }
                else if(val > 255) {
                    val = 255;
                }
                precalc[i] = (byte)val;
            }

            byte[] b = image.ByteArray;

            for(int i = 0, l = b.Length;i < l;i += 4) {
                b[i] = precalc[b[i]];          // b
                b[i + 1] = precalc[b[i + 1]];  // g
                b[i + 2] = precalc[b[i + 2]];  // r
            }

            image.ByteArray = b;
        }
Пример #2
0
        private void ChangeContrast(breinImage image)
        {
            byte[] precalc = new byte[256];

            // Precalculate all changes
            for (int i = 0; i < 256; i++)
            {
                double val = i / 255.0;
                val -= 0.5;
                val *= _contrast;
                val += 0.5;
                val  = (int)Math.Round(val * 255);
                if (val < 0)
                {
                    val = 0;
                }
                else if (val > 255)
                {
                    val = 255;
                }
                precalc[i] = (byte)val;
            }


            byte[] b = image.ByteArray;

            for (int i = 0, l = b.Length; i < l; i += 4)
            {
                b[i]     = precalc[b[i]];      // b
                b[i + 1] = precalc[b[i + 1]];  // g
                b[i + 2] = precalc[b[i + 2]];  // r
            }

            image.ByteArray = b;
        }
Пример #3
0
        public void Run(breinImage image)
        {
            byte[] b    = image.ByteArray;
            byte[] dest = new byte[b.Length];

            GaussianBlur(image.Width, image.Height, _radius, _amount, ref b, ref dest);

            image.ByteArray = dest;
        }
Пример #4
0
        public void Run(breinImage image)
        {
            byte[] b = image.ByteArray;
            byte[] dest = new byte[b.Length];

            GaussianBlur(image.Width, image.Height, _radius, _amount, ref b, ref dest);

            image.ByteArray = dest;
        }
Пример #5
0
        private static void Sharpen(breinImage image, double amount, double radius)
        {
            byte[] src  = image.ByteArray;
            byte[] dest = new byte[src.Length];

            GaussianBlurFilter.GaussianBlur(image.Width, image.Height, radius, amount, ref src, ref dest);

            int i = 0;
            int r, g, b;

            for (int x = 0, l = image.Width; x < l; x++)
            {
                for (int y = 0, k = image.Height; y < k; y++)
                {
                    // Apply difference of gaussian blur filter
                    b = src[i] + (int)((src[i] - dest[i]) * amount);
                    g = src[i + 1] + (int)((src[i + 1] - dest[i + 1]) * amount);
                    r = src[i + 2] + (int)((src[i + 2] - dest[i + 2]) * amount);

                    // Keep inside range 0 to 255
                    if (r < 0)
                    {
                        r = 0;
                    }
                    else if (r > 255)
                    {
                        r = 255;
                    }
                    if (g < 0)
                    {
                        g = 0;
                    }
                    else if (g > 255)
                    {
                        g = 255;
                    }
                    if (b < 0)
                    {
                        b = 0;
                    }
                    else if (b > 255)
                    {
                        b = 255;
                    }

                    // Write back final bytes
                    dest[i]     = (byte)b;
                    dest[i + 1] = (byte)g;
                    dest[i + 2] = (byte)r;

                    i += 4;
                }
            }

            image.ByteArray = dest;
        }
Пример #6
0
        private static void DesaturateImage(breinImage image)
        {
            byte[] b = image.ByteArray;

            for(int i = 0, l = b.Length;i < l;i += 4) {
                b[i] = b[i + 1] = b[i + 2] = (byte)(.299 * b[i + 2] + .587 * b[i + 1] + .114 * b[i]);
            }

            image.ByteArray = b;
        }
Пример #7
0
        private static void DesaturateImage(breinImage image)
        {
            byte[] b = image.ByteArray;

            for (int i = 0, l = b.Length; i < l; i += 4)
            {
                b[i] = b[i + 1] = b[i + 2] = (byte)(.299 * b[i + 2] + .587 * b[i + 1] + .114 * b[i]);
            }

            image.ByteArray = b;
        }
Пример #8
0
        private void ChangeBrightness(breinImage image)
        {
            byte[] b = image.ByteArray;

            for(int i = 0, l = b.Length;i < l;i += 4) {
                b[i] = _precalcTable[b[i]];          // b
                b[i + 1] = _precalcTable[b[i + 1]];  // g
                b[i + 2] = _precalcTable[b[i + 2]];  // r
            }

            image.ByteArray = b;
        }
Пример #9
0
        private static void InvertImage(breinImage image)
        {
            byte[] b = image.ByteArray;

            for(int i = 0, l = b.Length;i < l;i += 4) {
                b[i] = (byte)(255 - b[i]);          // b
                b[i + 1] = (byte)(255 - b[i + 1]);  // g
                b[i + 2] = (byte)(255 - b[i + 2]);  // r
            }

            image.ByteArray = b;
        }
Пример #10
0
        private void ChangeBrightness(breinImage image)
        {
            byte[] b = image.ByteArray;

            for (int i = 0, l = b.Length; i < l; i += 4)
            {
                b[i]     = _precalcTable[b[i]];      // b
                b[i + 1] = _precalcTable[b[i + 1]];  // g
                b[i + 2] = _precalcTable[b[i + 2]];  // r
            }

            image.ByteArray = b;
        }
Пример #11
0
        private static void InvertImage(breinImage image)
        {
            byte[] b = image.ByteArray;

            for (int i = 0, l = b.Length; i < l; i += 4)
            {
                b[i]     = (byte)(255 - b[i]);      // b
                b[i + 1] = (byte)(255 - b[i + 1]);  // g
                b[i + 2] = (byte)(255 - b[i + 2]);  // r
            }

            image.ByteArray = b;
        }
Пример #12
0
        private static void Sharpen(breinImage image, double amount, double radius)
        {
            byte[] src = image.ByteArray;
            byte[] dest = new byte[src.Length];

            GaussianBlurFilter.GaussianBlur(image.Width, image.Height, radius, amount, ref src, ref dest);

            int i = 0;
            int r, g, b;

            for(int x = 0, l = image.Width;x < l;x++) {
                for(int y = 0, k = image.Height;y < k;y++) {
                    // Apply difference of gaussian blur filter
                    b = src[i]     + (int)((src[i]     - dest[i])     * amount);
                    g = src[i + 1] + (int)((src[i + 1] - dest[i + 1]) * amount);
                    r = src[i + 2] + (int)((src[i + 2] - dest[i + 2]) * amount);

                    // Keep inside range 0 to 255
                    if(r < 0)
                        r = 0;
                    else if(r > 255)
                        r = 255;
                    if(g < 0)
                        g = 0;
                    else if(g > 255)
                        g = 255;
                    if(b < 0)
                        b = 0;
                    else if(b > 255)
                        b = 255;

                    // Write back final bytes
                    dest[i] = (byte)b;
                    dest[i + 1] = (byte)g;
                    dest[i + 2] = (byte)r;

                    i += 4;
                }
            }

            image.ByteArray = dest;
        }
Пример #13
0
 public void Run(breinImage image)
 {
     Sharpen(image, _amount, _radius);
 }
Пример #14
0
 public void Run(breinImage image)
 {
     PrecalculateTable();
     ChangeBrightness(image);
 }
Пример #15
0
 public void Run(breinImage image)
 {
     Sharpen(image, _amount, _radius);
 }
Пример #16
0
 public void Run(breinImage image)
 {
     InvertImage(image);
 }
Пример #17
0
 public void Run(breinImage image)
 {
     PrecalculateTable();
     ChangeBrightness(image);
 }
Пример #18
0
 public void Run(breinImage image)
 {
     DesaturateImage(image);
 }
Пример #19
0
 public void Run(breinImage image)
 {
     ChangeContrast(image);
 }
Пример #20
0
 public void Run(breinImage image)
 {
     DesaturateImage(image);
 }
Пример #21
0
 public void Run(breinImage image)
 {
     InvertImage(image);
 }
Пример #22
0
 public void Run(breinImage image)
 {
     ChangeContrast(image);
 }