--- 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.