Dada uma matriz numérica de “mapa de altura” em R, como posso encontrar todos os máximos locais?

Eu tenho uma matriz R com valores numéricos não negativos. A matriz é efetivamente um mapa de altura 2D, e eu quero encontrar todos os máximos locais nessa matriz. Para picos "planos", onde os elementos vizinhos são iguais entre si (e eles são coletivamente um máximo local), não me importo com o que acontece, desde que eu obtenha pelo menos uma coordenada dentro de cada região "plana".

Existe alguma função para fazer isso de forma eficiente? Obviamente, eu poderia escrever o loop manualmente para testar todos os elementos individualmente, mas fazer isso em R seria muito lento. Eu preciso fazer isso para cerca de um milhão de matrizes, com uma média de cerca de 884 elementos por matriz.

Idealmente, haveria uma função que toma a matriz como entrada e retorna uma matriz de 2 colunas com a coluna 1 sendo coordenadas de linha, sendo a coluna 2 as coordenadas da coluna e uma linha para cada máximo local na matriz.

Máximos locais nas bordas da matriz são permitidos. Áreas fora da matriz podem ser tratadas como tendo altura zero.

Matriz de exemplo reproduzível para usar:

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

questionAnswers(1)

yourAnswerToTheQuestion