Ciao provo ad aiutarti dandoti una possibile soluzione in Java. Prima di tutto facciamo una semplice formalizzazione :
abbiamo una matrice in input: M(axb)
M[i,j]  sia un suo elemento sulla riga generica  i e colonna j
definiamo un intorno di M[i,j]
I(i,j)={M[i-1,j-1] ,M[i-1,j] ,M[i-1,j+1],M[i,j-1],M[i,j+1],M[i+1,j-1],M[,i+1,j],M[i+1,j+1]}
con i vincoli che gli elementi che  contengono gli indici i-1 , i+1 , j-1 e j+1 appartengono all'intorno solo se gli indici non violano le dimensioni di riga e colonna.
Possiamo realizzare un programma Java con il metodo richiesto facendo una iterazione della matrice per righe e colonne che ricava l'intorno di un elemento ed esegue la media:
public class Mat {
	public static void main(String[] args) {
		int[][] m ={ {100, 100 , 48  , 48},
					 {215 , 100 , 56 ,  56},
					 {100 , 48 , 215  , 56},
					 {215 , 215,  56,   56}
		};
		int[][] n = filtroMedia(m);
		
		for( int i=0 ; i<n.length; i++){
			for(int j=0 ; j<n.length;j++){
				System.out.print("["+n[j]+"]");
			}
			System.out.println();
		}
	}
	public static int[][] filtroMedia(int[][] m) {
		int[][] n;
		
		if (m == null || m.length == 0) {
			throw new IllegalArgumentException("Argomento null");
		} else {
			n = new int[m.length][m[0].length];
			for (int i = 0; i < m.length; i++) {
				for (int j = 0; j < m.length; j++) {
					int somma = 0;
					int dimensioneIntorno = 0;
				
					if (i - 1 >= 0 ) {
						somma = somma + m[i - 1][j];
						dimensioneIntorno = dimensioneIntorno + 1;
						if ( j - 1 >=0 ) {
							somma = somma + m[i - 1][j-1];
							dimensioneIntorno = dimensioneIntorno + 1;
						}
						if ( j + 1 < m.length) {
							somma = somma + m[i - 1][j+1];
							dimensioneIntorno = dimensioneIntorno + 1;
						}
						
					}
					
					if (i + 1 < m.length) {
						somma = somma + m[i + 1][j];
						dimensioneIntorno = dimensioneIntorno + 1;
						if (j-1 >=0) {
							somma = somma + m[i + 1][j-1];
							dimensioneIntorno = dimensioneIntorno + 1;
						}
						
						if (j + 1 < m.length) {
							somma = somma + m[i + 1][j+1];
							dimensioneIntorno = dimensioneIntorno + 1;
						}
					}
					
					if (j - 1 >= 0 ) {
						somma = somma + m[j - 1];
						dimensioneIntorno = dimensioneIntorno + 1;
					}
					
					if ( j + 1 < m.length) {
						somma = somma + m[i][j + 1];
						dimensioneIntorno = dimensioneIntorno + 1;
					}
		
					
					n[i][j] = somma / dimensioneIntorno;
				}
			}
		}
		return n;
	}
}
Sperando di aver capito e non commesso errori spero di esserti stato di aiuto.