Ref.: Cap 08, item: 8.5. Fusão de imagens - MENESES, P. R.; ALMEIDA, T. D.; ROSA, A. N. D. C. S.; SANO, E. E. et al. Introdução ao Processamento de Imagens de Sensoriamento Remoto. Brasília: UnB-CNPq, 276 p., 2012.

1 Introdução

A fusão de imagens orbitais é um processo no qual várias imagens obtidas por diferentes sensores ou plataformas orbitais são combinadas para criar uma única imagem que contenha informações mais completas e de maior qualidade do que as imagens originais separadas. Essa técnica é frequentemente usada em sensoriamento remoto para melhorar a resolução espacial, espectral ou temporal das imagens, permitindo uma análise mais precisa e abrangente da área de interesse.

Existem diferentes métodos de fusão de imagens orbitais, como fusão baseada em pixel, fusão baseada em objeto e fusão baseada em área. Cada método tem suas próprias vantagens e é escolhido com base nas características das imagens originais e nos objetivos da análise.

Na prática, a fusão de imagens orbitais pode ser utilizada em uma variedade de aplicações, incluindo monitoramento ambiental, agricultura de precisão, planejamento urbano, detecção de mudanças na cobertura terrestre, entre outros. Ela desempenha um papel importante na obtenção de informações detalhadas e abrangentes sobre a superfície terrestre a partir de dados de sensoriamento remoto.

É possível realizar o processo de fusão de imagens orbitais no RStudio. O R oferece várias bibliotecas e pacotes especializados em processamento de imagens, sensoriamento remoto e análise espacial, que podem ser utilizados para realizar a fusão de imagens orbitais. Alguns dos pacotes populares para processamento de imagens e sensoriamento remoto no R incluem:

  • raster: Este pacote fornece classes e métodos para trabalhar com dados raster, incluindo a leitura, manipulação e análise de imagens raster.
  • rgdal: Este pacote fornece funções para leitura e escrita de dados geoespaciais em vários formatos, como shapefiles e geotiff, que são comumente usados em sensoriamento remoto.
  • rgeos: Este pacote fornece funções para realizar operações geométricas em objetos espaciais, o que pode ser útil para processar e analisar imagens raster.
  • landsat: Este pacote específico é voltado para o processamento de dados Landsat, uma série de satélites que coletam imagens da Terra em várias bandas espectrais. Ele fornece funções para baixar, pré-processar e analisar dados Landsat.

Além desses pacotes, há outros disponíveis que podem ser úteis dependendo das necessidades específicas do projeto. Com essas ferramentas, é possível carregar, manipular, processar e fusionar imagens orbitais diretamente no ambiente RStudio, permitindo uma análise completa dentro do mesmo ambiente de programação. Além das imagens que baixamos e cortamos, alguns outros elementos podem ser úteis para o processo de fusão:

  • Conhecimento das características das imagens: É importante entender as características das imagens que estamos trabalhando, como resolução espacial, número de bandas espectrais, sistema de coordenadas de referência, entre outros. Isso nos ajudará na escolha do método de fusão mais adequado e na interpretação dos resultados.
  • Conhecimento sobre métodos de fusão: Existem vários métodos de fusão de imagens orbitais, cada um com suas vantagens e limitações. É útil ter familiaridade com esses métodos para escolher o mais adequado para o nosso caso específico.
  • Pacotes R para processamento de imagens: é importante ter os pacotes R adequados instalados para trabalharmos com imagens raster e realizarmos o processamento necessário para a fusão das imagens.
  • Capacidade de manipulação e análise de dados no R: É útil termos conhecimento em programação em R para manipular e analisar os dados das imagens, realizar operações como reamostragem, ajuste de contraste, composição de cores, entre outras.

Além desses elementos, dependendo dos detalhes do projeto e das características das imagens, pode ser necessário adquirir ou gerar dados adicionais, como dados de referência para registro e correção geométrica das imagens, máscaras de nuvens para remoção de nuvens, entre outros.

2 Fusão de Imagens em R

