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.
end1=example_image(10) im=read_image(end1,plot=TRUE)
Para resolver este problema nós vamos fazer duas segmentações. A primeira para obter os pixeis referente apenas à parte aérea. A segunda segmentação será feita para obter os pixeis correspondente apenas à parte radicular.
Para isso, vamos primeiramente escolher a melhor banda para trabalharmos:
#Selecionando o melhor indice para a segmentacao r=gray_scale(im,method = "r",plot=T) g=gray_scale(im,method = "g",plot=T) b=gray_scale(im,method = "b",plot=T)
Como foi possível observar, a banda de azul possibilita um bom contraste da plântula do fundo. Logo, vamos escolher um valor de limiar pela tentativa e erro.
Outra opção de explorar outros possíveis índices é por meio do seguinte comando:
plot_indexes(im,NumberCores=2)
plot_image(b,col = 3) Seg=segmentation(b,treshold = 0.65,selectHigher = TRUE,fillHull = TRUE,plot = TRUE)
Quando se utiliza um limiar de 0.65 torna-se possivel separar apenas os pixels correspondentes às raízes.
A partir dessa imagem segmentada pode-se obter o comprimento da radícula a partir da contagem de pixels após o thinning:
radicula=thinning_image(Seg,plot = TRUE) #Obtenção do comprimento da raiz em pixels sum(radicula)
Para a melhor visualização do eixo obtido pelo thinning podemos apresenta-lo sobre a imagem:
im2=mask_pixels(im,TargetPixels=radicula==1,col.TargetPixels = "red",plot=F) im3=join_image(im,im2,plot=T)
Vamos escolher um novo limiar para conseguir separar o que é parte aérea.
plot_image(b,col = 3) Seg2=segmentation(b,treshold = 0.5,selectHigher = FALSE,fillHull = TRUE,plot=TRUE)
É possível observar muito ruído. Este problema pode ser amenizado utilizando a função erode do EBImage:
Seg2b=EBImage::erode(Seg2) EBImage::display(Seg2b)
Agora é possível fazer o thinning considerando os pixels correspondentes à parte aérea:
PA=thinning_image(Seg2b,plot = TRUE) #Obtenção do comprimento da raiz em pixels sum(PA)
Para a melhor visualização podemos destacar em azul o eixo correspondente ao thinning:
im4=mask_pixels(im,TargetPixels=PA==1,plot=F,) im4=join_image(im,im4,plot=T)
A unidade de medidas dos comprimentos está em pixels, mas podem ser convertido para cm quando se tem um objeto de referencia na imagem ou se sabe a área da imagem escaneada.
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.