Dúvidas no Script

19 views
Skip to first unread message

Heloisa Rocha

unread,
Apr 20, 2020, 8:46:36 AM4/20/20
to FIELDimageR: A R package to analyze orthomosaic images from field trials.
Olá Filipe! Primeiramente gostaria de lhe parabenizar pelo excelente trabalho com o desenvolvimento do pacote "FIELDimageR", já havia um bom tempo que estava com algumas informações de experimentos sem trabalhar. Não sabia como extrair informações de um banco de imagens um pouco extenso, e vi que o seu pacote faz isso automaticamente.
Tenho algumas fotos de folhas em experimento com estresse hídrico em soja (temos os valores reais para as clorofilas). Gostaria de saber se estamos no caminho certo em trabalhar com os dados. Conseguimos extrair alguns índices de vegetação, no entanto, não sabemos se estamos agindo de forma correta no tratamento das imagens, pela falta de experiência com linguagem R. Gostaria de saber se tem a disponibilidade em verificar se estamos no  caminho certo?
Segue os comandos:

EX1<-stack(".teste.jpg" ou .teste2.jpg" )
plotRGB(EX1, r = 1, g = 2, b = 3)
EX.L.Shape<-polygonShape(mosaic=EX1, extent=F, plot=F)
EX.L2<-fieldMask(mosaic=EX1, index="BGI", cropValue=0.8, cropAbove=T, plot=F)
index <- c ("BGI", "VARI", "GLI", "NGRDI")
EX.L4<-indices(mosaic=EX.L2$newMosaic, index=index, plot=F)
EX.L5<-stack(EX.L2$mask, EX.L4[[index]])
EX.L.Info<- getInfo(mosaic=EX.L5, fieldShape=EX.L.Shape$fieldShape, projection=F)
EX.L.Info$plotValue

Como faria para automatizar todas as imagens, tendo que selecionar a região de análise?

Segue os resultados:
teste:
layer:  0.7122894
BGI:  0.4388244
VARI:  0.1272679
GLI:  0.2282585
NGRDI:  0.09691737

teste2:
layer: 0.7386046
BGI:  0.5454227
VARI:  0.160828  
GLI:  0.1968117  
NGRDI:  0.111556

Agradeço pela atenção!
teste.JPG
teste2.JPG

fmatias

unread,
Apr 20, 2020, 10:28:40 AM4/20/20
to FIELD...@googlegroups.com


Ola Heloisa, muito obrigado pela sua pergunta. 


Segue o script que você me pediu, veja que ele está automatizado para rodar em paralelo. Além disso, como você deseja extrair apenas a média dos índices, não tem problema reduzir a resolução da imagem. 


Lembre-se que deve colocar todas as suas imagens em uma pasta (e.g. images/).

 

Boa sorte em seu trabalho e aguardo novamente qualquer outra pergunta no Fórum.

 

Obrigado,

Filipe Matias

 

### START ###


# Required packages

library
(parallel)

library
(foreach)

library
(doParallel)

library
(FIELDimageR)

library
(raster)

 

# Images names (folder directory: "./images/")

pics
<-list.files("./images/")

 

# Vegetation indices

index
<- c("BGI", "VARI", "GLI", "NGRDI")

 

################

### Parallel ###

################

 

# Number of cores

n
.core<-detectCores()-1

 

# Starting parallel

cl
<- makeCluster(n.core, output = "")

registerDoParallel
(cl)

system
.time({

  EX
.Table.Parallel <- foreach(i = 1:length(pics), .packages = c("raster","FIELDimageR"),

                               
.combine = rbind) %dopar% {

                                 EX
.L1<-stack(paste("./images/",pics[i],sep = ""))

                                 EX
.L1<-aggregate(EX.L1,fact=4) #Reducing image resolution (fast analysis)

                                 EX
.L.Shape<-fieldPolygon(mosaic=EX.L1, extent=T, plot=F) # extent=T (The whole image area will be the shapefile)

                                 EX
.L2<-fieldMask(mosaic=EX.L1, index="BGI", cropValue=0.8, cropAbove=T, plot=F) # Select one index to identify leaves and remove the background

                                 EX
.L4<-fieldIndex(mosaic=EX.L2$newMosaic, index=index, plot=F) # Indices

                                 
EX.L.Info<- fieldInfo(mosaic=EX.L4[[index]], fieldShape=EX.L.Shape$fieldShape, projection=F) # projection=F (Ignore projection. Normally used only with remote sensing images)

                                 
EX.L.Info$plotValue # Combine information from all images in one table

                               
}})

rownames
(EX.Table.Parallel)<-pics

EX
.Table.Parallel

 

### END ###




Reply all
Reply to author
Forward
0 new messages