oto moj kod mediany który napisałem :/ szczerze mowiac tonie miałem pojecia jak usrednic wartosci pixeli skoro kazdy jest reprezentowany przez 3 kolory bo mowie tlyko o palecie 24 bit i na razie na trym mi zalezy. ogólnie diząła wsyzstko tylko to usrednienie jest dziwne. obraz usredniony na mapie 3x3 wyglada tak jakby był na 11x11 albo i lepiej :D cos chyba nie tak, prosze o pomoc

@param img jest tablica int [szerokosc w pikselach][wysokosc w pikselach][odpowiednio kolory RGBO] O-nieuzywany.

@param amount oznacza wielkosc maski dla filtru odpowidnio dla maski 3x3 -amaunt =1 dla 5x5=2
dla 7x7 amaunt = 3. wiecej masek nie potrzebuje

public static void medianFilter(int[][][] img, int amount) {
final int MAXROWS = img.length;
final int MAXCOLS = img[0].length;

    int[][][] imgUpdate=new int[img.length][img[0].length][img[0][0].length];

    for (int cols = 0; cols < MAXCOLS; cols++) {
        for (int rows = 0; rows < MAXROWS; rows++) {

// tu jest zamotane w dziwny sposób bo miało byc nie dwa razy img w parametrze mean() tylko było imgUpdate ale cos mi nie dizalało i juz nie mam siły zmnieniac ale tak chociaxz mi zapisuje dobrze.

            imageMain.mean(rows, cols, img,img, amount);

//
}

    }

 img = imgUpdate;       

}  // end of medianFilter
private static void mean(int row, int col, int [][][] img,int [][][]imgUpdate, int sizeM){

// int k=row-sizeM;
// int l=col-sizeM;
int k=0;
int[] red=new int[(sizeM2+1)(sizeM2+1)];
int[] green=new int[(sizeM
2+1)(sizeM2+1)];
int[] blue=new int[(sizeM2+1)(sizeM*2+1)];

    for (int i =row-sizeM; i <=row+sizeM; i++) {
        for (int j =col-sizeM; j <=col+sizeM; j++) {
            if(i<0 || j<0 || i>img.length-1 || j>img[0].length-1){
                red[k]=0;
                green[k]=0;
                blue[k]=0;
            }else{
                red[k]=img[i][j][RED];
                green[k]=img[i][j][GREEN];
                blue[k]=img[i][j][BLUE];    
            }

            k++;

        }

    }
    k=0;
    Arrays.sort(red);
    Arrays.sort(green);
    Arrays.sort(blue);

// int srodk_elem_tablicy=((sizeM+sizeM+1)*(sizeM+sizeM+1)) podzielic pomijajac reszte i +1 ; wtedy by mozna ponizej zamiast 5 podstawic na stałe ta zmienna.

    imgUpdate[row][col][RED]=red[5];
    imgUpdate[row][col][GREEN]=green[5];
    imgUpdate[row][col][BLUE]=blue[5];

}

tutaj jest pewnie sporo błedów teraz jakis txtowcy bo dopiywałem tu w kodzie chyba dwie rezeczy wiec nie zxwracajcie uwagi.wystarczy poprawic:) z góry dzieki za pomoc:) pzd.