Obrigado por utilizar o pacote ExpImage
. Este pacote foi
desenvolvido a fim de facilitar o uso da análise 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 imagens contidas no banco de dados do pacote. Vamos utilizar neste exemplo 4 imagens. Uma da imagem a ser avaliada e 3 de paletas de cores a serem utilizadas na segmentação.
#######################################################
#Abrir imagem das folhas
end1=example_image(3)
im=read_image(end1,plot=TRUE)
Para resolver este problema nós vamos fazer duas segmentações. A primeira para obter os pixels referente apenas às folhas. A segunda segmentação será feita para obter os pixels correspondente apenas ao objeto de referência.
#################################################################
#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)
Agora que temos os pixels referentes apenas às folhas podemos estimar várias medidas com a função measure_image
#numero de objetos e medias
medidas
#> $ObjectNumber
#> [1] 29
#>
#> $measures
#> x y area perimeter radius.mean radius.sd radius.min radius.max
#> 1 251.958 88.272 4570 252 39.791 10.685 25.111 61.805
#> 2 64.945 79.743 3566 214 34.801 7.546 25.441 50.273
#> 3 408.187 89.935 4439 232 38.153 8.092 26.367 55.248
#> 4 179.883 86.070 3692 214 34.856 7.561 25.490 51.385
#> 5 332.636 91.760 4571 240 39.074 7.683 29.686 56.801
#> 6 498.514 102.643 5626 261 43.247 8.295 33.455 60.988
#> 7 120.887 85.098 1980 184 27.578 9.039 14.695 44.913
#> 8 430.293 221.425 4515 250 39.599 10.359 26.742 61.081
#> 9 122.486 219.500 3814 214 35.081 6.013 25.418 47.765
#> 10 207.395 227.881 4293 241 38.459 9.065 26.963 57.836
#> 11 508.731 223.660 3444 201 33.461 6.338 25.039 47.638
#> 12 353.113 213.193 2248 160 26.728 4.080 21.134 36.384
#> 13 283.715 222.830 2475 180 28.758 6.909 19.125 42.410
#> 14 511.958 330.873 3493 205 33.835 6.580 25.308 50.367
#> 15 364.454 339.513 4710 252 40.145 9.787 27.825 60.233
#> 16 129.376 341.427 4687 232 38.806 6.498 29.444 54.093
#> 17 434.535 340.131 3105 210 32.884 8.818 21.522 51.898
#> 18 292.710 338.440 2986 202 31.903 7.534 20.912 47.038
#> 19 223.457 354.138 4525 234 38.577 7.346 29.909 55.385
#> 20 498.596 470.443 5191 256 41.327 8.314 29.733 60.784
#> 21 309.043 486.995 4577 229 38.400 6.580 30.207 54.553
#> 22 84.078 480.203 2301 192 29.245 8.945 17.347 47.873
#> 23 226.525 486.900 3145 195 31.879 5.638 24.269 45.265
#> 24 371.589 483.506 2724 203 31.528 9.005 19.060 50.146
#> 25 148.362 483.259 2944 197 31.348 6.536 22.112 45.624
#> 26 434.001 481.173 2392 168 27.790 5.212 21.007 39.957
#> 27 509.491 597.285 4123 227 37.311 8.405 25.703 55.118
#> 28 436.662 608.762 4397 247 39.319 9.528 27.797 60.807
#> 29 351.816 607.093 4494 238 38.592 8.005 27.102 56.377
#> majoraxis eccentricity theta
#> 1 109.440 0.871 -1.476
#> 2 88.341 0.809 1.431
#> 3 100.103 0.822 -1.495
#> 4 91.910 0.828 -1.542
#> 5 98.261 0.793 1.399
#> 6 108.318 0.788 1.488
#> 7 76.268 0.895 -1.434
#> 8 107.286 0.863 1.568
#> 9 87.292 0.765 1.409
#> 10 100.410 0.837 -1.373
#> 11 85.211 0.793 1.526
#> 12 65.557 0.744 1.374
#> 13 77.753 0.852 1.428
#> 14 86.426 0.799 -1.421
#> 15 106.743 0.848 1.459
#> 16 97.092 0.771 1.324
#> 17 90.481 0.874 1.525
#> 18 83.222 0.832 1.416
#> 19 97.078 0.788 -1.538
#> 20 106.915 0.813 1.559
#> 21 95.730 0.765 1.531
#> 22 79.126 0.877 1.509
#> 23 80.342 0.781 1.389
#> 24 82.415 0.850 -1.566
#> 25 80.057 0.808 1.308
#> 26 70.581 0.788 -1.550
#> 27 97.527 0.831 1.323
#> 28 102.316 0.840 1.503
#> 29 99.039 0.808 1.352
#>
#> attr(,"class")
#> [1] "measurements"
Com o comando acima temos várias medidas de áreas em pixels. Logo, é legal converter essa medida para cm² a partir do objeto de referência. Sabendo a área do objeto de referência podemos fazer a conversão com da seguinte forma:
#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 areasegmentada esta no objeto ref.seg
medidasref=measure_image(img = folhas.seg,noise =1000,id=ref.seg,length =8.5,width =5.5,plot = FALSE )
#numero de objetos e medias
medidasref
#> $ObjectNumber
#> [1] 29
#>
#> $measures
#> x y area perimeter radius.mean radius.sd radius.min
#> 1 251.958 88.272 6.245542 354.5874 55.98964 15.034789 35.33351
#> 2 64.945 79.743 4.873436 301.1179 48.96824 10.617924 35.79785
#> 3 408.187 89.935 6.066512 326.4456 53.68482 11.386196 37.10082
#> 4 179.883 86.070 5.045633 301.1179 49.04563 10.639030 35.86680
#> 5 332.636 91.760 6.246909 337.7023 54.98075 10.810695 41.77096
#> 6 498.514 102.643 7.688713 367.2513 60.85255 11.671836 47.07430
#> 7 120.887 85.098 2.705946 258.9051 38.80481 12.718714 20.67723
#> 8 430.293 221.425 6.170377 351.7732 55.71948 14.576076 37.62848
#> 9 122.486 219.500 5.212363 301.1179 49.36223 8.460850 35.76549
#> 10 207.395 227.881 5.866983 339.1094 54.11539 12.755298 37.93945
#> 11 508.731 223.660 4.706706 282.8257 47.08274 8.918155 35.23220
#> 12 353.113 213.193 3.072205 225.1349 37.60878 5.740939 29.73750
#> 13 283.715 222.830 3.382432 253.2767 40.46518 9.721605 26.91065
#> 14 511.958 330.873 4.773671 288.4541 47.60899 9.258672 35.61071
#> 15 364.454 339.513 6.436871 354.5874 56.48775 13.771219 39.15236
#> 16 129.376 341.427 6.405439 326.4456 54.60365 9.143290 41.43045
#> 17 434.535 340.131 4.243415 295.4895 46.27085 12.407746 30.28346
#> 18 292.710 338.440 4.080785 284.2328 44.89049 10.601039 29.42513
#> 19 223.457 354.138 6.184043 329.2598 54.28143 10.336505 42.08474
#> 20 498.596 470.443 7.094225 360.2158 58.15093 11.698571 41.83710
#> 21 309.043 486.995 6.255108 322.2243 54.03237 9.258672 42.50406
#> 22 84.078 480.203 3.144637 270.1619 41.15043 12.586447 24.40884
#> 23 226.525 486.900 4.298081 274.3831 44.85672 7.933190 34.14874
#> 24 371.589 483.506 3.722726 285.6399 44.36283 12.670872 26.81919
#> 25 148.362 483.259 4.023386 277.1973 44.10955 9.196760 31.11364
#> 26 434.001 481.173 3.269001 236.3916 39.10311 7.333769 29.55880
#> 27 509.491 597.285 5.634654 319.4101 52.50005 11.826617 36.16651
#> 28 436.662 608.762 6.009113 347.5520 55.32549 13.406782 39.11296
#> 29 351.816 607.093 6.141677 334.8881 54.30253 11.263779 38.13503
#> radius.max majoraxis eccentricity theta
#> 1 86.96538 153.99226 0.871 -1.476
#> 2 70.73879 124.30400 0.809 1.431
#> 3 77.73907 140.85423 0.822 -1.495
#> 4 72.30347 129.32592 0.828 -1.542
#> 5 79.92429 138.26236 0.793 1.399
#> 6 85.81579 152.41350 0.788 1.488
#> 7 63.19677 107.31617 0.895 -1.434
#> 8 85.94665 150.96138 0.863 1.568
#> 9 67.20980 122.82796 0.765 1.409
#> 10 81.38063 141.28621 0.837 -1.373
#> 11 67.03110 119.89980 0.793 1.526
#> 12 51.19567 92.24480 0.744 1.374
#> 13 59.67481 109.40570 0.852 1.428
#> 14 70.87105 121.60942 0.799 -1.421
#> 15 84.75343 150.19733 0.848 1.459
#> 16 76.11388 136.61747 0.771 1.324
#> 17 73.02531 127.31518 0.874 1.525
#> 18 66.18684 117.10109 0.832 1.416
#> 19 77.93185 136.59777 0.788 -1.538
#> 20 85.52874 150.43935 0.813 1.559
#> 21 76.76114 134.70101 0.765 1.531
#> 22 67.36176 111.33764 0.877 1.509
#> 23 63.69206 113.04867 0.781 1.389
#> 24 70.56009 115.96557 0.850 -1.566
#> 25 64.19721 112.64764 0.808 1.308
#> 26 56.22321 99.31403 0.788 -1.550
#> 27 77.55615 137.22956 0.831 1.323
#> 28 85.56110 143.96813 0.840 1.503
#> 29 79.32768 139.35708 0.808 1.352
#>
#> attr(,"class")
#> [1] "measurements"
Para a melhor visualização dos resultados, podemos sobrepor a área das folhas sobre a imagem com o seguinte comando:
#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)