Na aula de hoje iremos precisar dos pacotes a seguir. Então, antes de iniciar, realizem a instalação dos pocotes e o carregamento dos mesmos, como instruído no código a seguir.

Antes de darmos início ao trabalho, vamos conferir se estamos trabalhando no diretório correto (pasta de trabalho).

#conferindo o diretório de trabalho
getwd()
## [1] "C:/ARQUIVOS COMPUTADOR/DOUTORADO/APOSTILA PROCESSAMENTO DIGITAL DE IMAGENS"

Com os pacotes instalados e carregados, vamos carregar as imagem orbitais para prática de hoje, referente a uma área de interesse recortada no MultiSpec. As imagens orbitais que utilizaremos hoje são provenientes da base de dados do INPE. Uma delas é uma imagem pancromática (PAN) e as outras quatro são MUX (quatro bandas diferentes). Como apresentado na introdução, a imagem PAN possui uma resolução espacial mais próxima da realidade territorial comparada às imagens MUX. Com isso, tentaremos melhorar a resoulação das imagens MUX através do processo de fusão de imagem, utilizando a imagem PAN para realizar tal procedimento. Nosso primeiro passo será carregar as imagens utilizando a função raster().

#Carregamento da imagem orbital pancromática (PAN)
franca_pan <- raster("franca_pan_banda4.tif")
plot(franca_pan, col = gray.colors(256), main = "Franca PAN")

#Carregamento das imagens orbitais MUX
franca_mux_banda5 <- raster("franca_mux_banda5.tif")
franca_mux_banda6 <- raster("franca_mux_banda6.tif")
franca_mux_banda7 <- raster("franca_mux_banda7.tif")
franca_mux_banda8 <- raster("franca_mux_banda8.tif")
par(mfrow=c(2,2))
plot(franca_mux_banda5,  col = gray.colors(256), main = "Franca MUX banda 5")
plot(franca_mux_banda6,  col = gray.colors(256), main = "Franca MUX banda 6")
plot(franca_mux_banda7,  col = gray.colors(256), main = "Franca MUX banda 7")
plot(franca_mux_banda8, col = gray.colors(256), main = "Franca MUX banda 8")

Carregadas as imagens PAN e MUX, vamos conferir se todas elas estão no mesmo sistema de coordenadas (CRS), de modo a agilizar nosso processamento e sem ter que realizar as correções geométricas para as próximas análises.

# Verificar e comparar o CRS das imagens
if (identical(crs(franca_pan), crs(franca_mux_banda5)) &&
    identical(crs(franca_pan), crs(franca_mux_banda6)) &&
    identical(crs(franca_pan), crs(franca_mux_banda7)) &&
    identical(crs(franca_pan), crs(franca_mux_banda8))) {
  
  cat("Todas as imagens estão no mesmo sistema de referência de coordenadas (CRS).\n")
  
} else {
  cat("As imagens não estão no mesmo sistema de referência de coordenadas (CRS). Verifique e corrija, se necessário.\n")
}
## Todas as imagens estão no mesmo sistema de referência de coordenadas (CRS).

Confirmamos aqui que as imagens possuem o mesmo sistema de referência (crs), indicando que não é necessária a correção geométrica neste caso. Entretanto, devemos ainda confirmar se as imagens possuem mesma dimensão e resolução. É esperado que as resoluções sejam diferentes entre as imagens MUX e a imagem PAN, pois, é justamente aqui que se aplica a fusão de imagem para melhorar a resolução espacial da imagem.

# Verificar dimensões e resolução da banda PAN
print(dim(franca_pan))
## [1] 1762 1882    1
print(res(franca_pan))
## [1] 10 10
# Verificar dimensões e resolução das bandas MUX
print(dim(franca_mux_banda5))
## [1] 881 942   1
print(res(franca_mux_banda5))
## [1] 20 20
print(dim(franca_mux_banda6))
## [1] 881 942   1
print(res(franca_mux_banda6))
## [1] 20 20
print(dim(franca_mux_banda7))
## [1] 881 942   1
print(res(franca_mux_banda7))
## [1] 20 20

