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.957 88.336 4584 253 39.814 10.669 25.171 62.495
#> 2 64.956 79.761 3571 214 34.815 7.538 25.427 50.271
#> 3 408.175 89.951 4444 232 38.167 8.082 26.354 55.249
#> 4 179.873 86.130 3701 215 34.958 7.646 25.373 51.134
#> 5 332.652 91.806 4579 239 39.046 7.636 29.798 57.218
#> 6 498.493 102.640 5628 261 43.254 8.292 33.470 60.988
#> 7 120.878 85.142 1992 184 27.617 9.024 14.712 44.917
#> 8 430.272 221.621 4531 251 39.753 10.528 26.759 61.774
#> 9 122.488 219.443 3827 214 35.177 6.073 25.510 47.793
#> 10 207.394 227.900 4298 241 38.472 9.061 27.142 57.835
#> 11 508.706 223.656 3450 202 33.484 6.313 24.987 47.487
#> 12 353.085 213.239 2249 159 26.718 4.085 21.019 36.197
#> 13 283.725 222.870 2484 181 28.839 6.890 19.099 42.606
#> 14 511.981 330.890 3498 205 33.859 6.573 25.292 50.375
#> 15 364.459 339.596 4720 254 40.253 9.852 27.823 59.823
#> 16 129.367 341.459 4692 232 38.832 6.506 29.456 54.091
#> 17 434.551 340.251 3116 212 32.975 8.864 21.391 51.741
#> 18 292.701 338.480 2988 200 31.867 7.540 20.878 46.952
#> 19 223.471 354.185 4537 235 38.589 7.323 30.090 55.287
#> 20 498.556 470.469 5200 254 41.334 8.341 29.660 60.736
#> 21 309.024 487.016 4577 231 38.426 6.548 30.383 54.570
#> 22 84.107 480.280 2314 192 29.272 8.931 17.352 47.873
#> 23 226.503 486.926 3148 195 31.892 5.635 24.287 45.272
#> 24 371.616 483.638 2739 204 31.502 9.008 19.240 50.125
#> 25 148.391 483.273 2954 195 31.369 6.517 22.406 45.693
#> 26 434.001 481.184 2394 168 27.800 5.201 21.007 39.957
#> 27 509.496 597.334 4128 227 37.324 8.402 25.701 55.824
#> 28 436.665 608.812 4404 246 39.286 9.514 27.843 61.008
#> 29 351.793 607.149 4498 238 38.588 8.004 27.117 56.360
#> majoraxis eccentricity theta
#> 1 109.631 0.871 -1.477
#> 2 88.391 0.809 1.431
#> 3 100.125 0.822 -1.495
#> 4 92.130 0.829 -1.543
#> 5 98.374 0.793 1.399
#> 6 108.315 0.788 1.488
#> 7 76.489 0.895 -1.433
#> 8 107.847 0.865 1.567
#> 9 87.468 0.765 1.410
#> 10 100.504 0.838 -1.372
#> 11 85.243 0.793 1.527
#> 12 65.558 0.744 1.370
#> 13 77.858 0.851 1.428
#> 14 86.453 0.799 -1.421
#> 15 106.908 0.848 1.460
#> 16 97.146 0.771 1.324
#> 17 90.746 0.874 1.524
#> 18 83.283 0.832 1.415
#> 19 97.172 0.787 -1.539
#> 20 107.048 0.813 1.559
#> 21 95.673 0.764 1.530
#> 22 79.515 0.878 1.509
#> 23 80.374 0.781 1.388
#> 24 82.918 0.852 -1.565
#> 25 80.053 0.806 1.308
#> 26 70.569 0.787 -1.550
#> 27 97.616 0.831 1.323
#> 28 102.523 0.841 1.503
#> 29 99.188 0.809 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
=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.957 88.336 6.261746 355.6610 55.96951 14.998209 35.38475
#> 2 64.956 79.761 4.877988 300.8358 48.94204 10.596729 35.74463
#> 3 408.175 89.951 6.070506 326.1397 53.65420 11.361470 37.04778
#> 4 179.873 86.130 5.055568 302.2415 49.14307 10.748553 35.66872
#> 5 332.652 91.806 6.254916 335.9801 54.88988 10.734495 41.88927
#> 6 498.493 102.640 7.687851 366.9072 60.80537 11.656683 47.05128
#> 7 120.878 85.142 2.721073 258.6625 38.82328 12.685710 20.68176
#> 8 430.272 221.621 6.189348 352.8494 55.88376 14.799995 37.61712
#> 9 122.488 219.443 5.227684 300.8358 49.45093 8.537269 35.86131
#> 10 207.394 227.900 5.871070 338.7917 54.08296 12.737724 38.15553
#> 11 508.706 223.656 4.712702 283.9665 47.07096 8.874655 35.12609
#> 12 353.085 213.239 3.072135 223.5182 37.55949 5.742589 29.54798
#> 13 283.725 222.870 3.393145 254.4452 40.54113 9.685787 26.84889
#> 14 511.981 330.890 4.778270 288.1838 47.59812 9.240156 35.55485
#> 15 364.459 339.596 6.447522 357.0667 56.58664 13.849691 39.11287
#> 16 129.367 341.459 6.409274 326.1397 54.58904 9.145970 41.40850
#> 17 434.551 340.251 4.256457 298.0242 46.35542 12.460786 30.07092
#> 18 292.701 338.480 4.081609 281.1549 44.79782 10.599540 29.34976
#> 19 223.471 354.185 6.197544 330.3570 54.24744 10.294487 42.29976
#> 20 498.556 470.469 7.103202 357.0667 58.10629 11.725566 41.69527
#> 21 309.024 487.016 6.252184 324.7339 54.01829 9.205012 42.71165
#> 22 84.107 480.280 3.160925 269.9087 41.14983 12.554973 24.39300
#> 23 226.503 486.926 4.300169 274.1260 44.83296 7.921540 34.14205
#> 24 371.616 483.638 3.741475 286.7780 44.28471 12.663218 27.04710
#> 25 148.391 483.273 4.035165 274.1260 44.09774 9.161433 31.49779
#> 26 434.001 481.184 3.270205 236.1701 39.08053 7.311434 29.53111
#> 27 509.496 597.334 5.638850 319.1108 52.46913 11.811318 36.12981
#> 28 436.665 608.812 6.015866 345.8206 55.22726 13.374540 39.14098
#> 29 351.793 607.149 6.144270 334.5744 54.24603 11.251820 38.12039
#> radius.max majoraxis eccentricity theta
#> 1 87.85388 154.11648 0.871 -1.477
#> 2 70.66969 124.25782 0.809 1.431
#> 3 77.66764 140.75318 0.822 -1.495
#> 4 71.88288 129.51401 0.829 -1.543
#> 5 80.43561 138.29167 0.793 1.399
#> 6 85.73538 152.26648 0.788 1.488
#> 7 63.14318 107.52629 0.895 -1.433
#> 8 86.84032 151.60857 0.865 1.567
#> 9 67.18619 122.96029 0.765 1.410
#> 10 81.30297 141.28597 0.838 -1.372
#> 11 66.75602 119.83244 0.793 1.527
#> 12 50.88482 92.15977 0.744 1.370
#> 13 59.89443 109.45080 0.851 1.428
#> 14 70.81590 121.53343 0.799 -1.421
#> 15 84.09765 150.28855 0.848 1.460
#> 16 76.03975 136.56538 0.771 1.324
#> 17 72.73618 127.56842 0.874 1.524
#> 18 66.00393 117.07713 0.832 1.415
#> 19 77.72106 136.60193 0.787 -1.539
#> 20 85.38113 150.48536 0.813 1.559
#> 21 76.71312 134.49467 0.764 1.530
#> 22 67.29865 111.78017 0.878 1.509
#> 23 63.64223 112.98773 0.781 1.388
#> 24 70.46445 116.56402 0.852 -1.565
#> 25 64.23406 112.53647 0.806 1.308
#> 26 56.17054 99.20411 0.787 -1.550
#> 27 78.47596 137.22609 0.831 1.323
#> 28 85.76350 144.12423 0.841 1.503
#> 29 79.22946 139.43597 0.809 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)