Exemplo n.º 1
0
 private byte Convolution(int i, int j, int width, int height, byte[,] pixels, Kernel kernel)
 {
     double sum = 0;
     for (int k = -kernel.R; k <= kernel.R; k++)
         for (int l = -kernel.R; l <= kernel.R; l++)
             sum += kernel.Matrix[k + kernel.R, l + kernel.R] * pixels[GetPixelIndex(i + k, width), GetPixelIndex(j + l, height)];
     return (byte)Math.Round(sum);
 }
Exemplo n.º 2
0
 public void Filter(int width, int height, byte[,] pixels, double sigma)
 {
     Kernel kernel = new Kernel(sigma);
     byte[,] filter = new byte[width, height];
     for (int j = 0; j < height; j++)
         for (int i = 0; i < width; i++)
             filter[i, j] = Convolution(i, j, width, height, pixels, kernel);
     for (int j = 0; j < height; j++)
         for (int i = 0; i < width; i++)
             pixels[i, j] = filter[i, j];
 }