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.897 88.328 4554 253 39.809 10.702 25.103 62.006
#> 2 64.939 79.757 3558 213 34.701 7.461 25.470 50.499
#> 3 408.121 89.991 4420 235 38.141 8.071 26.487 55.336
#> 4 179.866 86.112 3680 213 34.811 7.648 25.228 51.134
#> 5 332.540 91.828 4548 239 39.016 7.716 29.544 56.913
#> 6 498.495 102.667 5615 260 43.206 8.323 33.561 61.158
#> 7 120.858 85.121 1977 183 27.482 8.946 14.812 45.157
#> 8 430.212 221.526 4488 250 39.552 10.411 26.689 61.989
#> 9 122.433 219.584 3791 210 34.980 6.074 25.697 47.326
#> 10 207.351 227.957 4277 239 38.355 9.113 26.842 57.478
#> 11 508.683 223.667 3434 202 33.436 6.316 25.021 47.420
#> 12 353.072 213.224 2236 159 26.649 4.076 21.005 35.291
#> 13 283.652 222.847 2462 180 28.699 6.900 19.088 42.387
#> 14 511.942 330.898 3480 204 33.766 6.580 25.281 50.178
#> 15 364.384 339.525 4689 251 40.065 9.807 27.762 60.432
#> 16 129.312 341.470 4661 231 38.697 6.540 29.550 54.266
#> 17 434.429 340.292 3082 211 32.816 8.828 21.351 52.041
#> 18 292.575 338.454 2954 201 31.705 7.651 20.545 46.860
#> 19 223.282 354.376 4476 233 38.429 7.357 29.662 55.347
#> 20 498.564 470.479 5176 254 41.263 8.363 29.668 60.729
#> 21 308.845 487.052 4526 232 38.302 6.659 29.929 54.330
#> 22 84.068 480.243 2293 192 29.216 8.941 17.324 47.863
#> 23 226.475 486.956 3126 194 31.793 5.686 24.353 45.078
#> 24 371.551 483.578 2716 203 31.503 8.999 19.100 50.140
#> 25 148.229 483.329 2921 194 31.250 6.662 22.220 45.265
#> 26 433.951 481.200 2378 166 27.675 5.237 20.738 39.585
#> 27 509.489 597.335 4116 226 37.229 8.391 25.696 54.889
#> 28 436.609 608.874 4376 245 39.180 9.565 27.824 60.417
#> 29 351.688 607.200 4460 239 38.511 8.002 27.221 56.576
#> majoraxis eccentricity theta
#> 1 109.344 0.872 -1.477
#> 2 88.174 0.809 1.431
#> 3 99.968 0.823 -1.496
#> 4 91.923 0.830 -1.543
#> 5 98.276 0.795 1.397
#> 6 108.236 0.788 1.487
#> 7 76.209 0.895 -1.435
#> 8 107.134 0.864 1.565
#> 9 87.204 0.767 1.407
#> 10 100.345 0.838 -1.374
#> 11 85.095 0.793 1.525
#> 12 65.356 0.744 1.369
#> 13 77.560 0.852 1.427
#> 14 86.258 0.799 -1.424
#> 15 106.686 0.849 1.459
#> 16 97.033 0.773 1.320
#> 17 90.414 0.875 1.522
#> 18 83.390 0.837 1.417
#> 19 96.847 0.790 -1.544
#> 20 106.902 0.814 1.560
#> 21 95.529 0.769 1.528
#> 22 79.031 0.877 1.508
#> 23 80.309 0.783 1.390
#> 24 82.394 0.851 -1.569
#> 25 79.999 0.811 1.304
#> 26 70.378 0.788 -1.553
#> 27 97.426 0.831 1.323
#> 28 102.280 0.841 1.500
#> 29 98.934 0.811 1.351
#>
#> 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.897 88.328 6.212235 355.8003 55.98441 15.050495 35.30299
#> 2 64.939 79.757 4.853564 299.5473 48.80090 10.492594 35.81911
#> 3 408.121 89.991 6.029442 330.4865 53.63866 11.350453 37.24934
#> 4 179.866 86.112 5.019988 299.5473 48.95559 10.755577 35.47878
#> 5 332.540 91.828 6.204050 336.1118 54.86919 10.851207 41.54848
#> 6 498.495 102.667 7.659574 365.6446 60.76170 11.704847 47.19769
#> 7 120.858 85.121 2.696879 257.3576 38.64864 12.580987 20.83049
#> 8 430.212 221.526 6.122202 351.5814 55.62298 14.641254 37.53342
#> 9 122.433 219.584 5.171406 295.3283 49.19326 8.542021 36.13834
#> 10 207.351 227.957 5.834372 336.1118 53.93961 12.815844 37.74859
#> 11 508.683 223.667 4.684412 284.0777 47.02190 8.882351 35.18767
#> 12 353.072 213.224 3.050188 223.6057 37.47717 5.732182 29.53987
#> 13 283.652 222.847 3.358481 253.1386 40.36013 9.703645 26.84394
#> 14 511.942 330.898 4.747162 286.8904 47.48598 9.253621 35.55331
#> 15 364.384 339.525 6.396392 352.9877 56.34443 13.791833 39.04241
#> 16 129.312 341.470 6.358196 324.8612 54.42057 9.197368 41.55692
#> 17 434.429 340.292 4.204240 296.7347 46.14998 12.415041 30.02645
#> 18 292.575 338.454 4.029631 282.6714 44.58755 10.759796 28.89296
#> 19 223.282 354.376 6.105833 327.6738 54.04368 10.346336 41.71442
#> 20 498.564 470.479 7.060722 357.2067 58.02921 11.761100 41.72286
#> 21 308.845 487.052 6.174039 326.2675 53.86508 9.364721 42.08991
#> 22 84.068 480.243 3.127943 270.0145 41.08720 12.573956 24.36318
#> 23 226.475 486.956 4.264261 272.8271 44.71130 7.996366 34.24824
#> 24 371.551 483.578 3.704969 285.4841 44.30347 12.655523 26.86082
#> 25 148.229 483.329 3.984615 272.8271 43.94767 9.368940 31.24855
#> 26 433.951 481.200 3.243894 233.4500 38.92006 7.364926 29.16438
#> 27 509.489 597.335 5.614747 317.8295 52.35609 11.800477 36.13694
#> 28 436.609 608.874 5.969420 344.5497 55.09983 13.451503 39.12960
#> 29 351.688 607.200 6.084007 336.1118 54.15900 11.253416 38.28158
#> radius.max majoraxis eccentricity theta
#> 1 87.20061 153.77325 0.872 -1.477
#> 2 71.01803 124.00134 0.809 1.431
#> 3 77.82042 140.58754 0.823 -1.496
#> 4 71.91104 129.27365 0.830 -1.543
#> 5 80.03820 138.20804 0.795 1.397
#> 6 86.00805 152.21504 0.788 1.487
#> 7 63.50544 107.17465 0.895 -1.435
#> 8 87.17671 150.66527 0.864 1.565
#> 9 66.55576 122.63720 0.767 1.407
#> 10 80.83277 141.11772 0.838 -1.374
#> 11 66.68795 119.67126 0.793 1.525
#> 12 49.63063 91.91180 0.744 1.369
#> 13 59.60992 109.07460 0.852 1.427
#> 14 70.56660 121.30682 0.799 -1.424
#> 15 84.98706 150.03523 0.849 1.459
#> 16 76.31566 136.45997 0.773 1.320
#> 17 73.18658 127.15151 0.875 1.522
#> 18 65.90041 117.27348 0.837 1.417
#> 19 77.83589 136.19840 0.790 -1.544
#> 20 85.40474 150.33900 0.814 1.560
#> 21 76.40566 134.34486 0.769 1.528
#> 22 67.31095 111.14330 0.877 1.508
#> 23 63.39434 112.94059 0.783 1.390
#> 24 70.51316 115.87278 0.851 -1.569
#> 25 63.65732 112.50463 0.811 1.304
#> 26 55.66939 98.97437 0.788 -1.553
#> 27 77.19180 137.01266 0.831 1.323
#> 28 84.96596 143.83896 0.841 1.500
#> 29 79.56427 139.13340 0.811 1.351
#>
#> 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)