##########################################################################
### Rotinas para o curso
########################################################################
#ativa o EBImage ou o instalar, caso ele já insteja instalado.
if (!requireNamespace("BiocManager", quietly = TRUE))install.packages("BiocManager")
if(!require(EBImage,quietly = TRUE))BiocManager::install("EBImage")
#ativa o ExpImage ou o instalar, caso ele já insteja instalado.
if(!require(ExpImage,quietly = TRUE))install.packages("ExpImage")
#####################################################################
#Exemplo Edicao de imagens
#####################################################################
## -----------------------------------------------------------------------------
# Obtendo o endereço da imagem de exemplo
end=example_image(1)
im=read_image(end,plot=TRUE)
## -----------------------------------------------------------------------------
##Diminuir a resolucao (tamanho da imagem)
im2=resize_image(im,w=1000,plot=TRUE)
##Cortar Imagem
im3=crop_image(im2,w =200:650,h=100:450,plot = TRUE)
##Aumentar brilho
im4=edit_image(im3,brightness = 0.1,plot = TRUE)
#Aumentar contraste
im5=edit_image(im4,contrast = 1.2,plot = TRUE)
#Aumentar gamma
im6=edit_image(im5,gamma = 1.1,plot = TRUE)
#Alterando brilho, contraste e gamma
imb=edit_image(im3,brightness = 0.1,contrast = 1.7,gamma = 1.2,plot = TRUE)
## -----------------------------------------------------------------------------
#Seleção do melhor índice
plot_indexes(imb)
#Extração da banda
gs=gray_scale(imb,method = "b/rgb",plot=TRUE)
#Segmentação
seg=segmentation(gs,treshold ="otsu",selectHigher = F,fillHull = T,plot = TRUE )
#Remoção do background
imc=extract_pixels(imb,target = seg,valueTarget = 1,valueSelect = c(0,0,0),plot = TRUE)
imc=extract_pixels(imb,target = seg,valueTarget = 1,valueSelect = c(0,1,0),plot = TRUE)
#####################################################################
#Exemplo: Contagem de objetos
#####################################################################
# Apagar a memória do R
remove(list=ls())
## -----------------------------------------------------------------------------
# Obtendo o endereço da imagem de exemplo
end=example_image(2)
end
im=read_image(end,plot=TRUE)
## -----------------------------------------------------------------------------
##Diminuir a resolucao (tamanho da imagem)
im2=resize_image(im,w=800,plot=TRUE)
## -----------------------------------------------------------------------------
#Selecionando o melhor indice para a segmentacao da folha
plot_indexes(im2)
ind=gray_scale(im2,"ExG",plot=T)
## -----------------------------------------------------------------------------
MatrizSegmentada=segmentation(ind,treshold = 0.20,fillHull = F,selectHigher = T,plot=T)
MatrizSegmentada=segmentation(ind,treshold = 0.40,fillHull = F,selectHigher = T,plot=T)
MatrizSegmentada=segmentation(ind,treshold = 0.60,fillHull = F,selectHigher = T,plot=T)
MatrizSegmentada=segmentation(ind,treshold = 0.80,fillHull = F,selectHigher = T,plot=T)
## -----------------------------------------------------------------------------
Folha=segmentation(ind,treshold = 0.40,fillHull = F,selectHigher = T,plot=T)
## -----------------------------------------------------------------------------
im3=extract_pixels(im2,target =Folha,valueTarget =1,valueSelect = c(0,0,0),plot=T )
## -----------------------------------------------------------------------------
#Selecionando o melhor indice para a segmentacao dos ovos
plot_indexes(im3)
#Utilizando o indice
b=gray_scale(im3,method = "b",plot=T)
## -----------------------------------------------------------------------------
MatrizSegmentada2=segmentation(b,treshold = 0.75,fillHull = T,selectHigher = T,plot = T)
## -----------------------------------------------------------------------------
Medidas=measure_image(MatrizSegmentada2)
Medidas$ObjectNumber
## -----------------------------------------------------------------------------
im4=extract_pixels(im2,target =MatrizSegmentada2,valueTarget =0,valueSelect = c(1,0,0),plot=T )
## -----------------------------------------------------------------------------
im5=join_image(im2,im4,plot = TRUE)
#####################################################################
#Exemplo: Estimação da área foliar em acerola
#####################################################################
# Apagar a memória do R
remove(list=ls())
## -----------------------------------------------------------------------------
#######################################################
#Abrir imagem das folhas
end1=example_image(3)
im=read_image(end1,plot=TRUE)
#Abrir paleta de cores do fundo
end2=example_image(4)
fundo=read_image(end2,plot=TRUE)
#Abrir paleta de cores das folhas
end3=example_image(5)
folhas=read_image(end3,plot=TRUE)
#Abrir paleta de cores referência
end4=example_image(6)
ref=read_image(end4,plot=TRUE)
## -----------------------------------------------------------------------------
#################################################################
#Segmentacao para separar as folhas do restante
folhas.seg=segmentation_logit(im,foreground=folhas,background=list(fundo,ref),sample=2000,fillHull=TRUE,plot=TRUE)
#Segmentacao para separar o objeto de referencia do restante
ref.seg=segmentation_logit(im,foreground=ref,background=list(fundo,folhas),sample=2000,fillHull=TRUE,plot=TRUE)
## -----------------------------------------------------------------------------
medidas=measure_image(folhas.seg)
#numero de objetos e medias
medidas
## -----------------------------------------------------------------------------
#Excluindo os ruidos
medidas=measure_image(folhas.seg,noise = 1000)
#numero de objetos e medias
medidas
## -----------------------------------------------------------------------------
#Convertendo a area dos objetos para cm2
#Identificando a area do objeto de referência (maior area)
# A area conhecida do objeto de referência tem 8.5 x 5.5 cm e sua area segmentada esta no objeto ref.seg
medidasref=measure_image(img = folhas.seg,noise =1000,id=ref.seg,length =8.5,width =5.5 )
#numero de objetos e medias
medidasref
## -----------------------------------------------------------------------------
#Plotar resultados das areas em pixel e salvar em imagem jpg
plot_meansures(im,medidasref$measures[,1],coordy=medidasref$measures[,2],text=round(medidasref$measures[,3],1),col="red",
cex = 0.9 ,plot=TRUE)
#####################################################################
#Exemplo: Estimação do comprimento da plântula
#####################################################################
# Apagar a memória do R
remove(list=ls())
## -----------------------------------------------------------------------------
end1=example_image(10)
im=read_image(end1,plot=TRUE)
## -----------------------------------------------------------------------------
#Selecionando o melhor indice para a segmentacao da parte aerea
plot_indexes(im)
#Parte aérea
i1=gray_scale(im,method = "ExG",plot=T)
## -----------------------------------------------------------------------------
Seg=segmentation(i1,treshold = "otsu",selectHigher = TRUE,fillHull = TRUE,plot = TRUE)
## -----------------------------------------------------------------------------
PA=thinning_image(Seg,plot = TRUE)
#Obtenção do comprimento da PA em pixels
sum(PA)
## -----------------------------------------------------------------------------
im2=mask_pixels(im,TargetPixels=PA==1,plot=F)
im3=join_image(im,im2,plot=T)
########################################################################
## -----------------------------------------------------------------------------
#Selecionando o melhor indice para a segmentacao da parte radicular
plot_indexes(im)
## -----------------------------------------------------------------------------
b=gray_scale(im,method = "b",plot=T)
## -----------------------------------------------------------------------------
Seg=segmentation(b,treshold = 0.65,selectHigher = TRUE,fillHull = TRUE,plot = TRUE)
## -----------------------------------------------------------------------------
radicula=thinning_image(Seg,plot = TRUE)
#Obtenção do comprimento da raiz em pixels
sum(radicula)
## -----------------------------------------------------------------------------
im2=mask_pixels(im,TargetPixels=radicula==1,plot=F)
im3=join_image(im,im2,plot=T)
## -----------------------------------------------------------------------------
Seg2=segmentation(b,treshold = 0.5,selectHigher = FALSE,fillHull = TRUE,plot=TRUE)
## -----------------------------------------------------------------------------
Seg2b=EBImage::erode(Seg2)
EBImage::display(Seg2b)
## -----------------------------------------------------------------------------
PA=thinning_image(Seg2b,plot = TRUE)
#Obtenção do comprimento da raiz em pixels
sum(PA)
## -----------------------------------------------------------------------------
im4=mask_pixels(im,TargetPixels=PA==1,plot=F,)
im4=join_image(im,im4,plot=T)