Esempio n. 1
0
        public Bitmap Process(Bitmap image)
        {
            var greyscale = edgeFinder.ConvertToGreyscale(image);
            var processed = new Bitmap(image.Width, image.Height);

            for (int y = 0; y < image.Height; y += 1)
            {
                for (int x = 0; x < image.Width; x += 1)
                {
                    double pixelValueAsDouble = 0;
                    for (int yy = -kernelSize; yy < kernelSize; yy += 1)
                    {
                        int indexY = y + yy;
                        if (indexY < 0 || indexY >= processed.Height)
                        {
                            continue;
                        }

                        for (int xx = -kernelSize; xx < kernelSize; xx += 1)
                        {
                            int indexX = x + xx;
                            if (indexX < 0 || indexX >= processed.Width)
                            {
                                continue;
                            }

                            pixelValueAsDouble += greyscale.GetPixel(indexX, indexY).R *kernel[xx + kernelSize, yy + kernelSize];
                        }
                    }
                    int pixelValue = NormalizeToColorRange(pixelValueAsDouble);
                    processed.SetPixel(x, y, Color.FromArgb(pixelValue, pixelValue, pixelValue));
                }
            }

            return(processed);
        }