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.915 88.297 4532 253 39.730 10.697 24.640 61.968
#> 2 64.913 79.666 3544 214 34.668 7.432 25.426 50.664
#> 3 408.136 89.978 4405 234 38.106 8.094 26.424 55.183
#> 4 179.859 86.098 3675 213 34.792 7.656 25.245 51.145
#> 5 332.517 91.788 4534 240 38.970 7.715 29.653 57.018
#> 6 498.538 102.647 5594 260 43.148 8.344 33.374 60.668
#> 7 120.783 85.113 1961 183 27.424 8.970 14.854 45.148
#> 8 430.207 221.427 4468 249 39.487 10.426 26.533 62.175
#> 9 122.397 219.572 3768 211 34.899 6.115 25.543 47.921
#> 10 207.348 227.912 4263 241 38.353 9.149 26.619 57.122
#> 11 508.700 223.667 3421 201 33.344 6.334 25.051 48.375
#> 12 353.060 213.219 2224 160 26.585 4.062 21.114 35.413
#> 13 283.673 222.893 2449 179 28.596 6.920 18.856 41.871
#> 14 511.905 330.903 3468 203 33.675 6.534 25.253 49.153
#> 15 364.350 339.461 4680 251 40.045 9.822 27.379 60.437
#> 16 129.237 341.460 4638 233 38.729 6.715 29.569 55.362
#> 17 434.447 340.264 3069 210 32.762 8.872 21.401 51.871
#> 18 292.526 338.406 2937 201 31.633 7.697 20.114 46.883
#> 19 223.246 354.380 4463 232 38.360 7.370 29.757 55.143
#> 20 498.544 470.460 5161 257 41.264 8.344 29.751 60.889
#> 21 308.812 487.052 4512 236 38.254 6.645 30.092 54.209
#> 22 84.084 480.243 2273 192 29.151 8.982 17.209 47.863
#> 23 226.472 486.972 3113 195 31.724 5.695 24.242 44.971
#> 24 371.505 483.517 2685 203 31.401 9.041 18.944 50.119
#> 25 148.177 483.291 2898 194 31.184 6.695 22.268 45.322
#> 26 433.938 481.193 2367 167 27.644 5.236 20.848 39.738
#> 27 509.468 597.346 4106 226 37.195 8.408 25.601 54.888
#> 28 436.606 608.877 4358 247 39.193 9.589 27.502 60.260
#> 29 351.672 607.220 4450 239 38.475 8.012 27.225 56.573
#> majoraxis eccentricity theta
#> 1 109.102 0.872 -1.478
#> 2 87.879 0.808 1.432
#> 3 99.856 0.823 -1.494
#> 4 91.913 0.830 -1.544
#> 5 98.111 0.795 1.397
#> 6 108.086 0.789 1.487
#> 7 76.130 0.896 -1.437
#> 8 106.687 0.863 1.566
#> 9 86.977 0.768 1.406
#> 10 100.196 0.838 -1.376
#> 11 84.859 0.793 1.523
#> 12 65.205 0.744 1.371
#> 13 77.472 0.853 1.427
#> 14 86.001 0.798 -1.426
#> 15 106.539 0.849 1.460
#> 16 96.905 0.774 1.320
#> 17 90.319 0.876 1.523
#> 18 83.369 0.839 1.420
#> 19 96.700 0.790 -1.546
#> 20 106.806 0.814 1.559
#> 21 95.436 0.770 1.529
#> 22 78.905 0.879 1.509
#> 23 80.186 0.784 1.390
#> 24 82.038 0.851 -1.570
#> 25 79.829 0.812 1.303
#> 26 70.338 0.789 -1.554
#> 27 97.415 0.831 1.323
#> 28 101.855 0.840 1.499
#> 29 98.917 0.811 1.350
#>
#> 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.915 88.297 6.181503 355.7701 55.86856 15.042184 34.64891
#> 2 64.913 79.666 4.833902 300.9280 48.75034 10.450922 35.75419
#> 3 408.136 89.978 6.008279 329.0522 53.58488 11.381830 37.15758
#> 4 179.859 86.098 5.012582 299.5218 48.92471 10.765912 35.49967
#> 5 332.517 91.788 6.184230 337.4894 54.79984 10.848878 41.69822
#> 6 498.538 102.647 7.630036 365.6135 60.67497 11.733381 46.93071
#> 7 120.783 85.113 2.674741 257.3357 38.56379 12.613666 20.88778
#> 8 430.207 221.427 6.094209 350.1452 55.52685 14.661102 37.31086
#> 9 122.397 219.572 5.139431 296.7094 49.07518 8.598949 35.91872
#> 10 207.348 227.912 5.814595 338.8956 53.93221 12.865377 37.43179
#> 11 508.700 223.667 4.666134 282.6474 46.88853 8.906908 35.22686
#> 12 353.060 213.219 3.033465 224.9929 37.38398 5.712008 29.69063
#> 13 283.673 222.893 3.340357 251.7108 40.21186 9.730944 26.51542
#> 14 511.905 330.903 4.730241 285.4598 47.35398 9.188149 35.51092
#> 15 364.350 339.461 6.383370 352.9577 56.31151 13.811754 38.50051
#> 16 129.237 341.460 6.326083 327.6460 54.46095 9.442672 41.58010
#> 17 434.447 340.264 4.186018 295.3032 46.07011 12.475858 30.09421
#> 18 292.526 338.406 4.005974 282.6474 44.48251 10.823566 28.28442
#> 19 223.246 354.380 6.087389 326.2397 53.94206 10.363737 41.84447
#> 20 498.544 470.460 7.039438 361.3949 58.02568 11.733381 41.83603
#> 21 308.812 487.052 6.154223 331.8646 53.79300 9.344238 42.31555
#> 22 84.084 480.243 3.100299 269.9915 40.99231 12.630541 24.19940
#> 23 226.472 486.972 4.246032 274.2101 44.61047 8.008342 34.08924
#> 24 371.505 483.517 3.662254 285.4598 44.15627 12.713507 26.63916
#> 25 148.177 483.291 3.952779 272.8039 43.85112 9.414548 31.31339
#> 26 433.938 481.193 3.228512 234.8364 38.87315 7.362894 29.31658
#> 27 509.468 597.346 5.600452 317.8025 52.30383 11.823378 36.00028
#> 28 436.606 608.877 5.944172 347.3328 55.11342 13.484108 38.67347
#> 29 351.672 607.220 6.069657 336.0832 54.10377 11.266521 38.28395
#> radius.max majoraxis eccentricity theta
#> 1 87.13976 153.41987 0.872 -1.478
#> 2 71.24401 123.57596 0.808 1.432
#> 3 77.59866 140.41809 0.823 -1.494
#> 4 71.92040 129.24860 0.830 -1.544
#> 5 80.17904 137.96426 0.795 1.397
#> 6 85.31169 151.99116 0.789 1.487
#> 7 63.48738 107.05445 0.896 -1.437
#> 8 87.43085 150.02388 0.863 1.566
#> 9 67.38679 122.30756 0.768 1.406
#> 10 80.32529 140.89620 0.838 -1.376
#> 11 68.02521 119.32922 0.793 1.523
#> 12 49.79797 91.69165 0.744 1.371
#> 13 58.87924 108.94158 0.853 1.427
#> 14 69.11923 120.93511 0.798 -1.426
#> 15 84.98686 149.81576 0.849 1.460
#> 16 77.85037 136.26837 0.774 1.320
#> 17 72.94130 127.00710 0.876 1.523
#> 18 65.92715 117.23397 0.839 1.420
#> 19 77.54241 135.98010 0.790 -1.546
#> 20 85.62247 150.19122 0.814 1.559
#> 21 76.22901 134.20266 0.770 1.529
#> 22 67.30523 110.95667 0.879 1.509
#> 23 63.23848 112.75802 0.784 1.390
#> 24 70.47763 115.36231 0.851 -1.570
#> 25 63.73206 112.25600 0.812 1.303
#> 26 55.87981 98.90970 0.789 -1.554
#> 27 77.18382 136.98554 0.831 1.323
#> 28 84.73796 143.22909 0.840 1.499
#> 29 79.55328 139.09766 0.811 1.350
#>
#> 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)