The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
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
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
=example_image(2)
end=read_image(end,plot=TRUE) im
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.
##Diminuir a resolucao (tamanho da imagem)
=resize_image(im,w=1000,plot=FALSE) im2
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).
#Selecionando o melhor indice para a segmentacao
=gray_scale(im2,method = "r",plot=T) r
=gray_scale(im2,method = "g",plot=T) g
=gray_scale(im2,method = "b",plot=T) b
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:
plot_indexes(im,NumberCores=2)
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:
=segmentation(b,treshold = 0.20,fillHull = F,selectHigher = T,plot=T) MatrizSegmentada
=segmentation(b,treshold = 0.40,fillHull = F,selectHigher = T,plot=T) MatrizSegmentada
=segmentation(b,treshold = 0.60,fillHull = F,selectHigher = T,plot=T) MatrizSegmentada
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:
=segmentation(r,treshold = "otsu",fillHull = F,selectHigher = T,plot=T)
MatrizSegmentada#> [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
plot_image(b,col = 3)
=segmentation(b,treshold = 0.4,fillHull = F,selectHigher = F,plot=T) MatrizSegmentada
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:
=segmentation(b,treshold = 0.4,fillHull = T,selectHigher = F,plot=T) MatrizSegmentada
Agora que temos apenas os pixels correspondente à “folha + ovos” podemos substituir o background por outra cor, como a preta:
=extract_pixels(im2,target =MatrizSegmentada,valueTarget =1,valueSelect = c(0,0,0),plot=T ) im3
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:
=gray_scale(im3,method = "r",plot=T) r
=gray_scale(im3,method = "g",plot=T) g
=gray_scale(im3,method = "b",plot=T) b
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
=segmentation(b,treshold = 0.50,fillHull = T,selectHigher = T,plot = T) MatrizSegmentada2
Ótimo, conseguimos agora obter o número de objetos pela seguinte função:
=measure_image(MatrizSegmentada2) Medidas
$ObjectNumber
Medidas#> [1] 157
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:
=extract_pixels(im2,target =MatrizSegmentada2,valueTarget =0,valueSelect = c(1,0,0),plot=F ) im4
Para a melhor visualização podemos apresentar as imagens lado a lado:
=join_image(im2,im4,plot = TRUE) im5
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.