---
title: "Exemplo: Estimação de área foliar doente"
author: "Alcinei Mistico Azevedo (ICA-UFMG)"
date: "`r Sys.Date()`"
output: rmarkdown::html_vignette
fig_caption: yes
vignette: >
  %\VignetteIndexEntry{Exemplo: Estimação de área foliar doente}
  %\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 uma imagem contida em um link na internet:

```{r}
# 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}

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:

```{r}
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:

```{r}
100*(sum(MatrizSegmentada0.3)/sum(MatrizSegmentada0.8))
```

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

```{r}
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)
```

