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:
Após a instalação dos pacotes é necessário fazer sua ativação
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.
Em algumas situações é interessante diminuir a resolução das imagens, pois torna-se possível reduzir o esforço computacional sem perdas expressivas na precisão das medidas a serem obtidas.
Após criação do objeto contendo a imagem (im) precisamos proceder alguma metodologia de segmentação.
Varias metodologias de segmentação podem ser utilizadas. Uma opção é o método do limiar. Para isso, é necessários escolher um índice ou banda que proporcionará maior contraste entre as sementes (foreground) e o fundo (background).
Como foi possível observar, quando se utilizou a banda de azul foi possível obter melhor contraste entre a folha e o fundo. Logo, podemos considerar essa banda como a melhor para fazer o processo de segmentação.
Outra opção de explorar outros possíveis índices é por meio do seguinte comando:
A segmentação pode ser feita considerando-se um limiar. Ou seja, um valor a partir do qual os pixels serão consideradas como background ou foreground. O melhor valor de limiar pode ser obtido pela tentativa e erro:
Como foi possível observar, dependendo do valor de limiar escolhido, pode não aparecer toda a folha ou ter muitos ruídos.
Outra opção é considerar um treshold obtido pelo método de otsu da seguinte forma:
MatrizSegmentada=segmentation(r,treshold = "otsu",fillHull = F,selectHigher = T,plot=T)
#> [1] "The threshold by Otsu method is (O valor do limiar pelo metodo otsu e): 0.4668"
Mas neste caso o melhor é considerar o limiar de 0.40
Como é possível ver, foi feita a segmentacao separando o que é folha e o que não é. Dessa forma, podemos separar o que é “folha + ovos” e o que não é, preechendo os espaços em branco dentro da folha da seguinte forma:
Agora que temos apenas os pixels correspondente à “folha + ovos” podemos substituir o background por outra cor, como a preta:
Agora, se fazermos outra segmentação apenas para selecionar os pixeis claros, conseguiremos obter os pixels correspondentes apenas aos ovos.
Para isso, vamos ver qual é a melhor banda para considerarmos na segmentação:
Como pode-se observar, o canal “azul” continua sendo melhor para a segmentação dos ovos.
Logo, vamos fazer outra segmentação para obter os pixeis correspondentes apenas aos ovos
Ótimo, conseguimos agora obter o número de objetos pela seguinte função:
Agora se estiver com dúvida que este valor está correto é só contar, rsrsrsrs.
Apenas para verificar se os pontos correspondem a todos os ovos é só substituir na imagem os pixeis correspondentes aos ovos por outra cor:
Para a melhor visualização podemos apresentar as imagens lado a lado: