Mediaanisuodin

Esimerkkiohjelma suodattaa harmaasävykuvan mediaanisuodatuksella. Mediaania varten otetaan kuvasta kerrallaan 3*3 pikseliä ja lasketaan yhdeksästä pikselistä mediaani, joka sijoitetaan yhdeksän pikselin muodotaman "neliön" keskelle.

public void mediaanisuodin()   
{
    int[] pikselit = new int[9];
    int y,x,y1,x1;
    int i=0;
 
    for(y=1; y<h-1; y++)  // h on kuvan korkeus
    {
          for(x=1; x<w-1; x++) // w on kuvan leveys
          {
              for(y1=-1; y1<=1; y1++)
              {
                for(x1=-1; x1<=1; x1++)
                  {
                    pikselit[i++] = kuva_2D[y+y1][x+x1];
                  }
            }
            kuva_2D[y][x] = mediaani(pikselit);
            i=0;
        }
    }
}
 
public int mediaani(int[] taulu)
{
    int pituus = taulu.length;
 
    for(int i=0; i<pituus-1; i++)
    {
        for(int j=i+1; j<pituus; j++)
        {
            if(taulu[i] > taulu[j])
            {
                int apu = taulu[i];
                taulu[i] = taulu[j];
                taulu[j] = apu;
            }
        }
    }
    return taulu[pituus/2];
}

Esimerkkikuva mediaanisuodatetusta kuvasta
m_suodin.JPG

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