Konvoluutio
public void konvoluutio(int taulukko[][], int bias, int jakaja)
{
    int[][] tulos = new int[h][w];
 
    int y,x,y1,x1;
    int summa = 0;
    int pikseli = 0;
 
    for(y=1; y<h-1; y++)
    {
        for(x=1; x<w-1; x++)
          {    
              for(y1=0; y1<3; y1++)
              {
                  for(x1=0; x1<3; x1++)
                  {
                      summa += kuva_2D[y+y1-1][x+x1-1] * taulukko[y1][x1];
                  }
              }
 
              pikseli = (summa/jakaja) + bias;
            if(pikseli > 255) pikseli = 255;
            if(pikseli < 0) pikseli = 0;
 
            tulos[y][x] = pikseli;
            summa = 0;
            pikseli = 0;
        }
    }
 
    for(y=0; y<h; y++)
    {
        for(x=0; x<w; x++)
          {
               kuva_2D[y][x] = tulos[y][x];
        }
    }             
}

Esimerkkikuva kuvasta, joka on suodatettu ns. edge 3*3 pikselin maskilla
konvoluutio_reuna.JPG

Metodia on kutsuttu seuraavilla parametreilla:
bias = 0, jakaja = 1
konvoluutio(taulukko,0,1);

Käytetty maski:

// -1 -1 -1
// -1  8 -1
// -1 -1 -1
 
taulukko[0][0] = -1;
taulukko[0][1] = -1;
taulukko[0][2] = -1;
 
taulukko[1][0] = -1;
taulukko[1][1] = 8;
taulukko[1][2] = -1;
 
taulukko[2][0] = -1;
taulukko[2][1] = -1;
taulukko[2][2] = -1;
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License