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
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 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
=example_image(3)
end1=read_image(end1,plot=TRUE) im
#Abrir paleta de cores do fundo
=example_image(4)
end2=read_image(end2,plot=TRUE) fundo
#Abrir paleta de cores das folhas
=example_image(5)
end3=read_image(end3,plot=TRUE) folhas
#Abrir paleta de cores referência
=example_image(6)
end4=read_image(end4,plot=TRUE) ref
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
=segmentation_logit(im,foreground=folhas,background=list(fundo,ref),sample=2000,fillHull=TRUE,plot=TRUE) folhas.seg
#Segmentacao para separar o objeto de referencia do restante
=segmentation_logit(im,foreground=ref,background=list(fundo,folhas),sample=2000,fillHull=TRUE,plot=TRUE) ref.seg
Agora que temos os pixels referentes apenas às folhas podemos estimar várias medidas com a função measure_image
=measure_image(folhas.seg,noise = 1000) medidas
#numero de objetos e medias
medidas#> $ObjectNumber
#> [1] 29
#>
#> $measures
#> x y area perimeter radius.mean radius.sd radius.min radius.max
#> 1 251.868 88.446 4567 254 39.823 10.684 25.134 62.693
#> 2 64.941 79.789 3559 214 34.696 7.412 25.440 50.666
#> 3 408.108 90.071 4419 233 38.107 8.074 26.350 55.386
#> 4 179.808 86.242 3688 212 34.787 7.601 25.395 51.379
#> 5 332.538 91.887 4549 238 38.965 7.680 29.586 57.124
#> 6 498.418 102.705 5605 259 43.112 8.262 33.221 60.761
#> 7 120.817 85.232 1987 183 27.505 8.931 14.841 45.155
#> 8 430.162 221.732 4500 251 39.664 10.525 26.451 61.750
#> 9 122.380 219.562 3796 212 35.084 6.143 25.718 47.333
#> 10 207.317 227.966 4280 240 38.370 9.080 26.791 57.619
#> 11 508.656 223.668 3433 200 33.354 6.272 25.108 47.799
#> 12 353.010 213.297 2226 160 26.615 4.082 21.052 35.433
#> 13 283.609 222.918 2461 179 28.668 6.886 18.919 42.205
#> 14 511.920 330.953 3482 205 33.785 6.553 25.353 49.212
#> 15 364.322 339.679 4683 252 40.107 9.901 27.531 59.865
#> 16 129.257 341.505 4649 231 38.639 6.603 29.791 54.512
#> 17 434.397 340.397 3084 210 32.838 8.931 21.514 51.046
#> 18 292.483 338.564 2939 201 31.651 7.679 20.107 46.880
#> 19 223.234 354.427 4464 231 38.327 7.379 29.434 54.949
#> 20 498.497 470.512 5175 254 41.256 8.376 29.620 60.728
#> 21 308.735 487.152 4513 228 38.261 6.636 29.736 54.803
#> 22 84.061 480.409 2296 192 29.207 8.940 17.300 47.864
#> 23 226.418 487.005 3116 192 31.736 5.732 24.589 45.391
#> 24 371.519 483.660 2719 203 31.509 8.985 19.401 50.138
#> 25 148.156 483.419 2917 193 31.194 6.628 22.258 45.439
#> 26 433.929 481.277 2374 163 27.582 5.247 20.709 39.376
#> 27 509.498 597.416 4115 226 37.220 8.405 25.593 55.598
#> 28 436.581 608.967 4372 245 39.084 9.535 27.774 60.318
#> 29 351.604 607.292 4449 239 38.471 8.023 27.256 56.599
#> majoraxis eccentricity theta
#> 1 109.598 0.872 -1.477
#> 2 88.177 0.809 1.430
#> 3 99.875 0.822 -1.497
#> 4 92.015 0.829 -1.544
#> 5 98.303 0.796 1.396
#> 6 108.193 0.789 1.486
#> 7 76.490 0.895 -1.436
#> 8 107.569 0.866 1.565
#> 9 87.363 0.769 1.406
#> 10 100.384 0.838 -1.376
#> 11 84.932 0.792 1.525
#> 12 65.329 0.746 1.368
#> 13 77.573 0.852 1.427
#> 14 86.261 0.799 -1.423
#> 15 106.803 0.850 1.458
#> 16 97.121 0.775 1.317
#> 17 90.589 0.876 1.519
#> 18 83.417 0.839 1.416
#> 19 96.746 0.791 -1.547
#> 20 106.967 0.815 1.560
#> 21 95.371 0.769 1.525
#> 22 79.470 0.879 1.509
#> 23 80.281 0.785 1.387
#> 24 82.500 0.851 -1.569
#> 25 80.015 0.811 1.301
#> 26 70.312 0.788 -1.552
#> 27 97.595 0.832 1.322
#> 28 102.411 0.842 1.499
#> 29 99.053 0.813 1.349
#>
#> 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
=measure_image(img = folhas.seg,noise =1000,id=ref.seg,length =8.5,width =5.5 ) medidasref
#numero de objetos e medias
medidasref#> $ObjectNumber
#> [1] 29
#>
#> $measures
#> x y area perimeter radius.mean radius.sd radius.min
#> 1 251.868 88.446 6.240348 357.3112 56.02049 15.029578 35.35693
#> 2 64.941 79.789 4.863017 301.0417 48.80815 10.426735 35.78739
#> 3 408.108 90.071 6.038120 327.7697 53.60653 11.357995 37.06752
#> 4 179.808 86.242 5.039282 298.2282 48.93616 10.692608 35.72409
#> 5 332.538 91.887 6.215752 334.8034 54.81351 10.803740 41.61972
#> 6 498.418 102.705 7.658670 364.3449 60.64725 11.622461 46.73321
#> 7 120.817 85.232 2.715036 257.4329 38.69230 12.563568 20.87738
#> 8 430.162 221.732 6.148799 353.0910 55.79682 14.805907 37.20960
#> 9 122.380 219.562 5.186853 298.2282 49.35396 8.641585 36.17846
#> 10 207.317 227.966 5.848191 337.6169 53.97650 12.773172 37.68789
#> 11 508.656 223.668 4.690850 281.3474 46.92031 8.823054 35.32035
#> 12 353.010 213.297 3.041606 225.0779 37.44031 5.742300 29.61463
#> 13 283.609 222.918 3.362710 251.8059 40.32834 9.686791 26.61406
#> 14 511.920 330.953 4.757804 288.3811 47.52661 9.218348 35.66500
#> 15 364.322 339.679 6.398850 354.4977 56.42000 13.928103 38.72888
#> 16 129.257 341.505 6.352392 324.9562 54.35491 9.288684 41.90810
#> 17 434.397 340.397 4.213977 295.4148 46.19443 12.563568 30.26454
#> 18 292.483 338.564 4.015849 282.7541 44.52463 10.802333 28.28526
#> 19 223.234 354.427 6.099608 324.9562 53.91601 10.380312 41.40590
#> 20 498.497 470.512 7.071119 357.3112 58.03634 11.782829 41.66755
#> 21 308.735 487.152 6.166562 320.7360 53.82316 9.335107 41.83073
#> 22 84.061 480.409 3.137254 270.0935 41.08657 12.576229 24.33655
#> 23 226.418 487.005 4.257702 270.0935 44.64421 8.063417 34.59026
#> 24 371.519 483.660 3.715241 285.5676 44.32488 12.639532 27.29210
#> 25 148.156 483.419 3.985788 271.5002 43.88175 9.323853 31.31115
#> 26 433.929 481.277 3.243833 229.2981 38.80062 7.381149 29.13212
#> 27 509.498 597.416 5.622735 317.9226 52.35875 11.823625 36.00262
#> 28 436.581 608.967 5.973900 344.6506 54.98091 13.413237 39.07071
#> 29 351.604 607.292 6.079112 336.2101 54.11858 11.286251 38.34202
#> radius.max majoraxis eccentricity theta
#> 1 88.19256 154.17556 0.872 -1.477
#> 2 71.27374 124.04185 0.809 1.430
#> 3 77.91354 140.49786 0.822 -1.497
#> 4 72.27674 129.44091 0.829 -1.544
#> 5 80.35844 138.28647 0.796 1.396
#> 6 85.47475 152.19910 0.789 1.486
#> 7 63.52121 107.60131 0.895 -1.436
#> 8 86.86601 151.32129 0.866 1.565
#> 9 66.58508 122.89676 0.769 1.406
#> 10 81.05478 141.21389 0.838 -1.376
#> 11 67.24062 119.47699 0.792 1.525
#> 12 49.84491 91.90072 0.746 1.368
#> 13 59.37134 109.12481 0.852 1.427
#> 14 69.22834 121.34654 0.799 -1.423
#> 15 84.21431 150.24373 0.850 1.458
#> 16 76.68405 136.62370 0.775 1.317
#> 17 71.80830 127.43490 0.876 1.519
#> 18 65.94783 117.34578 0.839 1.416
#> 19 77.29879 136.09618 0.791 -1.547
#> 20 85.42832 150.47444 0.815 1.560
#> 21 77.09341 134.16191 0.769 1.525
#> 22 67.33206 111.79339 0.879 1.509
#> 23 63.85320 112.93425 0.785 1.387
#> 24 70.53098 116.05580 0.851 -1.569
#> 25 63.92072 112.56006 0.811 1.301
#> 26 55.39168 98.91049 0.788 -1.552
#> 27 78.21176 137.29050 0.832 1.322
#> 28 84.85156 144.06534 0.842 1.499
#> 29 79.61991 139.34152 0.813 1.349
#>
#> 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)