---
title: "Exemplo: Contagem de bovinos"
author: "Alcinei Mistico Azevedo (ICA-UFMG)"
date: "`r Sys.Date()`"
output: rmarkdown::html_vignette
fig_caption: yes
vignette: >
  %\VignetteIndexEntry{Exemplo: Contagem de bovinos}
  %\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 analise 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 no banco de dados do pacote.


```{r}
# Obtendo o endereço da imagem de exemplo
end=example_image(11)
im=read_image(end,plot=TRUE)
```

Vamos verificar qual é o melhor índice para fazer a segmentação.

```{r}
plot_indexes(im,NumberCores=2)
```

O Índice ExG é uma ótima opção para a segmentação, pois os bovinos se destacaram bastante em relação ao solo.

```{r}
#Criando o objeto com o índice
im2=gray_scale(im,method = "ExG",plot=T)

```

Agora podemos fazer a segmentação. Para isso utilizaremos o algorítimo de otsu a fim de selecionar os pixels de menores valores (foregrounds)

```{r}
max(c(im2@.Data))
im3=segmentation(im2,treshold = "otsu",selectHigher = FALSE,plot=TRUE)

```


A partir dessa imagem segmentada podemos contar o número de objetos.
```{r}
im4=measure_image(im3)
#Numero de objetos
im4$ObjectNumber

#Tamanho em pixels de cada objeto
im4$measures[,3]
```

Como pode-se observar, o número de objetos é muito superior ao número de animais. Isso é uma consequência do ruido. Podemos ver na terceira coluna da tabela anterior o número de pixels de cada objeto. Os menores valores de área são os ruidos. Logo, podemos selecionar um valor a partir do qua não consideraremos ruídos. Ao olhar o conjunto de dados podemos ver que um ruído de 50  pode permitir selecionar apenas os animais.
```{r}
im4=measure_image(im3,noise=50)
im4$measures[,1:3]

#Numero de objetos
im4$ObjectNumber
```

Para conferir se este número de animais está correto podemos marcar na imagem as coordenadas de cada animal, considerando só dados das duas primeiras colunas do conjunto de dados.

```{r}
plot_meansures(im,measurements = im4,pch=1,
               cex =2 )
```

Como podemos ver, todos os animas foram marcados. Logo, a contagem dos animais está correta.
