Dada una matriz de "mapa de altura" numérica 2D en R, ¿cómo puedo encontrar todos los máximos locales?

Tengo una matriz R con valores numéricos no negativos. La matriz es efectivamente un mapa de altura 2D, y quiero encontrar todos los máximos locales en esta matriz. Para los picos "planos", donde los elementos vecinos son iguales entre sí (y son colectivamente un máximo local), no me importa lo que suceda siempre que obtenga al menos una coordenada dentro de cada región "plana".

¿Hay alguna función para hacer esto de manera eficiente? Obviamente, podría escribir el bucle manualmente para analizar cada elemento de forma individual, pero hacerlo en R sería bastante lento. Necesito hacer esto por alrededor de un millón de matrices, con un promedio de aproximadamente 884 elementos por matriz.

Lo ideal sería que hubiera una función que tome la matriz como entrada y devuelva una matriz de 2 columnas con la columna 1 siendo las coordenadas de la fila, la columna 2 las coordenadas de la columna y una fila para cada máximo local en la matriz.

Se permiten máximos locales en los bordes de la matriz. Las áreas fuera de la matriz pueden tratarse como si tuvieran una altura cero.

Ejemplo reproducible de matriz a utilizar:

set.seed(5)
msize <- 20 # Change this to whatever you like
x <- matrix(data=abs(rnorm(msize*2)), nrow=msize, ncol=msize)

Respuestas a la pregunta(1)

Su respuesta a la pregunta