Promedio de píxeles vecinos en R para un arreglo 3×3

El promedio de píxeles vecinos, para un arreglo 3×3, es una tarea relativamente sencilla con el método adjacent de la librería raster. Este determina una matriz de direcciones para las cuales extraemos todos los values involucrados. Posteriormente, los agrupamos por los values centrales y ejecutamos la función mean en el método aggregate lo cual determina todas las medias para los bloques 3×3 (excluyendo el valor central).

Para probarlo se va a cargar el ráster ‘aleatorio.tif’ al ambiente de trabajo con:

setwd('c:/Users/Usuario/pyqgis_data/')
library(raster)
r <- raster('aleatorio.tif')

Creamos la matriz de direcciones con adjacent, la transformamos en DataFrame y determinamos los valores de r para asignarlos a una columna del DataFrame que corresponde a la variable out$to.

a <- adjacent(r, 1:ncell(r), directions=8, sorted=T)
out <- data.frame(a)
values <- values(r)
out$values_to <- values[out$to]

Con aggregate agrupamos por los valores centrales (out$from) y determinamos el promedio en un sólo paso:

means <- aggregate(out$values_to, by=list(out$from), FUN=mean)

Creamos un nuevo ráster (r_means), le asignamos los valores medios de los vecinos y visualizamos los resultados con los comandos siguientes:

r_means <- r
r_means[] <- means$x
plot(r_means)

R12

Mediante QGIS se corroboró adicionalmente que los valores de las medias de los píxeles vecinos, en un arreglo 3×3, eran los esperados.

Esta entrada fue publicada en Lenguaje R. Guarda el enlace permanente.

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s