Max Suodatin

Algoritmi käy kuvaa läpi pikseli kerrallaan ja jokaisen pikselin naapuri pikselit käydään myös läpi.
Pikselijoukosta etsitään suurin arvoltaan oleva pikseli (vaalein) ja se sijoitetaan tulosmatriisiin, ei alkuperäiseen kuvamatriisiin. Esimerkkiohjelman pikselijoukkomäärä on 3*3.

public void maxFilter()
{
    int[][] tulos = new int[h][w];
 
    int y,x,y1,x1;
    int suurin = 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++)
                  {
                      pikseli = kuva_2D[y+y1-1][x+x1-1];
 
                      if(pikseli > suurin)
                          suurin = pikseli;
                  }
              }
            tulos[y][x] = suurin;  // ei saa muuttaa alkuperäistä kuvaa!
            suurin = 0;
            pikseli = 0;
        }
    }
 
    // kopioidaan tulos alkuperäiseen kuvamatriisiin 
    for(y=0; y<h; y++)
    {
        for(x=0; x<w; x++)
          {
              kuva_2D[y][x] = tulos[y][x];
          }
    }             
}

Esimerkkikuva max -suodatetusta kuvasta
maxFilter.JPG

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License