Coefficient of variation for a moving window

I need an "R" code to calculate the coefficient of variation for a moving window of pixels in a raster image.

I made a code but I have doubts if it is actually calculating. Some pixels the values ​​are correct, others are close to what they should give.
code:

Importar as bibliotecas necessárias

library(raster)

Carregar a imagem

img <- raster("CH05.tif")

Definir o tamanho da janela móvel

window_size <- 5

Criar uma função para calcular o coeficiente de variação

cv <- function(x) {

Verificar se há valores ausentes

if (any(is.na(x))) {
return(NA)
}

Calcular o coeficiente de variação

mean_value <- mean(x, na.rm = TRUE)

Evitar divisão por zero

if (mean_value == 0) {
return(NA)
}

sd_value <- sd(x, na.rm = TRUE)

if (sd_value == 0) {
return(NA)
}

return((sd_value / mean_value) * 100)
}

Calcular o coeficiente de variação de cada pixel da imagem usando a função focal

cv_image <- focal(img, w = matrix(1, nrow = window_size, ncol = window_size), fun = cv)

Certifique-se de ter executado o código para calcular cv_image usando a função focal

Verifique se cv_image foi corretamente criado

if (!exists("cv_image")) {
print("cv_image não foi encontrado. Execute o código para calcular cv_image primeiro.")
} else {

Ajustar a extensão da nova imagem para ser igual à da imagem original

extent(cv_image) <- extent(img)
#Plotar a imagem antes
plot(cv_image, main = "Coeficiente de Variação")

Gere o histograma

hist(cv_image, main = "Histograma do Coeficiente de Variação", xlab = "Coeficiente de Variação")
}

Salvar a nova imagem

writeRaster(cv_image, "cv_image2.tif", overwrite = TRUE)

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.