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.