Cálculo de área foliar ocupada por cochonilhas

July 14, 2012
By

This post was kindly contributed by Ridículas - go there to comment and to read the full post.

Área foliar (limão) ocupada por cochonilhas (%). As determinações de área foram feitas com funções disponíveis no pacote EBImage.

No posto passado (Cálculo de área foliar) eu mostrei como calcular área foliar com o pacote EBImage do R, desenvolvido por Oleg Sklyar, Gregoire Pau, Mike Smith e Wolfgang Huber. O segundo mencionado é o mantenedor do pacote. Atualmente estou fazendo testes com o pacote porque considero promissor o seu uso em experimentos agronômicos, mais precisamente àqueles de fitopatologia, entomologia e solos. O R por ser livre pode ser usado em todas as etapas do experimento, a saber, a de aquisição dos dados considerando o processamento das imagens e de processamento de dados considerando a análise estatística. Dessa forma, alguém pode desenvolver procedimentos para análise de doenças em escalas diagramáticas avaliadas por computador, eliminando o traço de subjetividade e não reproducibilidade que existe nas notas dadas por um avaliador. E sei que os avaliadores são treinados para tal tarefa, não é qualidade desse trabalho que estou pontuando. O que considero desvantajoso nas escalas é que elas são sempre com poucos níveis (unitária de 0 à 5, por exemplo). Isso implica numa aproximação grosseira de métodos de análise de dados, principalmente porque os métodos de inferência frequentemente aplicados à esses casos supõem normalidade. A avaliação feita pelo computador gera medidas contínuas e isso é bom.

Aqui eu determino a área ocupada por cochonilha em duas folhas de limoeiro (uma planta que tenho no quintal de casa). Eu escolhi uma folha muito ocupada e outra pouco ocupada. O CMR abaixo apresenta todos os passos. Na figura que acompanha essa matéria você vê o resultado final das análises. Quando fiz minha avaliação visual das folhas eu chutei 5% e 40% de ocupação e confesso que fiquei surpreso com os resultados (errei feio). De fato, não temos boa capacidade de avaliar área em situações de distribuição pontual como essa. Por isso que acredito que uma avaliação de área pelo computador seria melhor que a de avaliadores treinados. Alguém se arrisca a submeter isso ao teste? Outro ponto importante nessa minha análise de brincadeira é que só foram consideradas as cochonilhas brancas, não me preocupei com as vermelhas. Algum esforço seria necessário para considerá-las, ou seja, para juntar o vermelho ao branco e separar do verde. Até a próxima ridícula.

#-----------------------------------------------------------------------------
# carrega o pacote

require(EBImage)

#-----------------------------------------------------------------------------
# lê imagem com folhas digitalizadas

fol <- readImage("http://www.leg.ufpr.br/~walmes/ridiculas/folhas3.jpg")
str(fol)

display(fol) # vê a imagem
hist(fol)    # histograma dos componentes verde, vermelho e azul

#-----------------------------------------------------------------------------
# tratamento

fol2 <- imageData(channel(fol, mode="blue")) # seleciona um canal
fol2 <- 1-fol2                               # inverte as tonalidades
hist(fol2)                                   # histograma dos tons de cinza

display(fol2) # escala cinza com claro sendo a folha

#-----------------------------------------------------------------------------
# dicotomiza para branco e preto

fol2[fol2<0.5] <- 0
fol2[fol2>=0.5] <- 1

display(fol2)

#-----------------------------------------------------------------------------
# mais tratamento

fol3 <- bwlabel(fol2)     # coloca os rótulos nas regiões disjuntas
fol4 <- fillHull(fol3)    # remove os pontos pretos dentro do branco

display(fol3)
display(fol4)

#-----------------------------------------------------------------------------
# cálculos

f.ocu <- computeFeatures.shape(fol3) # folha ocupada
f.tot <- computeFeatures.shape(fol4) # folha total

p <- f.ocu[, "s.area"]/f.tot[, "s.area"]
p <- p[p<1]
p <- 1-p
100*p # áreas ocupadas nas folhas (%)

#-----------------------------------------------------------------------------
# prepara para exportação

fol5 <- paintObjects(fol3, fol, opac=c(NA, 0.45), col=c(NA, "blue"))
display(fol5)

xy <- computeFeatures.moment(fol3, fol)[, c("m.cx", "m.cy")] # centróides
font <- drawfont(weight=600, size=15)
fol5 <- drawtext(fol5, xy=xy, labels=paste(format(100*p, digits=3), "%"),
                 font=font, col="yellow")
display(fol5)

writeImage(fol5, "f039.jpg")

#-----------------------------------------------------------------------------


Tags: , ,

Comments are closed.