knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
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/
Após a instalação dos pacotes é necessário fazer sua ativação
library(EBImage) library(ExpImage)
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.
# 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.
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.
#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)
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.
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.
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.
plot_meansures(im,measurements = im4,pch=1, cex =2 )
Como podemos ver, todos os animas foram marcados. Logo, a contagem dos animais está correta.
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.