--- title: "Exemplo: Estimação da área foliar" author: "Alcinei Mistico Azevedo (ICA-UFMG)" date: "`r Sys.Date()`" output: rmarkdown::html_vignette fig_caption: yes vignette: > %\VignetteIndexEntry{Exemplo: Estimação da área foliar} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` # 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 ```{r} 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 imagens contidas no banco de dados do pacote. Vamos utilizar neste exemplo 4 imagens. Uma da imagem a ser avaliada e 3 de paletas de cores a serem utilizadas na segmentação. ```{r} ####################################################### #Abrir imagem das folhas end1=example_image(3) im=read_image(end1,plot=TRUE) #Abrir paleta de cores do fundo end2=example_image(4) fundo=read_image(end2,plot=TRUE) #Abrir paleta de cores das folhas end3=example_image(5) folhas=read_image(end3,plot=TRUE) #Abrir paleta de cores referência end4=example_image(6) ref=read_image(end4,plot=TRUE) ``` # Segmentação Para resolver este problema nós vamos fazer duas segmentações. A primeira para obter os pixels referente apenas às folhas. A segunda segmentação será feita para obter os pixels correspondente apenas ao objeto de referência. ```{r} ################################################################# #Segmentacao para separar as folhas do restante folhas.seg=segmentation_logit(im,foreground=folhas,background=list(fundo,ref),sample=2000,fillHull=TRUE,plot=TRUE) #Segmentacao para separar o objeto de referencia do restante ref.seg=segmentation_logit(im,foreground=ref,background=list(fundo,folhas),sample=2000,fillHull=TRUE,plot=TRUE) ``` # Estimação da área foliar Agora que temos os pixels referentes apenas às folhas podemos estimar várias medidas com a função measure_image ```{r} medidas=measure_image(folhas.seg,noise = 1000) #numero de objetos e medias medidas ``` Com o comando acima temos várias medidas de áreas em pixels. Logo, é legal converter essa medida para cm² a partir do objeto de referência. Sabendo a área do objeto de referência podemos fazer a conversão com da seguinte forma: ```{r} #Convertendo a area dos objetos para cm2 #Identificando a area do objeto de referência (maior area) # A area conhecida do objeto de referência tem 8.5 x 5.5 cm #e sua areasegmentada esta no objeto ref.seg medidasref=measure_image(img = folhas.seg,noise =1000,id=ref.seg,length =8.5,width =5.5,plot = FALSE ) #numero de objetos e medias medidasref ``` Para a melhor visualização dos resultados, podemos sobrepor a área das folhas sobre a imagem com o seguinte comando: ```{r} #Plotar resultados das areas em pixel e salvar em imagem jpg plot_meansures(im,medidasref$measures[,1],coordy=medidasref$measures[,2],text=round(medidasref$measures[,3],1),col="red", cex = 0.9 ,plot=TRUE) ```