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
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;