Constatamos que as dimensões e resoluções das imagens MUX são menores frente à imagem PAN. Para tanto, vamos realizar o redimensionamento das imagens MUX a seguir, de modo que todas possuam a mesma dimensão. Destaca-se que não alteraremos a resolução por hora, tendo em vista que este procedimento integra o procedimento de fusão de imagens.

# Redimensionar as imagens MUX para corresponder à dimensão e resolução da imagem PAN
franca_mux_banda5_resized <- projectRaster(franca_mux_banda5, franca_pan)
franca_mux_banda6_resized <- projectRaster(franca_mux_banda6, franca_pan)
franca_mux_banda7_resized <- projectRaster(franca_mux_banda7, franca_pan)

Vamos prosseguir com a fusão das imagens usando o método IHS. Neste método, a imagem pancromática (PAN) será utilizada para substituir a componente de intensidade (I) da imagem colorida (RGB), mantendo as componentes de matiz (hue - H) e saturação (saturation - S) das imagens MUX. O código a seguir mostra como realizar a fusão usando o método IHS.

# Transformação das bandas selecionadas para o espaço IHS
franca_mux_ihs <- stack(franca_mux_banda5_resized, franca_mux_banda6_resized, franca_mux_banda7_resized)

Esta linha cria uma pilha de camadas raster (RasterStack) contendo as três bandas selecionadas do sensor MUX. Essas bandas são empilhadas para formar uma única estrutura de dados onde cada camada representa uma banda diferente. A seguir vamos sobrepor as camadas MUX (bandas 5, 6 e 7) e visualizar a imagem combinada.

# Sobrepor as camadas raster
overlayed_mux <- overlay(franca_mux_banda5_resized, franca_mux_banda6_resized, franca_mux_banda7_resized, fun = mean)

# Plotar a sobreposição
plot(overlayed_mux, col = gray.colors(256))

# Substituir a componente de intensidade pela imagem PAN
franca_mux_ihs[[4]] <- franca_pan
names(franca_mux_ihs)[4] <- "intensidade"
  • intensidade <- list(franca_pan): Aqui, criamos uma lista contendo a imagem pancromática.
  • names(intensidade) <- “intensidade” : Definimos o nome da lista como “intensidade”, para indicar que esta será a componente de intensidade na composição IHS.
  • franca_mux_ihs <- stack(franca_mux_ihs, intensidade): Adicionamos a lista contendo a imagem pancromática à pilha de camadas raster franca_mux_ihs, substituindo assim a componente de intensidade pela imagem pancromática.

Para verificar se a intensidade da banda PAN foi corretamente adicionada à pilha de camadas raster franca_mux_ihs, podemos inspecionar a estrutura da pilha de camadas raster para garantir que a imagem pancromática esteja presente como a última camada, representando a componente de intensidade. Podemos usar a função names() para verificar os nomes das camadas na pilha e nlayers() para verificar o número total de camadas. Além disso, podemos usar values() para examinar os valores das camadas.

# Verificar os nomes das camadas na pilha
names(franca_mux_ihs)
## [1] "franca_mux_banda5" "franca_mux_banda6" "franca_mux_banda7"
## [4] "intensidade"
# Verificar o número total de camadas na pilha
nlayers(franca_mux_ihs)
## [1] 4

Esta linha plota a composição colorida do espaço IHS, onde a componente H (matiz) é representada pela primeira banda (vermelho), a componente S (saturação) é representada pela segunda banda (verde) e a componente I (intensidade) é representada pela terceira banda (azul). O argumento main define o título do gráfico.

# Plotar as imagens IHS
plotRGB(franca_mux_ihs, r = 1, g = 2, b = 3)

Aqui vamos sobrepor as camadas em uma imagem única para podermos comparar o resultado da fusão de imagens pelo método IHS com as imagens MUX sobrepostas sem a fusão com a imagem PAN.

# Sobrepor as camadas raster
overlayed_fusao_ihs <- overlay(franca_mux_ihs, fun = mean)

# Plotar a sobreposição
plot(overlayed_fusao_ihs, col = gray.colors(256))

