##########################################################################

### 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)