The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Exemplo: Estimação de área foliar doente

Alcinei Mistico Azevedo (ICA-UFMG)

2024-05-07

Introdução

Obrigado por utilizar o pacote ExpImage. Este pacote foi desenvolvido a fim de facilitar o uso da análise de imagens na obtenção de várias informações sobre os objetos que elas contém. Para a utilização do pacote é indispensável a instalação do pacote EBImage. Geralmente, este pacote pode ser instalado ao executar os seguintes comandos:

if (!requireNamespace("BiocManager", quietly = TRUE))

install.packages("BiocManager")

BiocManager::install("EBImage")

Porém se houver problemas na instalação sugerimos que consulte mais opções de instalação no site: https://bioconductor.org/packages/release/bioc/html/EBImage.html

Para instalar o pacote ´ExpImage´ basta utilizar o seguinte comando:

install.packages("ExpImage")

Convidamos a todos os usuários do ExpImage que venha conhecer nossos materiais didáticos sobre este e outros pacotes nos seguintes links:

https://www.youtube.com/channel/UCDGyvLCJnv9RtTY1YMBMVNQ

https://www.expstat.com/

Abrindo as imagens no R

Ativação dos pacotes

Após a instalação dos pacotes é necessário fazer sua ativação

library(EBImage)
library(ExpImage)

Abrindo as imagens.

Para abrir as imagens pode-se inicialmente indicar a pasta de trabalho onde a imagem se encontra com a função setwd. E, posteriormente, abrir a imagem com a função read_image.

Neste caso, poderiam ser utilizados comandos como esses:

#Apagar memoria do R

remove(list=ls())

#Indicar a pasta de trabalho

setwd("D:/Backup Pendrive/")

im=read_image("Imagem.jpeg",plot=TRUE)

Neste exemplo utilizaremos uma imagem contida em um link na internet:

# Obtendo o endereço da imagem de exemplo
im=read_image("https://raw.githubusercontent.com/AlcineiAzevedo/CursosImagem/main/amendoim.jpg",plot=TRUE)

seleção de banda ou índice para posterior segmentação

Inicialmente deve-se escolher um índice ou banda que proporcionará maior contraste entre a folha (foreground) e o fundo (background).


r=gray_scale(im,method = "r",plot=T)

g=gray_scale(im,method = "g",plot=T)

b=gray_scale(im,method = "b",plot=T)

Como foi possível observar, quando se utilizou a banda de verde foi possível obter melhor contraste entre a parte doente e sadia na folha. Além disso, possibilita também a segmentação da folha em relação ao fundo. Logo, podemos considerar essa banda como a melhor para fazer o processo de segmentação.

A segmentação pode ser feita considerando-se um limiar. Ou seja, um valor a partir do qual os pixeis serão consideradas como background ou foreground. O melhor valor de limiar pode ser obtido pela tentativa e erro:

MatrizSegmentada0.3=segmentation(g,treshold = 0.30,fillHull = F,selectHigher = F,plot=T)

MatrizSegmentada0.4=segmentation(g,treshold = 0.40,fillHull = F,selectHigher = F,plot=T)

MatrizSegmentada0.6=segmentation(g,treshold = 0.60,fillHull = F,selectHigher = F,plot=T)

MatrizSegmentada0.8=segmentation(g,treshold = 0.80,fillHull = F,selectHigher = F,plot=T)

Como foi possivel observar. Quando se utiliza o limiar de 0.3 é possível destacar o que é doença. E, quando se utiliza o limiar de 0.8, destaca-se o que é a folha. Assim, pode-se obter a porcentagem de área danificada pela razão entre o número de pixels correspondente a área lesionada em função da área total:

100*(sum(MatrizSegmentada0.3)/sum(MatrizSegmentada0.8))
#> [1] 6.350121

Para verificar se a classificação da área danificada está correta, podemos destacar a área doente na imagem:

im3=mask_pixels(im,TargetPixels=MatrizSegmentada0.3==1,col.TargetPixels = "red",plot=F)

im3b=mask_pixels(im,TargetPixels=MatrizSegmentada0.3==1,Contour =TRUE,col.TargetPixels = "red",plot=F)

im4=join_image(im,im3,im3b,plot=T)

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.