Com isso, finalizamos nossa prática de hoje. Nela carregamos as imagens MUX e PAN, analisamos as características das imagens para realizar o processo de fusão IHS. Utilizamos a imagem PAN para ajustar a resolução espacial das imagens MUX e visualizamos a imagem corrigida.

Índice

Capítulo 08 - Correção Geométrica e Registro de Imagens

3 Referências Bibliográficas

ANDERSON, E. C. Making Maps with R Â: Reproducible Research. GitHub, 2021. Disponível em: https://eriqande.github.io/rep-res-web/lectures/making-maps-with-R.html.

CHAMBERS, J. M. Extending R. CRC Press, 364p., 2017. ISBN: 9781498775724.

DA SILVA, F. R.; GONÇALVES-SOUZA, T.; PATERNO, G. B.; PROVETE, D. B.; VANCINE, M. H. Análises ecológicas no R. Recife, PE: Nupeea, 1ª ed., 640p., 2022. ISBN: 9788579175640. Disponível em: https://analises-ecologicas.com/.

GAUTHIER, N. Anthromes 12K DGG (V1) analysis code and R research compendium. Harvard Dataverse, 2021. DOI: https://doi.org/10.7910/DVN/6FWPZ9.

LOVELACE, R. Introduction to visualizing spatial data in R. 2017. Disponível em:https://github.com/Robinlovelace/Creating-maps-in-R.

LOVELACE, R., NOWOSAD, J., & MUENCHOW, J. Geocomputation with R. Chapman and Hall/CRC, 353p., 2019. Disponível em: https://www.routledge.com/Geocomputation-withR/Lovelace-Nowosad-Muenchow/p/book/9780367670573

MACHLIS, S. Create maps in R in 10 (fairly) easy steps. Computerworld, 2017. Disponível em: https://www.computerworld.com/article/3038270/create-maps-in-r-in-10-fairly-easy-steps.html.

MARTOS, G. Cluster Analysis with R. 2021. Disponível em: https://rstudio-pubsstatic.s3.amazonaws.com/33876_1d7794d9a86647ca90c4f182df93f0e8.html.

MENESES, P. R.; ALMEIDA, T. D.; ROSA, A. N. D. C. S.; SANO, E. E. et al. Introdução ao Processamento de Imagens de Sensoriamento Remoto. Brasília: UnB-CNPq, 276 p., 2012.

MORENO, M. & BASILLE, M. Drawing beautiful maps programmatically with R, sf and ggplot2 - Part 1: Basics. 2021. Disponível em: https://r-spatial.org/r/2018/10/25/ggplot2-sf.html.

MUENCHOW, J.; SCHRATZ, P.; BRENNING, A. RQGIS: Integrating R with QGIS for Statistical Geocomputing. The R Journal, 9, n. 2, p. 409-428, 2017 2017. Doi: https://doi.org/10.32614/RJ-2017-067.

NOVIA, D. Cluster Analysis in R: Tips for Great Analysis and Visualization. Datanovia, 2018.Disponível em: https://www.datanovia.com/en/blog/cluster-analysis-in-r-simplified-and-enhanced/.

PEBESMA, E.; BIVAND, R. Spatial Data Science: With Applications in R. Chapman and Hall/CRC, 1ª ed., 314p., 2023. Doi: https://doi.org/10.1201/9780429459016.

R-BLOGGERS. Cluster Analysis in R. 2021. Disponível em: https://www.rbloggers.com/2021/04/cluster-analysis-in-r/.

STANIAK, M.; BIECEK, P. The Landscape of R Packages for Automated Exploratory Data Analysis. The R Journal, v. 11, n. 2, 23 p., 2019. Disponível em: https://arxiv.org/pdf/1904.02101.

VENABLES, W. N.; SMITH, D. M. An Introduction to R. R Core Team, 2017. Disponível em: http://colinfay.me/intro-to-r/#.

WICKHAM, H. Advanced R. CRC Press, 2ª ed., 2022. Disponível em: https://advr.hadley.nz/#license

:::